A部分-简介
CAN是控制器局域网络(Controller Area Network, CAN)的简称,是由以研发和生产汽车电子产品著称的德国BOSCH公司开发的,是国际上应用最广泛的现场总线之一。
CAN控制器通过组成总线的2根线(CAN-H和CAN-L)的电位差来确定总线的电平,信号是以两线之间的“差分”电压形式出现,总线电平分为显性电平和隐性电平。
CAN总线采用两种互补的逻辑数值"显性"和"隐性"。"显性"数值表示逻辑"0",而"隐性"表示逻辑"1"。当总线上同时出现“显性”位和“隐性”位时,最终呈现在总线上的是“显性”位。
显性(d),隐性(r)
在“隐性”状态下,VCAN_H和VCAN_L被固定与平均电压电平,Vdiff近似为零,此时VCAN_H和VCAN_L的标称值为2.5V。“显性”位以大于最小阀值的差分电压表示,此时VCAN_H的标称值为3.5V,VCAN_L的标称值为1.5V。
帧类型
-
数据帧
-
远程帧
-
错误帧
-
过载帧
数据帧
数据帧有 7 个不同的场位组成,数据场的长度可以为 0。
帧起始、仲裁场、控制场、数据场、校验场、应答场、帧结尾
1、帧起始:有一个单独的显性位组成 D
2、仲裁场:决定该帧的类型为 数据帧还是远程帧,总计12位。
其中识别符(ID)长度11 位,MSB (高位在前发送),其中ID10-ID4必须不能全是“隐性”。
RTR 位占一位,在数据帧中 RTR 位必须为“显性”,在远程帧中 RTR 位必须为”隐性”。
标准标识符11位,扩展标识符29位
3、控制场:决定传输数据的长度 总计有6位,最高两位保留(保留位必须为”显性”),剩下四位控制数据的长度 ,显性(d),隐性(r)
数据长度(字节) |
DLC3 |
DLC2 |
DLC1 |
DLC0 |
二进制 |
0 |
d |
d |
d |
d |
0000 |
1 |
d |
d |
d |
r |
0001 |
2 |
d |
d |
r |
d |
0010 |
3 |
d |
d |
r |
r |
0011 |
4 |
d |
r |
d |
d |
0100 |
5 |
d |
r |
d |
r |
0101 |
6 |
d |
r |
r |
d |
0110 |
7 |
d |
r |
r |
r |
0111 |
8 |
r |
d |
d |
d |
1000 |
4、数据场:数据场由数据帧中的发送数据组成,可以有0-8个字节,每个字节包含八个位,MSB(高位在前发送)
5、校验场:CRC校验,15
6、应答场:应答场长度为2个位,由应答间隙(ACK SLOT)和应答界定符(ACK DELIMITER)组成,在应答场中发送站发送两个“隐性”位,当接收站正确接收到有效的报文,接收站会在应答间隙期间发送应答(ACK)信号,向发送站发送一”显性”的位以示应答。
7、帧结尾:每个数据帧和远程帧都由一标志序列界定,这个标志序列由7个隐性位(r)1111 111 组成
远程帧
远程帧由6个不同的位场组成,分别为
帧起始,仲裁场,控制场,CRC场,应答场,帧结尾
与数据帧相反,在仲裁场中的 RTR 位是“隐性”的,他没有数据场,数据长度代码的数值不受约束(可以标注允许范围内0-8任意的数值),此数据相当于数据帧的数据长度
RTR 位的极性代表所发送的帧是数据帧(RTR 显性)还是远程帧(RTR 隐性)
错误帧
错误帧有 2 个不同的场组成
第一个场的所用是为不同的站提供错误标志(ERROE FLAG)的叠加
第二个场是错误界定符
错误标志
两种错误标志,主动错误标志,被动错误标志。
主动错误标志由 6 个连续的 显性 位组成
被动错误标志由 6 个连续的 隐性 位组成
错误界定符
错误界定符包括 8 个 隐性 的位
错误标志传送之后,每一站就发送 隐性 的位,并一直监视总线直到检测出一个 隐性 的位为止
过载帧
过载帧包括 2 个场位
第一:过载标志
第二:过载界定符
有两种过载条件都会导致过载标志的传送:
-
接收器的内部条件(此接收器对于下一数据帧或远程帧需要有一延时)。
-
间歇场期间检测到一“显性”位。
B部分-简介(CAN FD)
CAN 的对象层,传输层
对象层 LLC 子层、传输层 MAC 子层
优先级分配
仲裁场判定 显性(D 0) 优先级大于 隐形(R 1) 综合起来 ID 小的优先级高
仲裁场:小的优先级高
计算波特率:
补充:MSB:高位 LSB :低位