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帧传输完成中断中进行都无法避免!
请问该如何避免这种情况的发生?
Cherry Zhou:
Hi Rui,
您的问题我们升级到英文论坛看下,链接如下:
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1243685/tms570ls1227-shifts-occur-when-the-spi-slave-sends-data-using-dma
这个帖子我们会先关闭,如需帮助您可以随时reopen。
Thanks
,
Cherry Zhou:
Hi,
英文论坛已有工程师在跟进您的问题,您可以持续关注:
https://e2e.ti.com/support/microcontrollers/arm-based-microcontrollers-group/arm-based-microcontrollers/f/arm-based-microcontrollers-forum/1243685/tms570ls1227-shifts-occur-when-the-spi-slave-sends-data-using-dma