CAN总线ACR/AMR原理浅析

CAN总线ACR/AMR详解
本文介绍了CAN总线中的ACR(Acceptance Code Register)和AMR(Acceptance Mask Register)原理,这两个概念在CAN报文过滤中起到关键作用。ACR指定关注和忽略的CAN ID位,而AMR规定ACR中哪些位生效。在某些配置下,如ECU使用扩展模式,只有特定的ACR位与AMR匹配时,CAN报文才会被接收,否则将被过滤掉。CAN总线通过差分电平传输数据,并使用ACR和AMR作为过滤机制,确保网络中有效通信。
AI助手已提取文章相关产品:

ACR/AMR屏蔽字属性用于屏蔽特定CAN ID,ACR用于指定CAN ID二进制中关注位和忽略位;AMR用于规定ACR中那些二进制位生效,哪些无效,通过ACR和AMR确定报文过滤规范。按照不同VCI、CAN卡等供应商和相关开发人员提供计算工具(不同的工具采用不同的公式)运算而取值。下面介绍理论情况下ACR和AMR计算原理:

在理解ACR、AMR之前,首先需要知道以下几个概念:

1. CAN:Controller Area Network

2. ACR:Acceptance Code Register

3. AMR:Acceptance Mask Register

4. AF:Acceptance Filter

类似Ethernet,CAN引入了子网的概念,IP包含Host ID和Network ID两部分,以Mask(子网掩码)区分。ACR和AMR就类似于Ethernet中的Mask,AF通过ACR和AMR起作用;

例如某ECU采用单滤波器接口、29位ID的扩展模式(Pelican Mode)下,CAN ID高8位用做命令字,3~23位用作具体ID设定位,低3位无用。

ECU CAN ID

0x??40 0000

AMR

0xFF1F FFFF

ACR

0x??40 0000

AMR中0代表有效位1代表无效位;从AMR的设定可以看出,只有第二字节高3 bit有效。

CAN总线使用差分电平实现逻辑0/1的映射。低电平对应隐性位,即逻辑1;高电平对应显性位,即逻辑0。把上述AMR和ACR用二进制表示(?为任意值),即:

ACR

0x??40 0000

????

????

0100

0000

0000

0000

0000

0000

AMR

0xFF1F FFFF

1111

1111

0001

1111

1111

1111

1111

1111

AMR_

-/X (有效/无效)

XXXX

XXXX

---X

XXXX

XXXX

XXXX

XXXX

XXXX

根据上表,AMR标识有效的ACR位(0),只有0100是有效的,它表示所有CAN ID只有左二字节的高3 bit与ACR中对应的相同时,该CAN报文方能通过这个CAN节点,否则将被舍弃。例如一段报文CAN ID为0x??40 0000,通过该CAN节点,其二进制表示如下:

????

????

1000

0000

0000

0000

0000

0000

其左2字节高3 bit为100,与ACR的010不同,从而被该节点舍弃。

在CAN总线网络中,如果上述CAN节点是GW(网关),则只有能被该GW接收的报文才能被该子网接收,而ECU发送报文,会直接发送到CAN总线上(多ECU通过按位与仲裁优先级)。


感谢子畅妈妈的分享,本人据此整理。

http://blog.sina.com.cn/s/blog_4a3211570100g9w7.html

您可能感兴趣的与本文相关内容

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值