CAN控制器同时出现发送和接收时怎么处理?

2019-07-21 07:46发布


假设现在两个MCU(A和B)之间进行CAN通信

假设 
当A给B发送数据的同时B也给A发送了另一帧数据,
那么A的数据能发出去吗? 
如果能发出去, 那B发给A的数据会丢失吗?还是B会重新发送?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
5条回答
styleno1
1楼-- · 2019-07-21 11:35
 精彩回答 2  元偷偷看……
正点原子
2楼-- · 2019-07-21 15:33
CAN有总线仲裁机制,通过ID来决定优先级。
楼主很明显,我们光盘给的CAN资料就没读。。。
wang12zhe
3楼-- · 2019-07-21 20:35
回复【2楼】正点原子:
---------------------------------
我知道CAN有仲裁机制

但是我有疑问的是仲裁过程中失败的那一帧数据是否能够重发 或者是直接丢失?
myxiaoniao
4楼-- · 2019-07-21 21:05
回复【3楼】wang12zhe:
---------------------------------
这个也有机制,所谓避退。。。资料上应该也有,至少stm32的参考手册是有提到的吧

还是看看资料吧
hu25886
5楼-- · 2019-07-22 01:11
wang12zhe 发表于 2015-5-12 08:06
回复【2楼】正点原子:
---------------------------------
我知道CAN有仲裁机制

根据自己实际遇到的现象谈一下。主设备A与从设备B通过CAN通信,正常情况下主设备A周期性询问B设备运行情况(即A周期发送命令,B收到后打包回复。此包信息远远大于8字节),与此同时,其他即时性命令也需要通过该CAN发送,接收后也需回报。这种情况下就会发现,B设备偶尔会丢失1个询问命令。猜测,可能是由于即时性命令产生的回包与周期询问命令同时发出,根据优先级判断,只有一个操作能够实现,另一个操作会被丢失。
没有想到比较好的测试方法,我是根据猜测反推CANID是符合优先级判定的。

一周热门 更多>