本人在调试过程中,遇到的最大问题就是数据丢失,困扰多天。后来查明原因,因为开启SPI FIFO增强功能,不能根据SpiaRegs.SPISTS.bit.BUFFULL_FLAG来暂停发送数据。因为此时的TXBUF是从TX FIFO中得数据。程序中写入TXBUF,只是写入发送缓冲器即FIFO。根据先进先出原理,你源源不断的向TXBUF写数据,则FIFO里总是保存你最后写入的数据,而不会将SpiaRegs.SPISTS.bit.BUFFULL_FLAG位置一,所以会发现数据丢失。正确的方法应该判断SPI TX FIFO中的字的个数。如果发送FIFO里已经有16个字了,此时应该停止发送新数据,而等待SPI总线上主机的时钟将TXBUF里数据移出,FIFO数据自动装载一个字到TXBUF里,这时才能发送新数据。
本人在调试过程中,遇到的最大问题就是数据丢失,困扰多天。后来查明原因,因为开启SPI FIFO增强功能,不能根据SpiaRegs.SPISTS.bit.BUFFULL_FLAG来暂停发送数据。因为此时的TXBUF是从TX FIFO中得数据。程序中写入TXBUF,只是写入发送缓冲器即FIFO。根据先进先出原理,你源源不断的向TXBUF写数据,则FIFO里总是保存你最后写入的数据,而不会将SpiaRegs.SPISTS.bit.BUFFULL_FLAG位置一,所以会发现数据丢失。正确的方法应该判断SPI TX FIFO中的字的个数。如果发送FIFO里已经有16个字了,此时应该停止发送新数据,而等待SPI总线上主机的时钟将TXBUF里数据移出,FIFO数据自动装载一个字到TXBUF里,这时才能发送新数据。
7553



被折叠的 条评论
为什么被折叠?



