This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

TMS570LS1227: SPI从机使用DMA发送数据发生移位

Part Number: TMS570LS1227

程序背景:使用SoC作为SPI主机,单次读取数据128 Bytes,间隔 20ms 。TMS570LS1227的SPI4作为从机,使用DMA进行数据发送,DMA元素个数为1,帧数为128。

程序现象:当我在TMS570中定义一个128 Bytes 的数组进行发送,如果数组内容一直不变化,SPI主机则可以持续正常读取从机数据。但是当我赋值改变SPI从机数组内容时,SPI主机读取到的内容将发生移位。

                                          图1

上图1是DMA启动后,TMS570 SPI从机不对数组进行赋值改变时,SoC的SPI主机持续正常读取数据

                                          图2

上图2是DMA启动后,TMS570 SPI从机对数组第4个字节进行赋值改变时,SoC的SPI主机程序启动开始一段时间内可以正常读取数据

                                          图3

上图3是SPI双机通信程序运行一段时间后(此过程中任然对从机发送数据第4字节进行定时改变赋值),SoC的SPI主机程序读取的从机数据发生偏移。

我发现从机对数组的赋值操作,无论放在循环中进行,还是DMA帧传输完成中断中进行都无法避免!

请问该如何避免这种情况的发生?