CAN总线(一)

CAN总线:实现多设备高效通讯

CAN总线(Controller Area Network Bus)即控制器局域网络总线,是一种由博世(BOSCH)公司开发的串行通信总线。由于其结构简洁、传输速度快、易于扩展以及高可靠性,CAN总线已经广泛应用于汽车、嵌入式系统、工业控制等多个领域。

CAN总线特性

CAN总线的主要特性包括:

  1. 两根通信线:CAN总线仅需要两根线——CAN_H(高速)和CAN_L(低速),这两根线用于差分信号传输,因此不需要共地。

  2. 差分信号通信:通过CAN_H和CAN_L两根线的电压差来传输信号,这使得CAN总线具有很强的抗干扰能力。

  3. 高速CAN和低速CAN

    • 高速CAN(符合ISO11898标准)支持125kbps至1Mbps的传输速率,适用于传输距离较短的场合(小于40米)。
    • 低速CAN(符合ISO11519标准)支持10kbps至125kbps的传输速率,适用于传输距离较长的场合(小于1千米)。
  4. 异步通信:CAN总线上的通信不需要时钟线,各设备根据约定的速率进行通信。

  5. 半双工通信:CAN总线支持多设备挂载,当多个设备同时发送数据时,通过仲裁机制决定数据的传输顺序。

  6. 报文ID:CAN总线使用11位或29位的报文ID来标识不同的消息功能,并且决定了消息的优先级。

  7. 灵活的数据长度:有效载荷的长度可配置,从1到8字节不等,根据传输需求灵活设定。

  8. 广播式和请求式传输:CAN总线支持广播式和请求式两种数据传输方式。

  9. 丰富的错误处理机制:包括应答、CRC校验、位填充、位同步以及错误处理等特性,确保通信的可靠性。

只需要两根通讯线,因为是差分信号,所以无需共地,I2C是单端信号需要共地
多数使用高速CAN
串口一次只能发送一个字节,CAN一次能发送1~8个,灵活指定数据长度
广播式就是一个设备主动发送数据,其他所有设备都能收到,然后接收方通过报文ID来决定用不用这个数据
请求式就是发送方不会主动发送数据,只有收到接受方发出的请求,发送方才会发送数据

CAN总线与其他通讯协议的对比

下表列出了CAN总线与其他常见通讯协议的对比:

名称引脚双工时钟电平设备应用场景
UARTTX、RX全双工异步单端点对点两个设备互相通信
I2CSCL、SDA半双工同步单端多设备一个主控外挂多个模块
SPISCK、MOSI、MISO、SS全双工同步单端多设备一个主控外挂多个模块(高速)
CANCAN_H、CAN_L半双工异步差分多设备多个主控互相通信

CAN总线硬件电路设计与工作原理

CAN硬件电路组成

每个设备通过CAN收发器挂载在CAN总线网络上。CAN控制器的TX和RX引脚与CAN收发器相连,CAN收发器再将CAN_H和CAN_L引脚分别与总线的CAN_H和CAN_L相连。
在这里插入图片描述

高速CAN与低速CAN的终端电阻

  • 高速CAN:使用闭环网络,在CAN_H和CAN_L两端添加120Ω的终端电阻。
  • 低速CAN:使用开环网络,在CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻。

TX和RX的连接

TX接TX,RX接RX,无需交叉。这样的连接方式确保了数据的正确传输。

高速CAN终端电阻的作用

1.防止回波反射:信号波形会在线路终端反射,进而干扰原始信号。加了终端电阻且阻抗匹配后,信号波形能平稳输出。
尤其是高频信号、远距离传输的场景,如果不加终端电阻,信号波形会在线路终端反射,进而干扰原始信号 最终的波形可能是这样,当信号跳变时。它会在边沿振荡几下。如果加了终端电阻且阻抗匹配就能平稳输出
在这里插入图片描述

  1. 收紧差分线电压:在没有设备操作时,终端电阻将两根差分线的电压“收紧”,使其电压一致。这样,在发送0时,只需将两端拉开;发送1时,无需操作,因为两端会默认收紧。

低速CAN终端电阻的作用

低速CAN的终端电阻接法比较特殊,其一端接到总线,另一端是悬空的。虽然从原理上看,这个电阻似乎没有作用,因为它没有形成回路,但事实上,它仍然可以起到防止回波反射的作用。此外,这两个电阻没有连在一起,因此没有“收紧”作用。

CAN的电平标准

在这里插入图片描述

CAN总线采用差分信号,即两线电压差(VCAN_H-VCAN_L)传输数据位。

  • 高速CAN:电压差为0V时表示逻辑1(隐性电平),电压差为2V时表示逻辑0(显性电平)。
  • 低速CAN:电压差为-1.5V时表示逻辑1(隐性电平),电压差为3V时表示逻辑0(显性电平)。

高速CAN,总线回归隐性电平快,传输速度就会快。低速CAN,总线回归隐性电平慢,传输速度自然就慢

高速CAN收发器工作原理

在这里插入图片描述

在这里插入图片描述

当总线(CANH-CANL)有电压差时,收发器输出1;没有电压差时,输出0。
然后这个1和0,通过左边两个场效应管的输出驱动器输出到RXD引脚,这两个管,你就当成是电子开关
右边为1时,上管断开,下管导通,输出0。右边为0时,上管导通,下管断开,输出1。所以这两个管还有个电平反相的功能。
最终整体上看,当CAN总线有电压差时,输出RXD引脚为低电平0,表示显性电平。
CAN总线没有电压差时,输出RXD引脚为高电平1,表示隐性电平。

所以RXD这块是输入部分,那上面TXD这一块,就是输出部分了
当TXD给1时,后面这个驱动器(DRIVER)就会让这边两个场效应管都断开,相当于不对总线进行任何操作
总线在外边终端电阻的收紧作用下呈现默认的隐性电平

电流源上拉的作用

在这里插入图片描述

电流源上拉的作用是,如果TXD悬空了,那么这里会保持默认输入1的状态,防止输入引脚电平不确定造成误操作。

中拉电阻

内部还有两个电阻,被称为“中拉电阻”。它们可以将CANH和CANL两根线都拉到0.5倍VCC的中间电平,也就是使CANH和CANL的默认对地电压都是2.5V左右。同时,这两个电阻也有一定的收紧作用,但它们的阻值比较大,因此收紧作用,主要还是靠外面的终端电阻来实现。
当TXD给0时,两个管导通,相当于两只手,上面的手,将CANH电压拽高。下面的手,将CANL的电压拽低。这样两线就会分开,产生电压差。总线呈现显性电平0的状态
在这里插入图片描述

CAN物理层特性

在这里插入图片描述

总结

CAN总线以其独特的优势,如简洁的线缆、高效的传输、强大的抗干扰能力以及完善的错误处理机制,在多个领域内得到了广泛的应用。无论是汽车的多ECU系统,还是工业控制网络,CAN总线都能提供稳定可靠的通讯保障。理解和掌握CAN总线技术,对于嵌入式系统开发者来说,是一门重要的技能。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

成了大锦鲤

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

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

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

打赏作者

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

抵扣说明:

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

余额充值