收藏 分享(赏)

串行外设接口模块(SPI).doc

上传人:tkhy51908 文档编号:6837058 上传时间:2019-04-23 格式:DOC 页数:3 大小:31KB
下载 相关 举报
串行外设接口模块(SPI).doc_第1页
第1页 / 共3页
串行外设接口模块(SPI).doc_第2页
第2页 / 共3页
串行外设接口模块(SPI).doc_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

1、199第 9 章 串行外设接口模块(SPI)9.4.2 软件设计2 MAX5121 与 DSP 的 SPI 软件实现源程序代码:(1)所需的复位和中断向量定义文件“vectors.asm”/ 该文件利用汇编语言代码定义了复位和中断向量 .title “vectors.asm“.ref _c_int0,_nothing.sect “.vectors“reset: b _c_int0int1: b _nothingint2: b _nothingint3: b _nothingint4: b _nothingint5: b _nothingint6: b _nothing(2)主程序/该程序利用

2、LF2407 的 SPI 模块向 MAX5121 芯片发送数据用于 D/A 转换,MAX5121 的模拟输出端输出一个三角波 /用 C 语言编写 #include “register.h“int GPR3;int flag1; int flag;/系统初始化子程序 int initial()asm(“ setc INTM“); /屏蔽中断 WSGR=0X00; /禁止所有的等待状态 asm(“ CLRC SXM“);asm(“ CLRC OVM“);asm(“ CLRC CNF“); /B0 被配置为数据空间 *SCSR1=0X81FE; /CLKIN=6M,CLKOUT=24M ,并且使能到

3、 SPI 模块的时钟 *WDCR=0X0E8; /不使能看门狗 200/SPI 模块初始化子程序 int SPIINITIAL()*SPICCR=0X004F; /16 char bits ,在 SPICLK 的下降沿发送数据,与 MAX5121 在/上升沿接收数据配合 *SPICTL=0X0006; /使能主动模式,一般的时钟方式,使能 TALK *SPIBRR=0X0007; /SPI 的波特率为 3M,CLKOUT=24M *MCRB=0X003C; /设置通用引脚为 SPI 功能的引脚 *MCRC=*MCRC&0X0FFFE; /设置 IOPE0 脚为通用引脚 *SPICCR=*SPI

4、CCR|0X0080; /使 SPI 退出复位状态 /SPI 发送数据子程序,需要发送的数据存放在 GPR3 寄存器中 int SPITRANS()*PEDATDIR=(*PEDATDIR|0X0100)&0X0FFFE;/设置 IOPE0 为输出,且输出低电平, /以选中 MAX5121 芯片 *SPITXBUF=GPR3; /向 SPI 的发送缓冲器写一个发送数据 while(1)flag=*SPISTS&0x40; /flag=SPI 的中断标志 if(flag=0x40) break; /如果 SPI 的中断标志的中断标志为 1,则证 /明 SPI 已经发送成功,则停止等待 *SPIR

5、XBUF=*SPIRXBUF; /虚读 SPIRXBUF 寄存器,以清除 SPI 中断标志 *PEDATDIR=*PEDATDIR|0x01; /发送完毕,则 IOPE0 输出高,使发送的数据输 /出到 MAX5121 的输入寄存器和 DAC 寄存器中 /主程序 main()initial(); /系统初始化 SPIINITIAL(); /SPI 初始化 GPR3=0x4000; /根据 MAX5121 的格式写一个数据,使其输出的模 /拟量为 0,具体的数据格式请参照表 9.5 flag1=0x00; /三角波上升沿、下降沿标志,当 flag1=0 时,为上 /升沿,当 flag1=1 时,

6、为下降沿 while(1)201if(flag1=0x00) GPR3=GPR3+2; /因为数据从倒数第 2 位开始,故要使数据加 1,则 /需要在实际的寄存器中加 2,此操作对应三角波的 /上升沿 else GPR3=GPR3-2; /因为数据从倒数第 2 位开始,故要使数据减 1,则 /需要在实际的寄存器中减 2,此操作对应三角波的 /下降沿 if(GPR3=0x5FFE) flag1=0x01; /若需要转换的数据到 FFFH,则开始下降沿 if(GPR3=0x4000) flag1=0x00; /若需要转换的数据到 00H,则开始上升沿 SPITRANS(); /调用 SPI 发送数据子程序 /当发生干扰中断时,执行此中断服务程序 void interrupt nothing()return;

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 企业管理 > 管理学资料

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报