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

淘帖
2033