两个28335利用SPI进行通信,主机和从机都使用FIFO,主机每隔100毫秒往发送FIFO里面写8个数据,然后等接收FIFO接收到8个数据时,读出来;从机的程序在一个死循环里面,{ 往发送FIFO里面写8个数据,然后等接收FIFO里面接收到8个数据的时候,读出来 ,再循环 } 。通信时,从机先运行,主机后运行。
现在出现的问题是主机接收的数据有时正确,有时错误,出现的错误时,接收到的数据中会串入主机自己发送的数据,根据错误数据分析,原因好像是在从机中,接收到的数据没有及时地移进接收FIFO,仍然存在SPIDAT寄存器中,然后又被发回给了主机,请问是什么可能的原因导致这样的现象发生?谢谢
Terry Deng:
最好加一个GPIO口做握手信号,由从机控制高低,表示数据接收完成或者等待发送
两个28335利用SPI进行通信,主机和从机都使用FIFO,主机每隔100毫秒往发送FIFO里面写8个数据,然后等接收FIFO接收到8个数据时,读出来;从机的程序在一个死循环里面,{ 往发送FIFO里面写8个数据,然后等接收FIFO里面接收到8个数据的时候,读出来 ,再循环 } 。通信时,从机先运行,主机后运行。
现在出现的问题是主机接收的数据有时正确,有时错误,出现的错误时,接收到的数据中会串入主机自己发送的数据,根据错误数据分析,原因好像是在从机中,接收到的数据没有及时地移进接收FIFO,仍然存在SPIDAT寄存器中,然后又被发回给了主机,请问是什么可能的原因导致这样的现象发生?谢谢
user4307294:
回复 Terry Deng:
您好,我现在用6747(主机)与28335(从机)进行SPI通信,没用FIFO,没用lookback, 每5毫秒交换一次数据,双方接收到的数据时对时错,主机经常会接收到自己发送出的数据,从机的SPI_INY FLAG不置位,不知道应该从哪排查?
两个28335利用SPI进行通信,主机和从机都使用FIFO,主机每隔100毫秒往发送FIFO里面写8个数据,然后等接收FIFO接收到8个数据时,读出来;从机的程序在一个死循环里面,{ 往发送FIFO里面写8个数据,然后等接收FIFO里面接收到8个数据的时候,读出来 ,再循环 } 。通信时,从机先运行,主机后运行。
现在出现的问题是主机接收的数据有时正确,有时错误,出现的错误时,接收到的数据中会串入主机自己发送的数据,根据错误数据分析,原因好像是在从机中,接收到的数据没有及时地移进接收FIFO,仍然存在SPIDAT寄存器中,然后又被发回给了主机,请问是什么可能的原因导致这样的现象发生?谢谢
mangui zhang:
回复 user4307294:
clk都是主机产生的吧 从机根据clk收数据或送数据
两个28335利用SPI进行通信,主机和从机都使用FIFO,主机每隔100毫秒往发送FIFO里面写8个数据,然后等接收FIFO接收到8个数据时,读出来;从机的程序在一个死循环里面,{ 往发送FIFO里面写8个数据,然后等接收FIFO里面接收到8个数据的时候,读出来 ,再循环 } 。通信时,从机先运行,主机后运行。
现在出现的问题是主机接收的数据有时正确,有时错误,出现的错误时,接收到的数据中会串入主机自己发送的数据,根据错误数据分析,原因好像是在从机中,接收到的数据没有及时地移进接收FIFO,仍然存在SPIDAT寄存器中,然后又被发回给了主机,请问是什么可能的原因导致这样的现象发生?谢谢
user4307294:
回复 mangui zhang:
时钟是主机发出的
两个28335利用SPI进行通信,主机和从机都使用FIFO,主机每隔100毫秒往发送FIFO里面写8个数据,然后等接收FIFO接收到8个数据时,读出来;从机的程序在一个死循环里面,{ 往发送FIFO里面写8个数据,然后等接收FIFO里面接收到8个数据的时候,读出来 ,再循环 } 。通信时,从机先运行,主机后运行。
现在出现的问题是主机接收的数据有时正确,有时错误,出现的错误时,接收到的数据中会串入主机自己发送的数据,根据错误数据分析,原因好像是在从机中,接收到的数据没有及时地移进接收FIFO,仍然存在SPIDAT寄存器中,然后又被发回给了主机,请问是什么可能的原因导致这样的现象发生?谢谢
Hong Liu37:
回复 user4307294:
你好,请问你这个问题解决了吗?我也遇到了这样的问题,不知道你有没有什么方法推荐?
两个28335利用SPI进行通信,主机和从机都使用FIFO,主机每隔100毫秒往发送FIFO里面写8个数据,然后等接收FIFO接收到8个数据时,读出来;从机的程序在一个死循环里面,{ 往发送FIFO里面写8个数据,然后等接收FIFO里面接收到8个数据的时候,读出来 ,再循环 } 。通信时,从机先运行,主机后运行。
现在出现的问题是主机接收的数据有时正确,有时错误,出现的错误时,接收到的数据中会串入主机自己发送的数据,根据错误数据分析,原因好像是在从机中,接收到的数据没有及时地移进接收FIFO,仍然存在SPIDAT寄存器中,然后又被发回给了主机,请问是什么可能的原因导致这样的现象发生?谢谢
mangui zhang:
回复 Hong Liu37:
我觉得是他的两个板卡直接通过SPI总线互联可能是电平不匹配我建议总线互联时串接匹配电阻就可以了