1
完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
扫一扫,分享给好友
SPI主从通讯,DMA方式,主机和从机互发数据,主机先发命令,从机根据命令发送不等长数据包,现在的问题是在通讯过程中如果主机意外的发生了复位,从机就接收不到数据了(从机程序中已做了超时检测,从新开启接收)但是这一现象不是每一次都发生,怀疑是由于从机还未发送完成,主机就复位,导致时钟没有了,然后某个寄存器的值变化了。具体原因不清楚,求大神解答!!!
|
|
相关推荐
4个回答
|
|
这种问题需要在代码里面做检测DMA接收情况,如果接收超时,从机也要重新初始化SPI设置。
最常见的情况,比如EFT环境测试,数据错,通信异常很常见,硬件不能保证安全通信的前提下,软件必须加入通信异常处理。同时通信数据需要使用校验例如CRC,否则在环境恶劣的地方通信会受到很大的影响。 我们做了一个工控产品,环境比较恶劣,SPI也是老有问题,就是这样解决的。 |
|
|
|
数据异常要加入重发机制,单次通讯肯定是不可靠的
|
|
|
|
意外复位之后,重新开启接收之前 可以看看这时候相关寄存器的内容,也许能发现什么原因
|
|
|
|
主机复位,能有信号检测到吗?如果有,当主机复位时,再重新初始化下SPI就能正常通讯了
|
|
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
2085 浏览 1 评论
AD7686芯片不传输数据给STM32,但是手按住就会有数据。
1924 浏览 3 评论
4518 浏览 0 评论
如何解决MPU-9250与STM32通讯时,出现HAL_ERROR = 0x01U
2069 浏览 1 评论
hal库中i2c卡死在HAL_I2C_Master_Transmit
2581 浏览 1 评论
小黑屋| 手机版| Archiver| 德赢Vwin官网 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 02:28 , Processed in 0.650694 second(s), Total 77, Slave 61 queries .
Powered by 德赢Vwin官网 网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
德赢Vwin官网 观察
版权所有 © 湖南华秋数字科技有限公司
德赢Vwin官网 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号