没有合适的资源?快使用搜索试试~ 我知道了~
首页CAN与CAN-FD报文结构对比.pdf
资源详情
资源评论
资源推荐

和 报文结构
IFS
SOF ARB
Field
Data
Field
CRC
Field
ACK
Field
EOF IFSCTRL
Field
Start of Frame 帧起始
Bus Levels 总线电平
Bitwise Bus Arbitration 总线逐位仲裁机制
CAN FD-Flexible Data Rate CAN FD- 数据比特率可调
Bit Stuffing 位填充
Bit Time Segmentation 位时间划分
之前最多有 11 个隐性位
显性位“
0
”或隐性位“
1
”均可代表一位,当许多发送器
同时向总线发送状态位的时候,显性位的始终会比隐性位优
先占有总线,这就是总线诸位仲裁原则。
如下例所示是控制器
1
发送
ID
为
0x653
的报文,控制器
2
由于发送报文
ID
为
0x65B
的报文(图中标示第
3
位)。控制器
失去总线,会等待总线空闲之后再重新发送。
FDF
( FD frame format ) FD
帧结构:
FD
帧结构中为隐性
BRS
( Bit Rate Switch )
比特率转换:
CAN FD
数据段以
BRS
采样点作为起始点,显性
(0)=
转换速率不可变,隐性
(1)=
转换速率可变
ESI
( Error State Indicator )
错误状态指示符:显性
(0)=CAN FD
节点错误主动状态,隐性
(1)=CAN FD
节点错误被动状态
CRC Del
( CRC Delimiter ) CRC
界定符:
CAN FD
数据段以
CRC
界定符采样点最为结束点,由于段转换的存在,
CAN FD
控制器为了使接收位位数达到两位,则会接收带有
CRC
界定符的帧。
ACK
:
CAN FD
控制器会接收一个
2
位的
ACK
,用于补偿控制器与接收器之间的段选择关系。
CAN
协议规定,
CAN
发送器如果检测到连续传输 5 个极性相同的位,则会自动在实际发送的比特流后面插入一个极性相反的位。接收节点
CAN
控制器检测到连续传输 5 个
极性相同的位,则会自动将后面极性相反的填充位去除。
SYNC
同步段 :在同步段中产生边沿
TSEG1
时间段
1
:时间段
1
用来补偿网络中的最大信传
输延迟并可以延长重同步时间
TSEG2
时间段
2
:时间段
2
作为时间保留位可以缩短重
同步时间
Arbitration Field 仲裁段
Control Field 控制段
Arbitration Field 仲裁段
标准帧
( Std ID ) 11
位
RTR
( Remote Transmission Request )
远程帧标志位:显性 (
0
)= 数据帧,隐性 (
1
)= 远程帧
SRR
( Substitute RTR bit for 29 bit ID )
代替远程帧请求位:用
RTR
代替
29
位
ID
IDE
( Identifi er Extension )
标志位扩展位:显性 (
0
)=
11
位
ID
,隐性 (1)=
29
位
ID
r1
( Reserved for future use )
:保留位供未来使用,且
CAN FD
不支持远程帧
IDE
(Identifi er Extension)
标志位扩展位:
CAN FD
扩展帧中不存在
r0,r1
(Reserved for future use)
:保留位供未来使用
FDF
(FD frame format) FD
帧结构:显性 (0)= 非
CAN FD
帧,隐性 (1)=
CAN FD
帧
BRS
(Bit Rate Switch)
比特率转换:显性 (0)= 转换速率不可变,隐性 (1)= 转换速率可变
ESI
(Error State Indicator)
发送节点的错误状态指示:显性 (0)= 错误主动状态,隐性 (1)= 错误被动状态
DLC
(Data Length Code)
数据长度代码
扩展帧
( Ext ID ) 29
位
CAN Format CAN
帧格式
由于显性(逻辑“
0
”)优先级大于隐性(逻辑“
1
”),所以较小的帧
ID
值范围会获得较高的优先级,优先占有总线(详细说明见“总线逐位仲裁机制”部分)。如果同时涉及到标准帧 (
Std ID
) 与扩展帧 (
Ext
ID
) 的仲裁,首先标准帧会与扩展帧(如上图所示)中的 11 个最大有效位 (
b28-b18
) 进行竞争,若标准帧与扩展帧具有相同的前
11
位
ID
,那么标准帧将会由于
IDE
位为
0
,优先获得总线。
CAN
的同步包括硬同步和重同步两种方式,同步规则如下:
发送器比接受器慢(信号边沿滞后)
一个位时间内只允许一种同步方式
任何一个跳变边沿都可用于同步
硬同步发生在帧起始
SOF
部分,所有接收节点调整各
自当前位的同步段,使其位于发送的帧起始
SOF
位内
当跳变沿落在同步段之外时,重同步发生在一个帧的其
他位场内
帧起始到仲裁场有多个节点同时发送的情况下,发送节
点对跳变沿不进行重同步,发送器比接受器慢(信号边
沿滞后)
发送器比接受器快(信号边沿超前)
Data Field 数据段
Cyclic Redundancy Check Field 循环冗余校验段
Error Detecting 错误监测机制
Main Error Counting Rules 主要的错误计数规则
Acknowledge Field 确认段
End of Frame 帧结束
Interframe Space 帧间空间
比特顺序
例如:
CAN
帧的
CRC
段
某报文无论是否应该发送至某一节点,该
CAN
节点凡是接收到一个正确传输时,都必须发送一个显性位以示应答,如果没有节点
正确的接收到报文,则
ACK
保持隐性。
如果某一位编号下出现一个显性电平:
[1-6
位
]
发送器或接收器检测到一个帧结构错误。此时接收器丢弃该帧,同时产生一个错误标记(接收器
CAN
控制器处于错误主
动状态,则产生显性错误帧;如果处于错误被动状态,则产生隐性错误帧)。如果是显性错误帧,则发送器重新发送该帧。
错误主动状态
TX
节点 错误被动状态
TX
节点
[7
位
]
该位对于接收器有效,但对于发送器无效。如果此位出现显性错误帧,则接收器已经把报文接收成功,而发送器又重新发送,
则该帧就被接收器接收两次,这时就需要由高层协议来处理。
MSB ( Most Signifi cant Bit )
:最高有效位
LSB ( Least Signifi cant Bit )
:最低有效位
Stuff count
填充计数
Grey code
格雷码
Parity bit
奇偶校验位
Fixed stuff-bits
固定填充位
0
000 0 1
1 001 1 0
2 010 0 1
3 011 1 0
4 100 0 1
5 101 1 0
6 110 0 1
7 111 1 0
Acknowledgement Details ACK 错误帧详情
当
CAN/CAN FD
节点不允许信息传输时,应用如下:
注意:
注意:
注意:
该情况下假设的是有两个或多个处于错误主动状态的接收器接入总线;
单次发送后,只允许一个接收器发送一个确认标识,如果有多个接收器同时发出确认标识,则会通过发送错误主动标识符拒绝
接收后面的帧;
如果所有接收器都发送确认标识,会导致
EOF
帧结束部分 7 个隐性位中检测到一个显性位(详细说明见
“End of Frame
帧结束”
部分),进而导致格式错误,随后接收器便会发送错误主动标识符;
接收器检测到格式错误时,会随即发出一个错误主动状态标识符,发送器如果检测出格式错误,则会在发送一个错误主动状态
标识符之后会自动在空闲状态下尝试发送同一报文。
CAN FD
协议对于仲裁段和数据段来说有两个独立的比特率,但其仲裁段比特率与标准的
CAN
帧有相同的位定
时时间,而数据段比特率会大于或等于仲裁段比特率且由某一独立的配置寄存器设置。
CAN FD Format CAN FD
帧格式
CAN
和
CAN FD
帧数据长度码。
CAN CAN FD
Data Bytes 0 1 2 3 4 5 6 7 8 8 12 16 20 24 32 48 64
DLC3 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 1
DLC2 0 0 0 0 1 1 1 1 0/1 0 0 0 0 1 1 1 1
DLC1 0 0 1 1 0 0 1 1 0/1 0 0 1 1 0 0 1 1
DLC0 0 1 0 1 0 1 0 1 0/1 0 1 0 1 0 1 0 1
CAN FDCAN
和
CAN FD
CAN
帧
CRC
格式
“位监测”导致“位错误”
:节点检测到的位与自身送出的位数值不同;仲裁
或
ACK
位期间送出“隐性”位,而检测到“显性”位不导致位错误
“填充检测”导致“填充错误”
:在使用位填充编码的帧场(帧起始至
CRC
序列)
中,不允许出现六个连续相同的电平位
“格式检测”导致“格式错误”
:固定格式位场(如
CRC
界定符、
ACK
界定符、
帧结束等)含有一个或更多非法位
“CRC 检测”导致“CRC 错误”
:计算的
CRC
序列与接收到的
CRC
序列不同
“ACK 检测”导致“ACK 错误”
:发送节点在
ACK
位期间未检测到“显性”
每一个
CAN
控制器都会有一个接收错误计数器和一个发送错误计数器用于处理检测到的传输错误,然后依据相关协议与规则进行错误数量增加或减少的统计。
CAN FD
控制器在发送错误帧之前会自动选择仲裁段比特率。
CAN
控制器处于错误主动状态,则产生显性错误帧;如果处于错误被动状态,则产生隐性错误帧。
复位时错误计数器初始化归零;
检测到一次无效传输时
REC
加
1
;
接收器首次发送错误标志时
REC
加
1
;
报文成功接收
REC
减 1;
注 意:
REC
为
128
,以 及
REC
或
TEC
为零时,错误计数不会增加。
传输过程中检测到错误
TEC
加 8;
报文成功发送
TEC
减 1;
在
TEC<127
且子序列错误被动状态标记保持隐性的情况下
TEC
加
8
;
TEC>255
情况下
CAN
控制器与总线断开连接。
CAN FD
帧
CRC
格式
Data Length
数据长度
CRC Length CRC
长度
CRC Polynom CRC
多项式
CAN
(0-8
字节
)
15
x^15+x^14+x^10+x^8+x^7
+x^4+x^3+1
CAN FD
(0-16
字节
)
17
x^17+x^16+x^14+x^13+x^11
+x^6+x^4+x^3+x^1+1
CAN FD
(17-64
字
节
)
21
x^21+x^20+x^13+x^11+x^7
+x^4+x^3+1
CAN FD
CAN FD
Error Detecting 错误监测机制
CAN FD
帧由仲裁段和数据段两段组成,配置过程中可以使数据段比特率比仲裁段比特率高。其中控制段的
BRS
是数据段比特率加速过渡阶段,
BRS
阶段前半段为仲裁段会采用
标准比特率传输(假设
500K
),脉宽为
2us
;后半段为数据段会采用高比特率传输(假设
1M
),脉宽为
1us
,计算
BRS
整体脉宽则是分别取两种比特率脉宽的一半,进行累加,
计算可得到如图所示
BRS
整体脉宽为
1.5us
,
CRC
界定符同理。
CAN FD
帧会在
CRC
序列第一个位之前自动插入一个固定的填充位,且独立于前面填充位的位置。
CRC
序列中每四个位后面会插入一个远程固定填充位(详细说明见“
Cyclic
Redundancy Check Field
循环冗余校验段”部分)。
















安全验证
文档复制为VIP权益,开通VIP直接复制

评论0