can总线总结-硬件

来源:互联网 发布:云计算idc业务 编辑:程序博客网 时间:2024/06/06 13:24

CAN2.0A/B标准规定:总线空闲时,CAN_H和CAN_L上的电压为2.5V
在数据传输时

显性电平(逻辑0):CAN_H3.5V      CAN_L 1.5V 

隐性电平(逻辑 1):CAN_H 2.5V     CAN_L 2.5V   “显性”具有“优先”的意味

同时开始发送时,各发送单元从仲裁段的第一位开始进行仲裁。连续输出显性电平最多的单元可继续发送。

所有单元必须设定成统一的通信速度,可通过发送“遥控帧”  请求其他单元发送数据。

 

Physical Layer

信号电平
信号传输、抗干扰
位定时、同步
位编解码

Data Link Layer

总线仲裁机制

位填充机制机制

can 报文帧结构
报文打包
can 总线容错
网络负载率

Application Layer

j1939 本质
如何将29ID分类
j1939 组织架构
协议查找

 

 

总线速率


通信是通过以下5 种类型的帧进行的。 数据帧 ,遥控帧 ,错误帧 ,过载帧 ,帧间隔 

数据帧  用于发送单元向接收单元传送数据的帧。 
遥控帧  用于接收单元向具有相同ID 的发送单元请求数据的帧。 
错误帧  用于当检测出错误时向其它单元通知错误的帧。 
过载帧  用于接收单元通知其尚未做好接收准备的帧。 
帧间隔  用于将数据帧及遥控帧与前面的帧分离开来的帧。 
 

数据帧的结构

 

帧起始:1bit 。从图中看出,在帧间隙后由逻辑1 (至少两个bit)向逻辑0 的跳变就被认为是帧起始,它的作用就是为了硬同步。
仲裁场:由29bit 的ID标示符和IDE 、SRR 、RTR 位构成。IDE 位用于标示该帧是扩展帧(29bit ID)还是标准帧(11bit ID );

控制场:包括两位保留位(必须为0),和数据长度位(DLC0~DLC3)
数据场:包括最多8个字节的数据
CRC 场:是一种算法,对数据进行CRC 校验,共15bit,其后跟了一位CRC 界定符——为1(隐性电平)
应答场:为两个1(总线电平为低电平),其中一位为应答间隙,另一位为应答界定符。成功接收到数据的节点必须发送一位显性位(总线电平为高电平)来应答该发送节点,必须注意:该显性位必须在应答间隙期间,即1bit 的时间内将总线电平拉高。
帧结尾:7个连续的1组成(隐性电平)

SRR 在扩展帧中为一隐性位;RTR位为远程帧标志位。
由上图可以看出,11bit的基本ID首先被发送(ID28~ID18),然后在发送18bit的扩展ID(ID17~ID0 )

 

数据帧:帧起始+仲裁段+控制段+数据段+ CRC段+ ACK段

1.      帧起始(SOF 1bit):1bit:0

2.      仲裁段:

a)        :标准格式(基本ID+RTR:11bit+1bit=12bit):ID+1;(ID的高7位必须有0)

b)       :扩展格式(基本ID+SRR+IDE+扩展ID+RTR:11bit+1bit+1bit+18bit+1bit=32bit);

ID+1+1+EID+1; (ID的高7位必须有0)

3.      控制段:

a)        :标准格式(基本IDE+r0+DLC:1bit+1bit+4bit=6bit):1+1+DLC;(DLC:0到8)

b)       :扩展格式(基本IDE+r1+r0:1bit+1bit+4bit=6bit):1+1+DLC;(DLC:0到8)

4.      数据段(0到8字节max 64):(发送时MSB开始输出);

5.      CRC段(CRC+CRC界定符:15bit+1bit=16bit):CRC+1

6.      ACK段(ACK槽+ACK界定符:1bit+1bit=2bit):发送方:1+1

Xxx帧结束(EOF:7bit):7个位的1。

 

0xxxxxxx xxxx111xxxxdata(0-64) crc(15)111

 

 

CAN总线通过如下几个方面进行错误检测

(1)当节点赢得总线发送权后,会对总线电平进行检测,当发送的电平和检测到的总线电平不一致时,认为错误
(2)出现6个连续相同的电平时,认为是填充错误
(3)CRC 错误,接收数据的节点按照与发送数据的节点相同的方法计算数据的CRC 校验值,如果接收节点的计算结果与数据包中CRC 场的数据不一致,认为是CRC 错误
(4)应答错误,在应答场如果没有监控到一个显性电平,那么就认定一个应答错误
(5)固定位错误,例如:CRC 界定符等,其电平是固定的,当监控到该电平不相符时,认定一个错误
另:总线同步机制也是CAN总线容错的一种方式

标准格式的ID 有11个位。从ID28 到ID18 被依次发送。禁止高7 位都为隐性。 (禁止设定:ID= 1111111 XXXX ) 
扩展格式的ID 有29个位。基本ID 从ID28 到ID18,扩展ID 由ID17 到ID0 表示。基本ID 和标准格式的ID 相同。禁止高7 位都为隐性。(禁止设定:基本ID= 1111111 XXXX )