CAN多节点同时发送数据的问题
<p>大家好!<br />目前正在做电源中的CAN通信,每个模块使用的单片机是MT006,程序逻辑如下:<br />
1、CAN总线上有6个子模块,使用CAN分析仪连接到CAN总线;<br />
2、CAN分析仪发送指令给模块,指令可以发给其中某个指定模块,子模块根据协议中的ID确认是不是发给自己的,如果是就回应,否则不回应,CAN分析仪也可以发送类似广播的方式要求所有模块都要回应,比如协议中的ID设置为0xFF就表示每个模块都要回复;</p>
<p>现在问题是这样的:<br />
1、单独发给指定ID的模块,发送和接收都正常;<br />
2、如果使用广播包的形式要求每个模块都要回应时,CAN分析仪偶尔出现接收丢包的现象,发送正常,例如:有两个模块挂接在CAN总线,ID分别为1和2,CAN分析仪在发送广播包,大部分时间都能收到两个模块的回应,有时出现模块1无回复或者模块2无回复,但没有出现两个模块都没有回复的现象。</p>
<p>按理说,ID不同,子模块在同时发送数据有CAN仲裁机制,各位能帮忙分析下可能的原因吗?谢谢!</p>
<p>1.ID是不是有重复</p>
<p>2.如果ID不重复,检查看看自动重发机制有没有打开</p>
flyaqiao 发表于 2024-9-26 17:21
1.ID是不是有重复
2.如果ID不重复,检查看看自动重发机制有没有打开
<p>你好!ID确认没有重复,这个自动重发我要看下那个单片机的技术手册,谢谢!</p>
flyaqiao 发表于 2024-9-26 17:21
1.ID是不是有重复
2.如果ID不重复,检查看看自动重发机制有没有打开
<p>我看了芯片手册,当出现仲裁丢失时会自动重试发送消息,应该就有重发机制,有没有可能是CAN分析仪的问题,到时我确认下模块有没有发出消息。</p>
<p>很多芯片的重发机制是可以开关的</p>
<p><strong>单独发送指定ID的模块正常</strong>‌:也仅仅是表明各个模块的基本通信功能是正常的,能够正确识别和处理针对自己的指令。</p>
<div class='shownolgin' data-isdigest='no'>led2015 发表于 2024-9-26 19:16
单独发送指定ID的模块正常‌:也仅仅是表明各个模块的基本通信功能是正常的,能够正确识别和处理针对自 ...
<p>你好!请问下在多个节点同时回复消息,CAN分析仪偶尔出现接收错误有可能的原因有哪些?但分析仪界面并没有显示任何总线错误,只是右下方接收错误计数会更新。</p>
</div><script>showreplylogin();</script><script type="text/javascript">(function(d,c){var a=d.createElement("script"),m=d.getElementsByTagName("script"),eewurl="//counter.eeworld.com.cn/pv/count/";a.src=eewurl+c;m.parentNode.insertBefore(a,m)})(document,523)</script> <div class='shownolgin' data-isdigest='no'><div style="text-align: center;"></div>
<p> </p>
</div><script>showreplylogin();</script> <div class='shownolgin' data-isdigest='no'>flyaqiao 发表于 2024-9-26 18:17
很多芯片的重发机制是可以开关的
<p>有没有可能是终端电阻匹配造成的?现在每个模块都并了120欧电阻,而并不是首尾两个节点才有终端电阻。</p>
</div><script>showreplylogin();</script>
页:
[1]