CAN总线技术 | 物理层01 - CAN信号电平

一、前言


广州虹科录制的CAN总线技术课程非常不错,建议同学们学习一下。B站的地址:https://www.bilibili.com/video/BV1gD4y1U7bJ?p=1

CAN总线定义了OSI模型里的物理层与数据链路层。
CAN-OSI
RS485通讯跟CAN通讯在物理层在某些内容很相似(比如120欧终端电阻,特性阻抗120欧的双绞线缆等)。但是,RS485只定义了OSI模型里的物理层而已。
RS485

二、CAN信号的电平


一般所说的CAN总线,其实就是指ISO11898标准的高速CAN,最高的波特率是1Mbps,电位差分别是2.00V(显性0)与0V(隐性1)。ISO11519-2标准的是低速容错CAN,最高的波特率是125Kbps,它主要用于汽车上。从表格看到,低速容错CAN加大了电位差,所以电信号通讯的效率变低。高速CAN与低速CAN在显性与隐性时的电位差不一样,所以用示波器捕捉电平后就能区别出高速CAN与低速CAN。
在这里插入图片描述
在这里插入图片描述

三、为什么要采用两根线(双绞线)的差分电平信号?

例如在工厂里,会有各种各样的设备摆在一起,组成一条流水线。在这种情况下,很大概率会有干扰产生。双绞线传输差分信号时受到共模信号干扰后,电平差值不变(差模信号没有收到影响,因为两根线的差值保持不变),信号解码保持正常。但是需要注意的是,如果线缆双绞的程度不正确,将会导致共模干扰无法消除。

差模又称串模,指的是两根线之间的信号差值;而共模噪声又称对地噪声,指的是两根线分别对地的噪声。
共模信号

总之,设计CAN总线的同学,千万不能分别用两根单芯线来传递CAN信号,根本没法对抗干扰。

四、线与原理

多个CAN节点并接到同一总线时,只要其中一个节点输出低电平,总线就为低电平,当所有节点输出高电平时,总线才为高电平。CAN总线利用线与原理来实现仲裁机制,后续在数据链路层讲到。
在这里插入图片描述

### CAN协议中显性电平的定义 在CAN通信协议中,显性电平对应于总线上的特定高低电平状态。当TXD输出低电平时,表示显性位,此时CANH线路呈现高电平CANL线路呈现低电平[^1]。这种状态下,两条信号线之间的电压差较大,从而形成明显的逻辑“0”。相反,在隐性电平下,TXD输出高电平,此时CANH和CANL均处于阻抗状态(记作Z),其实际电压约为Vcc/2,通常为2.5伏特。 为了提高抗干扰能力并确保数据传输可靠性,CAN协议采用了差分信号机制。通过这种方式,即使存在外部噪声影响,接收端仍能依据两根导线间电压差异准确判断当前所发送的是显性还是隐性电平[^2]。 值得注意的是,尽管标准CAN具备一定容错功能,但在某些特殊情况下如高速CAN网络里如果发生诸如CAN低线接地短接或者末端匹配电阻断开等问题,则可能仅维持有限程度正常通讯操作[^3]。因此,在布设CAN总线时应遵循严格规范,切忌单独利用双股独立芯线作为载体以免削弱系统抵抗电磁干扰的能力[^4]。 ```python # 示例代码展示如何检测CAN总线上显性和隐性电平 def check_can_levels(can_h, can_l): if abs(can_h - can_l) >= 2: # 假定阈值大于等于2V代表显性电平 return "Dominant" elif abs(can_h - can_l) < 1: # 阈值小于1V视为隐性电平 return "Recessive" else: return "Undefined" # 测试函数 print(check_can_levels(3.5, 1)) # 应返回 Dominant print(check_can_levels(2.7, 2.3)) # 应返回 Recessive ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

Wallace Zhang

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

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

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

打赏作者

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

抵扣说明:

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

余额充值