乐鑫技术交流
直播中

李艺银

7年用户 1013经验值
私信 关注
[问答]

SPI Master DMA环形接收长时间后数据出错是哪里的问题?

idf版本:v3.3 v4.2

esp32开发板:nodemcu,esp32s

问题描述:

    esp32作为spi master与STM32g0作为spi slave进行dma 全双工通讯,在26.67MHz时钟下满带宽持续将两个芯片各自32字节的内容使用DMA发送给对方。代码修改自idf的spi master demo,修改寄存器实现SPI_DMA_CONtiNUE模式持续将32字节内容发送和接收。

    测试发现,在上电开始SPI开始传输后每过161秒接收到的数据都会有一个字节的丢失,导致接收到的数据错位。多次测量或修改寄存器设置后也都是这种现象。如果将时钟改慢为20M则会每215秒丢失一字节。个人推测可能是esp32接收的某种机制导致错开一个字节(8位),否则无法解释为什么每次都会每隔同样的时间、丢失同样大小的(8位bit,一个字节)数据,ESP32发给STM32的数据始终是正确的(MOSI),STM32发给ESP32的数据通过逻辑分析仪确认也没问题(MISO)。

    针对这个问题现已调试多日不见解决,还望赐教。







更多回帖

发帖
×
20
完善资料,
赚取积分