关于CAN总线五种错误类型的再理解

好久没更新了,接触CAN总线已经一年了,自己最近对CAN总线的一些基础知识又回顾了一下。分享下自己对CAN总线五种错误类型的理解。

CAN总线五种错误类型包括:位错误、应答错误、填充错误、CRC错误、格式错误。

1.位错误:根据CAN协议,节点在发送信号的时候,会将自己发送到总线上的电平同时与从总线回读到的电平进行比较,如果内容不一致,就会产生bit check error

并不是回读到电平不一致就是位错误:如仲裁区回读、ACK回读、被动错误标志回读。

2.ACK错误:发送节点在总线发送一帧报文,如果其他节点接收了该报文,就要在该帧ACK段对应时间段向总线发送一个显性位来应答,发送节点就会在ACK段从总线回读到一个显性位,如果在ACK段时间段内没有回读到显性位,那么发送节点就会检测到一个ACK应答错误,表示没有一个节点成功接收该帧报文。

3.填充错误:在需要正常位填充的帧位置里检测到连续六个同性位,就检测到一个填充错误。

4.CRC错误:接收节点计算的CRC值和发送节点传输的CRC值不一致。

5.格式错误:在一帧报文里,在必须发送特定值的区域内检测到了非法值,就检测到一个格式错误。如:CRC界定符、ACK界定符等。

### CAN总线不同类型的错误标志及其含义 在CAN(Controller Area Network)总线通信协议中,为了确保数据传输的可靠性,定义了多种机制来检测并报告错误。其中一个重要方面就是错误标志,这些标志用于指示网络中的节点发现了某种形式的数据不一致或其他异常情况。 #### 主动错误标志 当某个节点处于主动错误状态下并且该节点检测到了一个或多个错误条件时,则会发送由六个连续显性电平组成的序列作为主动错误标志[^1]。这种信号非常强烈,在物理层面上能够覆盖其他任何正常消息的内容,从而有效地通知整个网络存在一个问题需要处理。 #### 被动错误标志 相比之下,如果一个设备处于所谓的“被动错误状态”,那么它会在发现错误的情况下发出不同的响应——即六位长度但全部为隐性级别的脉冲串形成被动错误标志。这种方式相对温和一些,不会像前者那样强行中断当前正在发生的通讯过程,而是作为一种较为委婉的通知方式提醒其它参与者注意潜在的问题。 通过这两种不同强度和作用范围内的标记手段相结合,CAN总线能够在保持高效运作的同时提供足够的容错能力以及自我修复的机会给各个连接在其上的电子控制单元(ECUs)。 ```python def can_error_flag(flag_type): """ 模拟生成CAN总线错误标志 参数: flag_type (str): "active" 或者 "passive" 返回: str: 对应类型的错误标志描述 """ if flag_type == 'active': return f'Active Error Flag: {"D"*6}' # 显性位表示为主动错误旗标 elif flag_type == 'passive': return f'Passive Error Flag: {"R"*6}' # 隐性位表示为被动错误旗标 else: raise ValueError('Invalid error flag type') ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值