STM32/STM8技术william hill官网
直播中

fcb5511

10年用户 20经验值
擅长:可编程逻辑 嵌入式技术 控制/MCU EDA/IC设计
私信 关注
[问答]

STM32 SPI DMA主从通讯的问题

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

回帖(4)

韦声健

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

何健飞

2016-9-29 14:07:20
数据异常要加入重发机制,单次通讯肯定是不可靠的
举报

654524

2016-10-9 11:28:22
意外复位之后,重新开启接收之前 可以看看这时候相关寄存器的内容,也许能发现什么原因
举报

xiaoyang04

2016-10-9 11:57:32
主机复位,能有信号检测到吗?如果有,当主机复位时,再重新初始化下SPI就能正常通讯了
举报

更多回帖

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