×

FIFO的操作

消耗积分:5 | 格式:rar | 大小:555 | 2009-09-29

王芳

分享资料个

系统在上电复位时,SPI工作在标准SPI模式,禁止FIFO功能。FIFO的寄存器SPIFFTX、SPIFFRX和SPIFFCT不起作用。通过将SPIFFTX寄存器中的SPIFFEN的位置为1,使能FIFO模式。SPIRST能在操作的任一阶段复位FIFO模式。
  FIFO模式有2个中断,一个用于发送FIFO、SPITXINT,另一个用于接收FIFO、SPIINT/SPIRXINT。对于SPI FIFO接收来说,产生接收错误或者接收FIFO溢出都会产生SPIINT/SPIRXINT中断。对于标准SPI的发送和接收,唯一的SPIINT将被禁止且这个中断将服务于SPI接收FIFO中断。发送和接收都能产生CPU中断。一旦发送FIFO状态位TXFFST(位12~8)和中断触发级别位TXFFIL(位4~0)匹配,就会触发中断。这给SPI的发送和接收提供了可编程的中断触发器。接收FIFO的触发级别位的缺省值是0xll111,发送FIFO的触发级别位的缺省值是0x00000。
  发送和接收缓冲器使用2个16×16 FIFO,标准SPI功能的一个字的发送缓冲器作为在发送FIFO和移位寄存器间的发送缓冲器。移位寄存器的最后一位被移出后,这个一字发送缓冲器将从发送∏FO装载。FIFO中的字发送到发送移位寄存器的速率是可编程的。SPIFFCT寄存器位FFTXDLY7~FFTXDILYO定义了在两个字发送间的延时,这个延时以SPI串行时钟周期的数量来定义。该8位寄存器可以定义最小0个串行时钟周期的延迟和最大256个串行时钟周期的延时。0时钟周期延时的SPI模块能将FIFO字一位紧接一位的移位,连续发送数据。256个时钟周期延迟的SPI模块能在最大延迟模式下发送数据,每个FIFO字的移位间隔256个SPI时钟周期的延时。可编程延时的特点,使得SPI接口可以方便地同许多速率较慢的SPI外设如EEPROM、ADO、DAC等直接连接。
  发送和接收FIFO都有状态位TXFFST或RXFFST(位12~0),状态位定义任何时刻在FIFO中可获得的字的数量。当发送FIFO复位位TXFIFO和接收复位位RXFIFO被设置为1时,FIFO指针指向0。一旦这两个复位位被清除为0,则FIFO将重新开始操作。
SPI数据传输从设备模式
  在从模式中(MASTER/SLAVE=0),SPISOMI引脚为数据输出引脚,SPISIMO引脚为数据输入引脚。SPICLK引脚为串行移位时钟的输入,该时钟由网络主控制器提供,传输率也由该时钟决定。SPIC LK输入频率不应超过CLKOUT频率的四分之一。
  当从SPI设各检测到来自网络主控制器的SPICLK信号的合适时钟边沿时,已经写人SPI-DAT或SPITXBUF寄存器的数据被发送到网络上。要发送字符的所有位移出SPIDAT寄存器后,写人到SPITXBUF寄存器的数据将会传送到SPIDAT寄存器。如果向SPITXBUF写人数据时没有数据发送,数据将立即传送到SPIDAT寄存器。为了能够接收数据,从SPI设备等待网络主控制器发送SPICLK信号,然后将SPISIMO引脚上的数据移入到SPIDAT寄存器中。如果从控制器同时也发送数据,而且SPITXBUF还没有装载数据,则必须在SPICLK开始之前把数据写人到SPITXBUF或SPIDAT寄存器。
  当TALK位(SPICTL.1)清零,数据发送被禁止,输出引脚(SPISOMI)处于高阻状态。如果在发送数据期间将TALK位(SPICTL.1)清零,即使SPISOMI引脚被强制置成高阻状态也要完成当前的字符传输。这样可以保证SPI设各能够正确地接收数据。TALK位允许在网络上有许多个从SPI设备,但在某一时刻只能有1个从设各来驱动SPISOMI。
  SPISTE引脚用作从动选择引脚时,当该引脚为低电平时,允许从SPI设各向串行总线发送数据;当该引脚为高电平时,从SPI串行移位寄存器停止工作,串行输出引脚被置成高阻状态。在同一网络上可以连接多个从SPI设各,但同一时刻只能有1个设各起作用。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

评论(0)
发评论

下载排行榜

全部0条评论

快来发表一下你的评论吧 !