串行外设接口模块(spi)

上传人:j****9 文档编号:45326199 上传时间:2018-06-15 格式:DOC 页数:3 大小:31KB
返回 下载 相关 举报
串行外设接口模块(spi)_第1页
第1页 / 共3页
串行外设接口模块(spi)_第2页
第2页 / 共3页
串行外设接口模块(spi)_第3页
第3页 / 共3页
亲,该文档总共3页,全部预览完了,如果喜欢就下载吧!
资源描述

《串行外设接口模块(spi)》由会员分享,可在线阅读,更多相关《串行外设接口模块(spi)(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)主程序/该程序利用 LF2407 的 SPI 模块

2、向 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 ,并且使能到 SPI 模块的时钟 *WDCR=0X

3、0E8;/不使能看门狗 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=*SPICCR|0X0080;/使 SPI 退出复位状态

4、/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 已经发送成功,则停止等待 *SPIRXBUF=*SPIRXBUF;/虚读 SPIRXBUF 寄

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

6、=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;

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号