漫谈汽车通信

技术贴 · 2026.4.12

今天我们来聊一聊汽车通信的那些事。

先说说什么是通信?360百科上这样解释:通信就是信息的传递,是指由一地向另一地进行信息的传输与交换,其目的是传输消息。具体到我们车上,就是我按下电动车窗按钮,按钮状态传递给BCM(车身控制器),BCM输出控制信号传递给车窗电机,玻璃就跟着升起来了;一脚踩下油门,踏板开度大小信号传递给整车控制器,整车控制器输出需求信号传递给电机控制器,电机控制器控制电机提高输出功率等等。正是信号的传递交流才使汽车成为一个有机的整体,可以说没有通信,汽车就只是一具驱壳!

那么车上的零部件如此之多,传递的信息流又如此繁杂,如何实现相互之间的信息交流呢?在说汽车通信之前,今天我想先介绍一下与通信相关的基础知识。

并行通信按照传递信息的通道数量,通信方式分为串行通信和并行通信。串并行的命名在这里很形象。串行就是把我要发的数据,按位一个个排成一串在一根信号线上发送或接收。而并行通信有点简单粗暴,传送一个数据有多少位就连接多少根信号线,一下子传输过去。以车为例,比如VCU要对BCU发送一个电流大小请求信号,信号值100A。(仅仅举个例子,真实车上这些信号是在现场总线上传输的)。先将100转换为二进制01100100,电流大小100A的请求信号通过串口和并口方式传输的过程,如图1所示。

测试.md

串行和并行传输数据在早期I/O速率不高的情况下,串行口传送一个位的时间,并行口可以传送一个字节。但随着芯片技术的发展,串行通信的速率随I/O速率大幅提升。并行通信相较于串行通信,对信号线的数据同步要求很高,必须确保每条信号线上的数据位同时发送同时被接收,否则通信就会出错。多条信号线并列传输电平信号,线与线之间很容易产生互感互容,若电平变化太快,还会引起串扰,产生信号噪音。因此,无论从保证信号的数据位同步还是信号的传输质量来说,都不允许并行通信的时钟频率设置太高,限制了通信速率的进一步提升。在当下高速传输中,人们首选串行通信。另一方面,并行通信还占用了有限的IO口资源。因此串行通信的应用比并行要广泛很多。

串行通信串行通信的种类就比较多了,根据收发双方是否使用同一时间基准,分为异步和同步。异步串口常用异步串口通信方式有UART和USB,由于异步串口通信双方使用各自的时钟信号,这样在数据位的收发时间上难免会有延迟误差,误差累积下去就会形成通信错误。为避免这种误差累积,我们需要在异步通信的传送规则中增加时间约定和控制信息。以UART为例,传送一帧数据需要包含以下部分:基本是异步串口通信中最简单的数据帧结构。规定信号线空闲状态下持续输出1,当要传送数据时,先发送一位0作为起始位,接收方收到0后,开始接收数据,数据接收完后可以根据需求确定要不要设置校验位,确定收发的数据是否一致,常用奇偶校验、循环冗余校验等方法。最后设置停止位,即规定连续采集多少位的空闲状态就可以确定数据传送完毕。数据传送完毕,信号线进入空闲状态,直到下一次采集到0,重新开始收发数据。例如,设置单片机的UART口通信参数9600/n/8/1,9600是单片机的波特率大小即串口通讯速率,可以简单理解为单片机1s可以传送9600个数据位(这样理解其实是有瑕疵的,想深究的同学可以去查一下波特率和比特率的关系,这里不作扩展)。“9600/n/8/1”就表示数据位宽是1/9600s,无校验位,数据位是8位,1位停止位。

同步串口同步串口相比异步串口增加了同步控制信号,使双方设备收发信号使用同一个时钟信号。常用的同步串口通信方式有SPI、I2C等。下面我们看一下,UART(异步)和SPI(同步)通信在结构上有什么差别。图3.UART和SPI通信连接图

模板

很明显SPI相比于UART多了一条时钟信号线CLK。利用CLK信号的上下跳变来触发双方设备对数据位的发送和接收。这样SPI通信可以直接通过时钟信号线来同步双方设备数据位的收发,就不用像UART那样设置那么多的“规则”来保证数据位的同步,而且同步效果比UART好很多。

电平高低实现数据通信,大多通过高低电平表示0、1来传递信息,当然也有用光信号、电磁波的,这里不作讨论。电平的高低的表达方法主要有两种:一种是用信号线和地线之间的电压差表示,另一种采用电压变化相反的两根线,利用两根线之间的差分电压表示。如图2所示。图4.高低电平的表达方法方法②中的两根信号线通常缠在一块,即使受到外界干扰,信号线1和信号线2电平变化的方向和幅度也近似相等,两者之间的电压差可以基本保持不变。所以差分电压表示电平高低相比于第一种方法,抗干扰能力更强,允许的通讯速率也更高。汽车上的CAN总线就是利用双绞线之间的差分电压来表示电平高低的。

电平标准用电平的高低来表示0、1,那么这个高与低又是如何来进行定义和区分的?现下比较通用的电平标准有TTL、RS-232、RS-485等。TTL信号标准主要应用在5V电压源下工作的单片机中,电平高于2.4V表示传送1(常用3.5V),低于0.4V表示传送0(常用0.2V)。RS-232标准多用于计算机的通讯COM口,电平-3~-15V表示逻辑1,3~15V表示逻辑0,-3~3V毫无意义。可见,并不是说高电平就一定表示逻辑1。一切都取决于我们如何定义它。

篇幅有限,今天就先介绍到这里吧!双节将至,小编在这里祝“四杯咖啡”的各位茶客节日快乐!下期,我们不见不散~

See you next time!

在站点中打开 →