CAN出现的原因:为什么要提出CAN协议为了减少线束数量,通过多个LAN进行大量的数据高速通讯,本质是为了节省成本,减少工程使用的复杂度,提供产品的可靠度。
时间节点 :1986博世提出CAN协议1993年ISO发布CAN标准ISO11898(118我要发发了去98酒吧) 高速CAN以及ISO11519(115 我要19药酒)低速CAN。
低速CAN通信速率:10-125K 长度可以达到1000米,越慢反而距离越远
高速CAN通讯速率:125-1M <=40M 距离好近
- CAN2.0A定义了11位标识符,适用于标准帧。
- CAN2.0B扩展了标识符的长度,定义了29位标识符,适用于扩展帧。
CANFD 通讯速率5M,并且兼容经典CAN,遵循IS011898-1做数据收发
CAN的结构图:
CAN中断电阻2个作用:1.传输线理论减少波形反射 2.收紧CAN的电平状态
2.2K电阻放置回波反射作用
仲裁段到RTR:标准数据帧11+1 12位,
扩展帧组成:
标准帧组成:
扩展帧11+2+18+1=32位
- RTR位(Remote Transmission Request Bit),译作远程传输请求位,它是用于
- 区分数据帧和遥控帧的,当它为显性电平时表示数据帧,隐性电平时表示遥控
- 帧。
- • IDE位(Identifier Extension Bit),译作标识符扩展位,它是用于区分标准格式
- 与扩展格式,当它为显性电平时表示标准格式,隐性电平时表示扩展格式。
- • SRR位(Substitute Remote Request Bit),只存在于扩展格式,它用于替代标
- 准格式中的RTR位。由于扩展帧中的SRR位为隐性位,RTR在数据帧为显性
- 位,所以在两个ID相同的标准格式报文与扩展格式报文中,标准格式的优先级
- 较高。
- 控制段
- 在控制段中的r1和r0为保留位,默认设置为显性位。最主要的是DLC段(Data
- Length Code),译为数据长度码,它由4个数据位组成,用于表示本报文中的数
- 据段含有多少个字节,DLC段表示的数字为0~8。
- 数据段
- 数据段为数据帧的核心内容,它是节点要发送的原始信息,由0~8个字节组成,
- MSB先行。
- CRC段
- 为了保证报文的正确传输,CAN的报文包含了一段15位的CRC校验码,一旦接收节点算出的CRC码跟接收到的CRC码不同,则它会向发送节点反馈出
- 错信息,利用错误帧请求它重新发送。CRC部分的计算一般由CAN控制器硬件完成,出错时的处理则由软件控制最大重发数。
- 在CRC校验码之后,有一个CRC界定符,它为隐性位,主要作用是把CRC校验码与后面的ACK段间隔起来。
- ACK段
- ACK段包括一个ACK槽位,和ACK界定符位。类似I2C总线,在ACK槽位中,发
- 送节点发送的是隐性位,而接收节点则在这一位中发送显性位以示应答。在ACK
- 槽和帧结束之间由ACK界定符间隔开。
- 帧结束
- EOF段(End Of Frame),译为帧结束,帧结束段由发送节点发送的7个
- 隐性位表示结束。