第章 F 时钟和控制系统.ppt

  1. 1、本文档共30页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第章 F 时钟和控制系统

2812的外设SPI Serial Peripheral Interface 中国计量学院 wang 异步传输(Asynchronous Transmission) 同步传输(Synchronous Transmission) 外设SPI的作用 SPI可以实现CPU同例如FLASH、EEPROM、LCD显示驱动器、网络控制器、AD转换器和DA转换器等外围设备之间的通信,也可以实现同其他CPU之间的通信。 SPI的环形总线结构 数据传输示例 具有的特点 具有4个外部引脚,如表2所示。可见TMS320F2812使用的是4线制的SPI。 具有的特点 有两种工作模式可以选择:主工作模式和从工作模式 波特率:125种可编程的波特率,能够使用的最小波特率受到I/O缓冲器最小速度的限制,这些缓冲器是使用在SPI引脚上的I/O缓冲器,而最高的波特率不能超过LSPCLK/4。 单次发送的数据字的长度为1~16位,可以通过寄存器设定。 具有的特点 接收和发送可以同步操作,也就是说可以实现全双工通信。当然,发送功能可以通过SPICTL寄存器的TALK位禁止或使能。 具有9个控制寄存器和3个数据寄存器。值得注意的是SPI所有的控制寄存器都是8位的,当寄存器被访问时,数据位于低8位,而高8位为0 ,因此把数据写入SPI这9个控制寄存器的高8位是无效的。3个数据寄存器SPIRXBUF、SPITXBUF和SPIDAT是16位的。 具有的特点 TMS320F2812的SPI具有增强功能,体现在具有两个16级的FIFO,一个用于发送数据,一个用于接收数据。发送数据的时候数据与数据之间的延时可以进行控制。 在非FIFO模式中发送和接收中断都使用SPIRXINT。在FIFO模式中,接收中断使用SPIRXINT,而发送中断使用的是SPITXINT SPI的波特率 SPI的波特率由寄存器SPIBRR来决定,计算公式如下: 当SPIBRR=0,1,2时: 当SPIBRR=3~127时: SPI的时钟 寄存器SPICCR的CLOCK POLARITY位和寄存器SPICTL的CLOCK PHASE位决定了SPI的时钟特性 两个参数不同取值的组合可以构成4种不同的时钟方案,每一种时钟方案都会对数据传输带来影响, SPI的时钟 当CLOCK POLARITY=0时,当SPICLK没有数据发送时,SPICLK处于低电平,这时候: 当CLOCK PHASE=0时,SPI在SPICLK信号的上升沿发送数据,在SPICLK信号的下降沿接收数据; 当CLOCK PHASE=1时,SPI在SPICLK信号上升沿的前半个周期和随后的下降沿发送数据,在SPICLK信号的上升沿接收数据 SPI的时钟 当CLOLCK PLARITY=1时,当SPICLK没有数据发送时,SPLCLK处于高电平,这时候: 当CLOCK PHASE=0时,SPI在SPICLK信号的下降沿发送数据,在SPICLK信号的上升沿接收数据; 当CLOCK PHASE=1时,SPI在SPICLK信号下降沿的前半周期和随后的上升沿发送数据,在SPICLK信号的上升沿接收数据。 SPI的中断 我们谈的中断是基于SPI工作于普通模式的。这时候,无论SPI是接收,还是发送,中断都是SPIRXINT,另外一个中断是接收时的溢出中断,用的还是SPIRXINT。 SPI的FIFO FIFO常见的两个参数是宽度和深度 发送FIFO中的数据发送到SPITXBUF中的速度是可以编程的, FIFO的中断有两个,一个是接收中断SPIRXINT,另一个是发送中断SPITXINT。我们以接收中断为例,FIFO的寄存器SPIFFRX中的RXFFST位用来统计接收FIFO中的数据字的个数,取值范围为0~16。同时,寄存器SPIFFRX中还有一个FIFO中断触发级位RXFFIL,这是根据你的需求预先设定好的,也就是定了个标准,当FIFO中的数据个数达到这个RXFFIL的时候,就会产生接收中断SPIRXINT,也就是在RXFFST大于等于RXFFIL的时候 void InitSpi(void) { // Initialize SPI-A: EALLOW; GpioMuxRegs.GPFMUX.all = 0x000F; EDIS; SpiaRegs.SPICCR.all = 0x000F;///进入初始状态,数据在上升沿输出,自测禁止,字符长度16位 SpiaRegs.SPICTL.all = 0x06; //主动模式,禁止中断 SpiaRegs.SPIBRR = 0x000E;//波特率 = LSPCLK/(SPIBRR+1)=15/(14+1)=1Mhz S

文档评论(0)

jyf123 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

版权声明书
用户编号:6153235235000003

1亿VIP精品文档

相关文档