车载总线简介

本文详细介绍了车载总线技术,包括CAN、LIN、I2C、GMSL和以太网等,并对比了它们的速度、结构和应用场景,特别关注了CAN在汽车行业的广泛应用以及串行总线如LIN的低速优势。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    车载总线,通常包含can,can-fd,lin,flexray,most,gmsl千兆多媒体串行链路,以太网,SPI,uart等。汽车总线布线图,如下所示:

                                                                     车载总线布线图1

                                                                     车载总线布线图2

                                                                                  车载总线布线图3

  1TPCE =1个双绞线 100 Mb/s 以太网。RTPGE =减少的双绞线千兆位以太网

1 can协议简介

 CAN:Controller Area Network,控制器局域网络总线。控制单元通过CAN网络交换数据。它是由德国博世公司于上世纪80年代初,为了解决众多传感器与执行器之间的数据交换而开发的一种串行通讯协议。绝大多数汽车制造厂商采用CAN总线来实现汽车内部控制系统之间的数据通信。

       can是一种总线,也是一种协议。CAN协议和CANOpen协议是两套不同的协议。从软硬件层次来划分,CAN协议属于硬件协议,而CANOpen属于软件协议。CAN网络可以理解为多台CAN设备连接在同一条CAN总线上组合成的网络,其中的CAN设备我们称之为节点。

一个CAN节点主要包含三类:MCU应用程序、CAN控制器、CAN收发器。

1.1 MCU应用程序

MCU应用程序我将其分为三块:业务逻辑代码、协议层代码、底层驱动代码。

A.业务逻辑代码:是根据项目需求而定,比如读取一个传感器数据,并对其做出相应逻辑处理。

B.协议层代码:比如CANOpen。

C.底层驱动代码:配置CAN总线相应参数、控制收发的代码。

1.2 CAN控制器

CAN控制器内部结构还是挺复杂的,一般现在CAN控制器都是与处理器集成在一起。

其实对于编程的人来说,无非也就是包含一些控制、状态、配置等寄存器。

比如我们看到有些STM32芯片带有CAN,也就是说CAN控制器已经集成在STM32芯片中了,我们只需要编程操作其中的寄存器即可。

1.3 CAN收发器

CAN收发器:将CAN收发引脚(CAN_TX和CAN_RX)的TTL信号转换成CAN总线的电平信号。

PS:你可以把CAN总线通信认为是UART通过485进行通信:CAN控制器就如UART的控制器,而CAN收发器就如485转换芯片。

2 i2c

I2C总线是由Philips公司开发的一种简单、双向二线制同步串行总线。

1)在硬件上,I2C总线只需要一根SDA(串行数据线)和一根SCL(串行时钟线),总线接口已经集成在芯片内部,不需要特殊的接口电路。

2)连接到相同总线上的IC数量只受总线最大电容的限制,串行的8位双向数据传输位速率在标准模式下可达100Kbit/s,快速模式下可达400Kbit/s,高速模式下可达3.4Mbit/s。

3)总线具有极低的电流消耗,抗高噪声干扰,增加总线驱动器可以使总线电容扩大10倍,传输距离达到15m;兼容不同电压等级的器件,工作温度范围宽。

3 TDM

TDM(TimeDivisionMultiplex)时分多路复用,即在一个传输介质上传输多路数字化信号的技术,具有可靠、快速等特点。在MACH2系统中,TDM总线主要用于传输电压、电流等模拟信号,并具有以下特点:串行通讯连接,最大31个数据槽(每个数据槽32字节)加一个校验和数据槽,时钟频率达10.6MHz(32Hz/3),数据单向传输,一发多收。

4 GMSL

GMSL(Gigabit Multimedia Serial Links),中文名称为千兆多媒体串行链路,是Maxim公司推出的一种高速串行接口,适用于音频,视频和控制信号的传输。

通信介质支持同轴电缆以及屏蔽双绞线,使用50Ω同轴电缆或者100Ω屏蔽双绞线(STP)时,长度可达15m甚至更长

其核心技术为串行器/解串器技术,首先通过串行器将并行数据流转为串行数据流,然后通过更高的频率进行传输,之后通过解串器将接收到的串行数据流转换为并行数据流。

5 常用总线汇总

Can速度高100-500kbps

Lin是低速总线19200bs/9600bs-20kbps

I2C

低速,0-100kbps;

快速,400kbps;

高速,3.4Mbps。

SPI 5Mbpsuart 最高1.5Mbps
通信距离最远可达10km(速率低于5Kbps),速率最高可达到1Mbps(通信距离小于40M)全双工半双工,两线全双工,三线或四线全双工

CAN用于汽车中的高速和低速网络。

在高安全系数要求的医疗行业中也正在得到普及

LIN仅用于低速网络,如车顶、信号灯控制、汽车顶篷、车门、车窗玻璃、方向盘
方向控制开关、空调、座椅等等这些低速,校验不强的场景
可用来与EEPROM、ADC、DAC和LCD这类慢速器件进行通信常用于EEPROM或数模变换器的通信中UART用来与PC进行通信,包括与监控调试器和其它器件,如EEPROM通信
CAN收发器用的是TJA1050LIN收发器用的是TJA1020
物理层电平协议,Can是2.5V上下1VLin是12V

                                                                            车载串行总线对比

       

串行相比于并行的主要优点是要求的线数较少。例如,用在汽车工业中的LIN串行总线只需要一根线来与从属器件进行通信,Dallas公司的1-Wire总线只使用一根线来输送信号和电源。较少的线意味着所需要的控制器引脚较少。集成在一个微控制器中的并行总线一般需要8条或更多的线,线数的多少取决于设计中地址和数据的宽度,所以集成一个并行总线的芯片至少需要8个引脚来与外部器件接口,这增加了芯片的总体尺寸。相反地,使用串行总线可以将同样的芯片集成在一个较小的封装中。

         但另一方面,并行总线比串行速度快。例如,Rambus公司的“Redwood”总线速度可高达6.4GHz,而最高的串行速度通常几Mbps

### 车载总线失效原因分析 车载总线可能因多种因素而导致失效,这些因素通常涉及硬件层面、软件层面以及外部环境的影响。以下是可能导致车载总线失效的主要原因: #### 1. **物理层问题** 物理层问题是导致车载总线失效的常见原因之一。例如,CAN总线中的导线损坏、接触不良或者电磁干扰(EMI),都会影响信号传输的质量[^1]。此外,如果车辆处于极端温度环境下运行,可能会加速电缆老化或连接松动。 #### 2. **节点故障** 单个节点的故障也可能引发整个总线系统的异常行为。虽然星型拓扑结构具有良好的故障隔离特性[^2],但在环形或其他共享介质类型的网络中,某个节点发生短路或过载会直接影响其他设备的工作状态。 #### 3. **数据冲突与拥塞** 当多个设备尝试在同一时间发送消息时会发生碰撞现象;另外随着通信负载增加还可能出现带宽不足的情况——这两种情形均会造成延迟甚至丢失重要指令信息[]. ### 解决方案探讨 针对上述提到的各种潜在隐患, 可采取如下措施来提高系统可靠度并减少失败几率: #### 加强防护机制 为了应对来自外界因素(如噪声源产生的高频脉冲) 对敏感电子元件造成的损害 , 应该考虑安装滤波器 和屏蔽罩 来降低外来干扰 的影响程度 同时也要定期检查接头处 是否牢固以免长期震动引起虚焊等问题 出现 #### 实施自适应加密认证技术 通过引入基于压缩算法优化后的轻量级安全协议 不仅能够有效利用现有带宽资源 还可以在不显著提升计算成本的前提下增强抵御非法入侵的能力 如文中所描述的方法即是在不影响正常业务流程的基础上加入了额外的身份验证环节 从而达到双重保护的效果 #### 改善组网方式 对于采用分布式架构的产品来说 更倾向于选用具备较好容错特性的布线形式 比方说前述提及过的 星状布局 就因其固有的优势而在实际应用当中得到了广泛认可 它不仅可以快速定位具体哪个部位出了差错而且便于日后扩容升级操作 ```python def check_can_bus_health(voltage_level, signal_quality): """ A function to simulate checking the health of a CAN bus system. Args: voltage_level (float): The current voltage level on the CAN lines. signal_quality (int): Quality metric indicating how clean the signals are. Returns: str: Status message about the CAN bus condition. """ if voltage_level < 2 or voltage_level > 5: return "Voltage out of range! Check physical connections." elif signal_quality < 70: return "Signal quality degraded. Investigate EMI sources." else: return "CAN Bus operating within normal parameters." print(check_can_bus_health(3.3, 85)) ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

步基

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值