TI中文支持网
TI专业的中文技术问题搜集分享网站

TMS570LS1114: CAN通讯问题

Part Number:TMS570LS1114

我专案的CAN通讯,CAN ID可设定为11bit或是29Bit

当使用11bit的CAN ID,通讯没有问题:但一旦使用29Bit的CAN ID,

在接收资料的时候,会发生误接收的现象,分析后,来自末11bit相同的CAN ID的资料会被误接收进某个CANID

例如:

ID(0x0CF094A7) 和ID(0x0CFB74A7)的后11bit都是4A7,

那么0x0CF094A7的数据会被误解读为0x0CFB74A7的资料

我们也做过测试,凡是ID末11bit是4A7,都会被解读为0x0CFB74A7的资料

我们也做过,将ID(0x0CFB74A7)拿掉,那来自ID(0x0CF094A7)的数据就会被正确接收到

 

就此,咨询一下,造成此现象的可能原因,以及该如何修改

 

Cherry Zhou:

您好我们已收到您的问题并升级到英文论坛,如有答复将尽快回复您。谢谢!

,

Cherry Zhou:

您好,具有 11 位 ID 和 29 位 ID 的消息可在 CAN 总线中共存。 11 位标识符的优先级高于 29 位标识符 (前 11 位相同)。

如果您同时发送 2 条 ID=0x0CF094A7 和 ID=0x0CFB74A7 的消息,并且两条消息都使用扩展 ID (IDE=1) ,则 ID=0x0CF094A7 会赢得arbitration。 如果 ID=0x0CFB74A7 的消息使用标准 ID (IDE=0) ,该消息将赢得arbitration。 您请检查下这两条消息的 IDE 值。

,

Wen-Gou Lin:

您理解錯我的問題,並非同時存在11 位 ID 和 29 位 ID 的消息;也不是同時發送 ID=0x0CF094A7 和 ID=0x0CFB74A7 的消息

狀況是這樣的:

當我們發出0x0CF094A7的消息,但沒有發佈0x0CFB74A7 的消息,0x0CF094A7的消息會被解讀為0x0CFB74A7 的消息

這有建議嗎?

,

Cherry Zhou:

您好,您的情况是不是以下这样:

假设 CAN 网络中有两个节点:节点 A 和节点 B。 节点 A 发送 ID 为 0x0CF094A7 的消息。 节点 B 接收 CAN 消息,两个邮箱配置为接收消息:一个邮箱 (假设邮箱 1) 用于接收带有 0x0x0CFB74A7 的消息,一个邮箱 (邮箱 2) 用于 ID = 0x0CF094A7 的消息。 但节点 B 将接收到的 ID 为 0x0CF094A7 的消息存储到邮箱 1 而不是邮箱 2。 是这样吗?

当传入消息的仲裁和控制位 (标识符 + IDE + RTR + DLC) 完全移入 CAN 内核的移位寄存器时,消息处理程序开始扫描消息 RAM 以查找匹配的有效消息对象 (先是 mailbox1 、然后是 bomailx2) :

1. 验收滤波单元加载来自 CAN 内核移位寄存器: 0x0CF094A7 的仲裁位

2. 然后,消息邮箱 1 的仲裁和掩码位 (ID=0x0CFB74A7 、 mask=?) 被加载到验收过滤单元中,并与 #1 中的仲裁位进行比较

3. 如果 mask=0x7FF ,则只有前 11 位被用于接受过滤,因此匹配发生,消息被复制到邮箱 1。 扫描停止。

4. 如果 mask=0x1FFFFFFF,则所有 29 位都用于验收滤波,0x0CF094A7 与 mailbox1 (0x0CFB74A7) 的 ID 不匹配。 将扫描 mailbox2。

5. 与 #3 相同

此外,请问节点 B (ID 和掩码) 的 mailbox1 和 mailbox2 的配置是什么?

,

Wen-Gou Lin:

1. 经查,我们通讯程式,对掩码位(mask)的的设定都是=0x7FF,2. 根据你所诉,我们将掩码位改为0x1FFFFFFF3. 经测试,通讯正常本案结束,再次感谢你

赞(0)
未经允许不得转载:TI中文支持网 » TMS570LS1114: CAN通讯问题
分享到: 更多 (0)