微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > STM32 SPI DMA主从通讯的问题

STM32 SPI DMA主从通讯的问题

时间:10-02 整理:3721RD 点击:
SPI主从通讯,DMA方式,主机和从机互发数据,主机先发命令,从机根据命令发送不等长数据包,现在的问题是在通讯过程中如果主机意外的发生了复位,从机就接收不到数据了(从机程序中已做了超时检测,从新开启接收)但是这一现象不是每一次都发生,怀疑是由于从机还未发送完成,主机就复位,导致时钟没有了,然后某个寄存器的值变化了。具体原因不清楚,求大神解答!

这种问题需要在代码里面做检测DMA接收情况,如果接收超时,从机也要重新初始化SPI设置。
最常见的情况,比如EFT环境测试,数据错,通信异常很常见,硬件不能保证安全通信的前提下,软件必须加入通信异常处理。同时通信数据需要使用校验例如CRC,否则在环境恶劣的地方通信会受到很大的影响。
我们做了一个工控产品,环境比较恶劣,SPI也是老有问题,就是这样解决的。

数据异常要加入重发机制,单次通讯肯定是不可靠的

意外复位之后,重新开启接收之前 可以看看这时候相关寄存器的内容,也许能发现什么原因

主机复位,能有信号检测到吗?如果有,当主机复位时,再重新初始化下SPI就能正常通讯了

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top