CAN总线原理-精华整理

B站影视 港台电影 2025-10-29 13:26 1

摘要:然后,1990年,奔驰S级车,第一次用了CAN总线,量产了,是个大事儿,1991年,CAN 2.0发布,分了A和B,1993年,成了国际标准了,ISO 11898,大家都得按这个来。

CAN总线:汽车ECU的“高效会议”,有点绕但挺实用

汽车里面的ECU,好多都需要互相说话,以前都是单独连线,点对点那种,太麻烦了,线太多,后来就得用总线了,方便多了。

CAN总线算是用的最多的,也比较安全,可靠,大家都在用,别的我也不太懂,反正它地位挺高的。

就想象成电话会议吧,好多人一起开会,CAN总线也差不多,但是谁先说,谁后说,得有个规矩,就像开会要有主持人,要仲裁一样,不然吵起来了。

这个"电话会议"有点不一样,说的人会确认听的人听清楚没,你要是没听懂,可以提问,或者说你听错了,挺靠谱的,比一般开会强多了,哈哈。

CAN,就是Controller Area Network,控制区域网络,主要就是解决汽车ECU之间,大家互相发信息的问题。

这玩意儿挺老的,1983年就开始搞了,Bosch和Intel一起弄的,厉害吧,1987年第一个CAN控制器芯片出来了,Intel做的,真牛。

然后,1990年,奔驰S级车,第一次用了CAN总线,量产了,是个大事儿,1991年,CAN 2.0发布,分了A和B,1993年,成了国际标准了,ISO 11898,大家都得按这个来。

用了CAN总线,大家都能共享信息,不用那么多线了,省钱,还靠谱,速度也挺快的,后来还有更快的,CAN-FD,CAN-XL,啥的,反正就是更快,用差分线,也不容易受干扰,抗干扰能力强,好多人都能说话,不用一个一个排队,线也少了,自己还能检查错误,挺智能的。

汽车工程师,天天跟CAN报文打交道,发动机控制单元EMS,大家都关心这个,你看,报文有个名字,EMS_Control,有个ID,0x100,像身份证一样,有个发送周期,10ms,多长时间发一次,有个长度,8个字节,64位,一堆0和1。

里面有信号,数值信号,比如发动机转速,EMS_RPM,有个范围,0到7650,还有系数和偏置,就是算的时候要用,还有标志位,比如EMS_FAIL_F,告诉你ECU有没有出错。

CANoe是个工具,能看到报文的布局,第几个字节,第几个位,数据都是0和1,最后都是0和1,记住了。

CAN消息帧,就是大家说话的标准语言,得按这个格式来,CAN2.0A,11位的ID,标准帧,CAN2.0B,29位的ID,扩展帧。

消息帧的类型,数据帧,就是发数据的,里面有一堆东西,帧起始,仲裁场,控制场,数据场,CRC场,应答场,帧结束,乱七八糟的。

仲裁场里的ID,最重要,决定了谁先说话,优先级高的先说,数据场,就是放数据的,0到8个字节,工程师最关心这个,别的格式不太重要。

CRC场,是用来检查错误的,发的人算一个值,收的人也算一个值,对上了,就说明没问题,对不上,就说明出错了,得重发,应答场,就是告诉发的人,我收到了,ACK=0,DEL=1,没收到,ACK=DEL=1。

远程帧,就是让别人发数据的,错误帧,就是告诉你出错了,节点有三种状态,主动错误,被动错误,总线关闭,看TEC和REC的值,就知道是什么状态了。

超载帧,就是加点延时,让你缓一缓,别太急,CAN总线的仲裁机制,就是保证开会秩序,谁官大谁先说,ID值越小,官越大,优先级越高,保证重要的报文先发。

“线与”机制,就是看看谁的ID小,谁的ID每位都是0,他的优先级才高,赢家通吃,CAN总线的位填充,就是防止同步丢失,就是说,你老发一样的,我怕你跟丢了,就给你加个不一样的,让你保持同步。

检测到5个连续的相同位,就插一个补码,就是0变1,1变0,SOF之后,到CRC之前,都要位填充,SOF之前的空闲区域,不用位填充,CRC之后,都是固定格式,也不能位填充,填充位也算到5个连续相同位的计数里面。

CAN总线的位时序,就是控制说话节奏,一个数据位的时间,跟波特率有关,大家得用一样的波特率,要不然就乱了,位时间分成了几段,同步段,传播段,相位缓冲段1和2,各有各的用处。

同步的方式,硬同步,和重同步,一个位时间,只能有一种同步方式,要么硬同步,要么重同步,从隐性到显性的下降沿,都可以用来同步,硬同步就是SOF位,重同步就是其他的位,相位缓冲段,可以调整,让你更准。

CAN总线,就是个挺复杂的玩意儿,但挺实用的,保证汽车里的ECU,能好好说话,大家都在想,这到底是怎么一回事,很多人看完这个故事,都会去想,这玩意儿到底有什么用,大家可以深入学习一下CAN总线,挺有意思的。

来源:电子小课堂一点号

相关推荐