CAN协议

高可靠性和良好的错误检测能力

物理层

​ 异步通讯,仅有CAN_High和CAN_Low两条信号线

闭环总线网络

CAN协议 高速、短距离的闭环网络,最大总线长度40m,最高通信速度1Mbps,总线两端要求各要求有120欧的电阻

开环总线网络

CAN协议 低速、远距离的开环网络,最大传输距离1km,最高通信速度125kbps,每根总线要求各串联一个2.2千欧的电阻

通讯节点

只要CAN总线的负载足够,网络中的节点理论上不受限制,可通过中继器增强负载
​ CAN收发器实现CAN控制器TTL电平信号和差分信号的相互转换

差分信号

CAN协议
通过两根信号线的电压差值表示逻辑0和逻辑1
​ 差分信号传输优点:抗干扰能力强,有效抑制对外部的电磁干扰,时序定位精确(差分信号的开关变化位于两个信号的交点)

CAN协议差分信号

​ CAN协议标准表示的信号逻辑
CAN协议
​ CAN的差分信号(高速)
CAN协议

协议层

波特率及同步
位时序分解

​ CAN位时序分解图,每一个数据位分解为SS段、PTS段、PBS1段、PBS2段,分解后的最小时间单位是Tq,一个完整的位由8~25个Tq组成
CAN协议

  • SS段(SYNC SEG)
    同步段,通信节点检测到总线上信号的跳边沿被包含在SS端的范围之内,表示节点与总线的时序是同步的,大小固定为1Tq
  • PTS段(PROP SEG)
    传播时间段,用于补偿网络的物理延时时间,总线上输入比较器延时和输出驱动延时总和的两倍,大小为1~8Tq
  • PBS1段(PHASE SEG1)
    相位缓冲段,用来补偿边沿阶段的误差,在重新同步时可以加长
  • PBS2段(PHASE SEG2)
    另一个相位缓冲段,也用来补偿边沿阶段的误差,在重新同步时可以缩短
通讯波特率

​ 约定1个Tq的时间长度和每一个数据位占据多少个Tq,可确定CAN通讯的波特率

同步过程分析

(1) 硬同步

CAN协议 节点检测到总线的帧起始信号不在节点内部时序的SS段范围,节点以硬同步的方式调整,把自己的位时序中的SS段平移至总线出现下降沿的部分
(2) 重新同步
利用普通数据位的高至低电平的跳变沿来同步,使用SS段进行检测,使节点内的SS段把跳变沿包含起来
相位超前重新同步:节点从总线的边沿跳变中,检测到它内部的时序比总线的时序相对超前2Tq,控制器在下一个位时序中的PBS1段增加2Tq的时间长度,使得节点与总线时序重新同步

CAN协议

​ 相位滞后重新同步:节点从总线的边沿跳变中,检测到它内部的时序比总线的时序相对滞后2Tq,控制器在前一个位时序中的PBS2段减少2Tq的时间长度

CAN协议

报文种类及结构

报文的种类

CAN协议

数据帧结构

CAN协议

  • 帧起始
    ​ SOF段(Start Of Frame),只有一个数据位,一个显性电平,用于通知各个节点将有数据传输,其它节点通过帧起始信号的电平跳变沿进行硬同步
  • 仲裁段
    ​ 仲裁段的内容主要为本数据帧的ID信息(标识符),标准格式的ID为11位,扩展格式的ID为29位
    ​ 报文的优先级通过对ID的仲裁来确定,总线上同时出现显性电平和隐性电平,总线的状态会被置为显 性电平
    ​ 两个节点同时竞争CAN总线的占有权,当它们发送报文时,首先出现隐性电平,会失去对总线的占有权,进入接收状态

CAN协议
所有连接到CAN总线的节点都会收到所有其它节点发出的有效数据
RTR,远程传输请求位,区分数据帧和遥控帧,显性电平表示数据帧,隐性电平表示遥控帧
IDE,标识符扩展位,区分标准格式和扩展格式,显性电平表示标准格式,隐性电平表示扩展格式
SRR,仅存在扩展格式,用于替代标准格式的RTR位,隐性位

  • 控制段
    r0和r1为保留位,默认设置为显性位,数据长度码(DLC段)由4个数据位组成,用于表明报文中的数据段的字节数(0~8)

  • 数据段
    数据帧的核心内容,节点发送的原始信息,0~8个字节,MSB先行

  • CRC段
    ​ 15位CRC校验码,由CAN控制器硬件完成,由软件控制最大重发数

  • ACK段

    ​ 包括1个ACK槽位和1个ACK界定符;发送节点发送的ACK槽位是隐性位,接收节点在这一位发送显性位应答;ACK槽位和帧结束之间由ACK界定符间隔
    CAN协议