ECU和CAN总线

汽车内部有大量的ECU(电控单元),ECU和ECU是要通信的,这就需要用到CAN总线。使用CAN总线避免了各个ECU之间复杂的连接线束。

CAN控制器和CPU集成在一起形成一个单独的电子元件MCU。MCU和CAN收发器进行连接,MCU根据应用的逻辑信号0、 1转变成普通的低电平、高电平。0是低电平(显性),1是高电平(隐形)。CAN收发器把普通的电平变成两根导线的差分电平,通过CAN H和CAN L发送出去。

使用CAN高和CAN低两根线来发送信号,不易受外界电磁等原因的干扰,

一旦受到影响CAN高和CAN低的电压就都发生同样的变化,电压差还是保持不变的,因此不影响CAN信号的解析。

 

### CAN总线ECU反馈机制 在控制器局域网(CAN)协议中,电子控制单元(ECU)之间的通信通过报文形式实现。当一个节点发送一条消息时,其他所有连接到CAN总线上的节点都会接收到这条消息并判断其是否与自己有关。 #### 报文确认机制 每当一个节点成功发送一帧数据后,在该时间段内没有任何错误发生的情况下,接收方会自动发出应答位(Acknowledge Bit),表示已正确无误地收到了此条信息[^1]。如果发送者未能检测到来自任何接受者的肯定响应,则认为此次传送失败,并触发重传过程直到满足预设条件为止。 #### 错误处理流程 为了保证系统的稳定运行以及及时发现潜在问题,CAN采用了多种方法来监测可能出现的数据传输失误: - **循环冗余校验 (CRC)**:每条完整的CAN帧都附带有一个基于内容计算得出的校验码;一旦收件端验证不匹配即刻报告异常情况。 - **位填充(Bit Stuffing)**:为了避免连续多个相同级别的信号造成同步丢失风险,在特定条件下人为插入额外比特以打破这种模式。 - **主动错误标志(Active Error Flag)** **被动错误标志(Passive Error Flag)** :当前者被激活时意味着某处存在严重冲突需立即停止操作直至恢复正常;后者则允许有限度内的继续工作但同时记录下故障日志以便后续分析诊断[^2]。 ```python def check_crc(data, crc_received): """模拟CRC检验函数""" calculated_crc = calculate_crc(data) return calculated_crc == crc_received def handle_error(error_type): """根据不同类型的错误采取相应措施""" if error_type == "active": stop_transmission() elif error_type == "passive": log_error_and_continue() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

做一道光

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

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

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

打赏作者

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

抵扣说明:

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

余额充值