CAN协议
高可靠性和良好的错误检测能力
物理层
异步通讯,仅有CAN_High和CAN_Low两条信号线
闭环总线网络
高速、短距离的闭环网络,最大总线长度40m,最高通信速度1Mbps,总线两端要求各要求有120欧的电阻
开环总线网络
低速、远距离的开环网络,最大传输距离1km,最高通信速度125kbps,每根总线要求各串联一个2.2千欧的电阻
通讯节点
只要CAN总线的负载足够,网络中的节点理论上不受限制,可通过中继器增强负载
CAN收发器实现CAN控制器TTL电平信号和差分信号的相互转换
差分信号
通过两根信号线的电压差值表示逻辑0和逻辑1
差分信号传输优点:抗干扰能力强,有效抑制对外部的电磁干扰,时序定位精确(差分信号的开关变化位于两个信号的交点)
CAN协议差分信号
CAN协议标准表示的信号逻辑
CAN的差分信号(高速)
协议层
波特率及同步
位时序分解
CAN位时序分解图,每一个数据位分解为SS段、PTS段、PBS1段、PBS2段,分解后的最小时间单位是Tq,一个完整的位由8~25个Tq组成
- SS段(SYNC SEG)
同步段,通信节点检测到总线上信号的跳边沿被包含在SS端的范围之内,表示节点与总线的时序是同步的,大小固定为1Tq - PTS段(PROP SEG)
传播时间段,用于补偿网络的物理延时时间,总线上输入比较器延时和输出驱动延时总和的两倍,大小为1~8Tq - PBS1段(PHASE SEG1)
相位缓冲段,用来补偿边沿阶段的误差,在重新同步时可以加长 - PBS2段(PHASE SEG2)
另一个相位缓冲段,也用来补偿边沿阶段的误差,在重新同步时可以缩短
通讯波特率
约定1个Tq的时间长度和每一个数据位占据多少个Tq,可确定CAN通讯的波特率
同步过程分析
(1) 硬同步
节点检测到总线的帧起始信号不在节点内部时序的SS段范围,节点以硬同步的方式调整,把自己的位时序中的SS段平移至总线出现下降沿的部分
(2) 重新同步
利用普通数据位的高至低电平的跳变沿来同步,使用SS段进行检测,使节点内的SS段把跳变沿包含起来
相位超前重新同步:节点从总线的边沿跳变中,检测到它内部的时序比总线的时序相对超前2Tq,控制器在下一个位时序中的PBS1段增加2Tq的时间长度,使得节点与总线时序重新同步
相位滞后重新同步:节点从总线的边沿跳变中,检测到它内部的时序比总线的时序相对滞后2Tq,控制器在前一个位时序中的PBS2段减少2Tq的时间长度
报文种类及结构
报文的种类
数据帧结构
- 帧起始
SOF段(Start Of Frame),只有一个数据位,一个显性电平,用于通知各个节点将有数据传输,其它节点通过帧起始信号的电平跳变沿进行硬同步 - 仲裁段
仲裁段的内容主要为本数据帧的ID信息(标识符),标准格式的ID为11位,扩展格式的ID为29位
报文的优先级通过对ID的仲裁来确定,总线上同时出现显性电平和隐性电平,总线的状态会被置为显 性电平
两个节点同时竞争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界定符间隔