28335用SPI接收的数据总是发送的数据,怎么回事儿?

28335用SPI接收的数据总是发送的数据,怎么回事儿?,第1张

1 注意数据写入SPITXBUF时是左对齐,而读入SPIRXBUF是右对齐。这个问题在16位字长时不突出,但是在16位以下数据字长时要特别注意,一般方法是做左移运算。

2 数据丢失问题:在开启SPIFIFO增强功能时,不能根据SpiaRegs.SPISTS.bit.BUFFULL_FLAG来暂停发送数据。因为此时的TXBUF是从TXFIFO中得数据。程序中写入TXBUF,只是写入发送缓冲器即FIFO。根据先进先出原理,你源源不断地向TXBUF写数据,则FIFO里总是保存你最后写入的数据,而不会将SpiaRegs.SPISTS.bit.BUFFULL_FLAG位置1,所以会发现数据丢失。正确的方法应该判断SPITXFIFO中的字的个数。

首先你应该写个写入外边flash的代码。

然后通过单片机串口或者其他的方式接收你要烧录的程序,并通过你写好的写入外边flash代码程序将接收到程序写入外边flash中就可以了。

我之前是用FTP接收程序,通过单片机的SPI写入到外边flash中。

“DSP28335的SPI发送的是16位的数据”

如果DSP28335端的程序是你写的,修改配置采用8位帧格式不就得了。不过对于长数据还是应当约定通讯协议。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/7766313.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-09
下一篇2023-04-09

发表评论

登录后才能评论

评论列表(0条)

    保存