CAN协议

野火教程-CAN协议

  1. 协议定位:异步 差分 半双工(收发数据分时进行) 
  2. 协议分类
    1. 闭环总线网络 最大40m 最高1Mbps     并联120欧电阻
    2. 开环总线网络 最长1km 最高125kbps   串联2,2k欧电阻
  3. 电气标准
    1. 显性电平(高电平)代表逻辑0(强制规定)
    2. 隐性电平(高电平)代表逻辑1
    3. 如果总线上同时出现显性电平和隐性电平, 总线的状态会被置为显性电平,显性电平指的是高电平
当CAN收发器从CAN_Tx线接收到来自CAN控制器的低电平信号时(逻辑0), 
它会使CAN_High输出3.5V,同时CAN_Low输出1.5V,
CAN的电路设计使得当总线中有一个从机处于CAN_H > CAN_L这种状态的时候,整体都将处于处于这种状态,
这就是为什么要将这种状态下表示为显性电平(dominant)
将显性电平定义为逻辑0的时候,这样发送的数据就会呈现线与的功能,1&0=0
这也就是为什么can的帧ID越小,帧的优先级越大,直接原因是逻辑0代表显性(dominant)功能,根本原因是电路实现的线与功能
因此在CAN中提到显性位则代表逻辑1,隐形位代表逻辑0
在分析can的报文的时候,我们更关心总线冲突的问题,因此多提显隐性的概念,由于逻辑1代表使能,这就能理解为什么RTR在使能的时候,给的是隐性电平

4.can中的每个数据位都由SS+PTS+PBS1+PBS2组成,主要目的是调节各段的长度以对采样点进行偏移调整

SS: sync segment 固定1tq         同步段    如果信号在首tq值中未能同步完成 会标记为错误帧

PTS: propogation time 1-8tq      传播时间段  补偿网络的物理延时时间

PBS1: phase buffer segment 1 1-8tq  相位缓冲段1  补偿边沿阶段误差

PBS2: phase buffer segment 2 2-8tq  相位缓冲段2  补偿边沿阶段误差

RSJW:ReSyncJumpWidth:3tq左右   重新同步跳转宽度  stm32中限制重新同步的单次调整值,可以多次小步调整当控制器设置的SJW极限值较大时,可以吸收的误差加大,但通讯的速度会下降。

5.CAN中的报文种类

数据帧

遥控帧

错误帧

过载帧

帧间隔

 

数据帧详解:(用于发送数据)

1.SOF start of frame:显性电平,通知即将传输

2.仲裁段:数据帧的ID(标准11位,扩展29位)

3.RTR(Remote Transmission Request Bit):远程传输请求位,数据帧内为显性电平,逻辑0,代表禁止

4.IDE位(Identifier Extension Bit):标识符扩展位,数据帧内为显性电平,逻辑0,代表禁止

5.SRR位(Substitute Remote Request Bit):替代标准格式中的RTR位,标准数据帧中SRR为逻辑0,代表禁止

标准帧结构:

1位sof + 11位ID + 1位RTR(逻辑0) + 1位IDE(逻辑0) + 1位R0+4位DLC + 0-8ByteDATA + 15位CRC+1位CRC界定符(隐性位) + ACK槽位+ACkK界定符+帧结束(7个隐性位)

扩展帧结构:

sof+11位ID+SRR(逻辑0)+IDE(逻辑1)。。。

 

posted @ 2024-08-09 19:01  为鲸  阅读(45)  评论(0编辑  收藏  举报