在调试TMS320C280049 CAN 时,系统中有12个节点,如果12个节点都用254作为源地址,255作为目的地址互相之间发送can数据帧时,经常会出现ID冲突,某些节点的CAN就会出现错误,不收发数据。
但是如果用一个小的数字,比如说用0作为源地址,互相发送can帧时ID冲突的可能性就很小。
这12个节点除了ID域相同外,数据都不相同。
另外,TMS320C280049的“Auto-Bus-On”在出现ID冲突后也不管用。
Susan Yang:CAN总线是通过数据包ID而非节点地址来收发数据的,即CAN总线上的节点没有固定的地址,取而代之的是每个节点都需要通过软件配置一个ID表(在该节点的验收滤波器单元中),如果总线上的数据包的ID号在该节点的ID表中存在,则数据包成功通过该节点的验收滤波器单元的验收,并将被送到上层软件处理单元并进行相应的数据处理,否则,该数据包被丢弃。
您现在是多个节点同时收发数据?
“这12个节点除了ID域相同外,数据都不相同。” 能否详细说明一下?谢谢
在调试TMS320C280049 CAN 时,系统中有12个节点,如果12个节点都用254作为源地址,255作为目的地址互相之间发送can数据帧时,经常会出现ID冲突,某些节点的CAN就会出现错误,不收发数据。
但是如果用一个小的数字,比如说用0作为源地址,互相发送can帧时ID冲突的可能性就很小。
这12个节点除了ID域相同外,数据都不相同。
另外,TMS320C280049的“Auto-Bus-On”在出现ID冲突后也不管用。
zhaoheng li:
回复 Susan Yang:
我的意思就是每个can数据帧包括ID域(即仲裁域)和数据域,数据域各不相同,ID域相同,我在ID域中又划分了源地址和目的地址,是扩展帧。
例如0x0767fff3,是仲裁域,表示是从地址254发到255的,假设10秒时间内每个节点都用这个ID域给总线发送can数据帧(假设20毫秒发一次),就会引起冲突,某些节点出错后就不收发数据了。
但是例如同样的规则,如果仲裁域变成0x0767f923,表示是从地址64发到255的,冲突的概率就大大降低。