一、摘要
1.描述
本文主要描述的是汽车行业中CAN矩阵的内容,主要描述我们当拿到一份矩阵表的时候如何去看懂内容。
2.关键字
CAN,CAN矩阵,矩阵详解,通信协议,汽车总线。
二、什么是CAN
CAN 是Controller Area Network 的缩写(以下称为CAN),是ISO国际标准化的串行通信协议。在汽车产业中,出于对安全性、舒适性、方便性、低功耗、低成本的要求,各种各样的电子控制系统被开发了出来。
CAN总线是德国BOSCH公司从80年代初为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议,它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维。通信速率最高可达1Mbps,我们这儿主要讲的是低速CAN,非CANFD。
1.报文格式
在总线中传送的报文,每帧由7部分组成。CAN协议支持两种报文格式,其唯一的不同是标识符(ID)长度不同,标准格式为11位,扩展格式为29位。
在标准格式中,报文的起始位称为帧起始(SOF),然后是由11位标识符和远程发送请求位 (RTR)组成的仲裁场。RTR位标明是数据帧还是请求帧,在请求帧中没有数据字节。
控制场包括标识符扩展位(IDE),指出是标准格式还是扩展格式。它还包括一个保留位 (ro),为将来扩展使用。它的最后四个位用来指明数据场中数据的长度(DLC)。数据场范围为0~8个字节,其后有一个检测数据错误的循环冗余检查(CRC)。
应答场(ACK)包括应答位和应答分隔符。发送站发送的这两位均为隐性电平(逻辑1),这时正确接收报文的接收站发送主控电平(逻辑0)覆盖它。用这种方法,发送站可以保证网络中至少有一个站能正确接收到报文。
报文的尾部由帧结束标出。在相邻的两条报文间有一很短的间隔位,如果这时没有站进行总线存取,总线将处于空闲状态。
2.数据帧格式
远程帧:
远程帧由6个场组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。远程帧不存在数据场。
远程帧的RTR位必须是隐位。
DLC的数据值是独立的,它可以是0~8中的任何数值,为对应数据帧的数据长度。
错误帧:
错误帧由两个不同场组成,第一个场由来自各站的错误标志叠加得到,第二个场是错误界定符
错误标志具有两种形式:
活动错误标志(Active error flag),由6个连续的显位组成
认可错误标志(Passive error flag),由6个连续的隐位组成
错误界定符包括8个隐位
超载帧:
超载帧包括两个位场:超载标志和超载界定符
发送超载帧的超载条件:
要求延迟下一个数据帧或远程帧
在间歇场检测到显位
超载标志由6个显位组成
超载界定符由8个隐位组成
3.数据错误检测
循环冗余检查(CRC):
在一帧报文中加入冗余检查位可保证报文正确。接收站通过CRC可判断报文是否有错。
帧检查:
这种方法通过位场检查帧的格式和大小来确定报文的正确性,用于检查格式上的错误。
应答错误:
如前所述,被接收到的帧由接收站通过明确的应答来确认。如果发送站未收到应答,那么表明接收站发现帧中有错误,也就是说,ACK场已损坏或网络中的报文无站接收。CAN协议也可通过位检查的方法探测错误。
总线检测:
有时,CAN中的一个节点可监测自己发出的信号。因此,发送报文的站可以观测总线电平并探测发送位和接收位的差异。
位填充:
一帧报文中的每一位都由不归零码表示,可保证位编码的最大效率。然而,如果在一帧报文中有太多相同电平的位,就有可能失去同步。为保证同步,同步沿用位填充产生。在五个连续相等位后,发送站自动插入一个与之互补的补码位;接收时,这个填充位被自动丢掉。例如,五个连续的低电平位后,CAN自动插入一个高电平位。CAN通过这种编码规则检查错误,如果在一帧报文中有6个相同位,CAN就知道发生了错误。
三、CAN矩阵
在汽车行业开发的过程中,凡是挂在CAN总线上的产品,客户都会给一份CAN矩阵表,如何去读懂CAN矩阵表显得尤为重要,前面我们讲了CAN的基本概念,相信大家对CAN有一个初步的了解,下面我以某个车厂的CAN矩阵表为例来说明。
1.矩阵表

2.报文名称
Msg_Name主要是通过名称就能区分我们平时描述的是哪条报文,这个名称一般是唯一的,就像人的名称一样,一般客户也不是随便定义该名称,当然这个名称也可以随意定,一般定义的格式就是该报文发送的节点加上报文的标识符。
例如.BCM_ALS_0x2F3 代表BCM_ALS为节点BCM转发ALS发送的报文,报文标识符为0x2F3。
3.报文类型
Msg_Type主要描述的是报文类型,在汽车行业中,报文主要类型有应用报文,网络管理报文,诊断报文。
应用报文 Normal: Normal Communication message;
网络管理报文 NM:Network Mangment message;
诊断报文 Diag: Diagnostic message。
4.报文标识符
Msg_ID是Message identifier的缩写,在矩阵表中,一般同一个报文标识符的内容放在一起,方便他人阅读,这个标识符是我们CAN总线上的唯一标识符,不可与其他信号重复,在矩阵表中,一般加上0x开头,代表16进制显示,在前面已经提到过在标准帧CAN的标识符大小为11位,所以一般大小为0x00 - 0x7FF;扩展帧我们这儿不做描述,因为一般车厂使用的都是标准帧,很少采用扩展帧。
5.报文发送类型
Msg_Send_Type表示的是报文发送的类型,在汽车行业中,报文发送的类型一般主要有事件型,周期型,周期事件型,使能型,周期使能型等,其他的类型我在这儿不做描述。
- 事件型(Event)
事件报文的发送取决于事件是否触发,事件发生改变时,按照矩阵发送事件报文,非触发事件发生改变时不允许触发发送事件报文,事件型报文一般车厂都会要求一个事件触发的时候发送多次,为了避免报文丢失,每帧之间也会限定一个帧与帧之间的最小间隔。下图为最小间隔20ms,当在事件报文发送 20ms 之后有新的事件发生,则发送新的事件报文,丢弃上一个事件报文;当在事件报文发送 20ms 之内有新事件发生,则新事件报文延迟到 20ms 之后发送。

- 周期型(Cycle)
报文以一定的间隔时间循环发送,报文的发送周期在矩阵表都会有体现,开发的时候必须

本文深入解读CAN矩阵在汽车行业的应用,详细阐述了CAN总线通信原理、矩阵表结构及其各项参数含义,包括报文格式、数据错误检测、信号定义与处理,以及高效解析方法。
最低0.47元/天 解锁文章
804





