完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
就是我现在用的是一个主机来控制3个从机。程序流程是主机发送一个广播消息,3个从机接收到消息后执行相关功能,执行完后 3个从机分别给主机发送一个消息证明已经执行完了,然后主机接收完这3个消息后再发一个广播消息,让3个从机继续执行,就这样一直循环。现在的问题是 我把接收消息的程序放到了定时器中断里,10ms读取一次,发现有时候从机就停止执行功能了,我用串口打印的方式查找错误发现是主机这边有时候会接收不到个别从机的数据,但是从机是发送正常的。所以应该是3个从机发送的数据冲突了,导致主机漏掉了数据。我目前的解决办法是让主机接收到哪个从机的数据后就给那个从机发送消息说不用发送了。现实情况是之前的从机偶尔停止情况改善很多,但是还是有,我实在没有办法了,想来求助下大家 |
|
相关推荐
4个回答
|
|
这才是中断接收。你那个只是检查了接收的标记位。需要配置
1、CAN 接收中断优先级,尽量高一些。 2、CAN 接收中断使能 3、产生中断后,在中断中立即读取并解析。(如果解析时间较长,就要挪出来到app中)
|
|
1 条评论
|
|
确认以下几个方面:
1、CAN时序配置是否合理。(包括单片机时钟是否稳定,不要用内部时钟源,尽量使用有源晶振) 2、硬件是否存在严重干扰(PCB布局布线、外部接线等) 3、中断处理是否耗费较多时间 4、是否存在同时接收很多消息情况(如有,还需要创建一个队列接收缓冲) |
|
2 条评论
|
|
你正在撰写答案
如果你是对答案或其他答案精选点评或询问,请使用“评论”功能。
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| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-12-22 02:37 , Processed in 0.949917 second(s), Total 109, Slave 81 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号