当前位置: 首页 > news >正文

CAN总线物理层特性详细分析

目录

1.  简介

2.  CAN总线拓扑图

3.  CAN硬件电路

4.  CAN电平标准

5.  CAN收发器-TJA1050(高速CAN)

6.  CAN物理层特性


1.  简介

        CAN总线(Controller Area Network Bus)控制器局域网总线,是由BOSCH公司开发的一种简洁易用、传输速度快、易扩展、可靠性高的串行通信总线,广泛应用于汽车、嵌入式、工业控制等领域。下图是车载网络的构想示意图:

2.  CAN总线拓扑图

        CAN 控制器根据两根通信线(CAN_H、CAN_L)上的电位差来判断总线电平(差分信号)。总线电平分为显性电平(逻辑0)隐性电平(逻辑1),二者必居其一。发送方通过使总线电平发生变化,将消息发送给接收方。

        CAN总线是:异步,半双工。其无需时钟线,通信速率由设备各自约定,并且由于其半双工通信可挂载多设备,多设备同时发送数据时通过仲裁判断先后顺序。

        CAN总线的传输方式:广播式请求式

        广播式传输方式,你可以理解为一个人拿着大喇叭分配工作(发送方发送数据),其他人都可以听到这个喇叭喊话的声音(接收方接收数据),如果此时喇叭喊“张三”(报文ID),那么张三会站出来(响应)。

        请求式传输方式,也有一个人才分配工作,不过这个人不想拿着大喇叭主动吆喝别人过来(不主动发送数据),而是假如李四过来问能不能给我分配一个工作(接收方先请求),分配工作的人说可以,即可对李四分配工作(发送方发送数据)。

3.  CAN硬件电路

        在了解CAN总线的硬件电路之前我们先回顾一下其他通信协议:

名称引脚双工时钟电平设备
USARTTX、RX全双工异步单端点对点
IICSCL、SDA半双工同步单端多设备
SPISCLK、MOSI、MISO、CS全双工同步单端多设备
CANCAN_H、CAN_L半双工异步差分多设备
USBDP、DM半双工异步差分点对点

串口硬件连接电路:

IIC硬件连接电路:

SPI硬件连接电路:

        对于CAN总线的硬件电路,每个设备通过CAN收发器挂载在CAN总线网络上,CAN控制器引出的TX和RX与CAN收发器相连,CAN收发器引出的CAN_H和CAN_L分别与总线的CAN_H和CAN_L相连。CAN总线可分为高速CAN总线和低速CAN总线。

        高速CAN使用闭环网络,CAN_H和CAN_L两端添加120Ω的终端电阻,数据传输速率125k~1Mbps,传输距离小于40m:

        其中两个120Ω终端电阻的作用:

①防止回波反射,使波形更平稳;若是不加中断电阻,反射波形可能如褐色所示,加入中断电阻如紫色所示:

②在没有设备操作时,使电压“收紧”,使其电压一致。这里的原理可以类比IIC通信的上拉电阻

嵌入式面试八股文(一)·define和const的区别以及IIC为什么要加上拉电阻,为什么使用开漏输出-CSDN博客

         CAN总线是差分信号,所以终端电阻可以在没有设备操作时将两根线“收紧”至电压一致状态,代表就是默认的逻辑电平“1”,当设备想要“0”时,就去把总线拉开,当设备想要“1”时,就不去碰总线,在终端电阻的作用下,自动恢复到“1”:

        低速CAN使用开环网络,CAN_H和CAN_L其中一端添加2.2kΩ的终端电阻,数据传输速率10k~125kbps,传输距离小于1Km:

4.  CAN电平标准

        CAN总线采用差分信号,即两线电压差(V_{CAN_H}-V_{CAN_L})传输数据位,前面我们也了解了,CAN总线的信号分为高速和低速两种:

对于高速CAN规定:压差为0V时表示逻辑1(隐性电平)     

                                 电压差为2V时表示逻辑0(显性电平)

         对于这里的显隐性对应的逻辑状态可能会有人不解,因为通常情况下,我们应该显性对应1,隐性对应0,但是这里为什么反着来了呢?

        这里主要是因为显性和隐性所表示的是总线的收紧状态,前面我们了解到CAN总线的默认状态是CAN_L和CAN_H两条总线收紧状态,不需要设备干预所以是隐性电平,又知道总线收紧时其所对应的电平状态为逻辑电平“1”,而总线张开,需要设备干预所以为显性电平,又知道总线张开时所对应的逻辑电平“0”,因此会出现隐性电平和逻辑“1”绑定,显性电平和逻辑“0”绑定。

        简单点来说,显性电平和隐性电平表示的是总线的状态,而定义“0”和“1”是为了和电路约定俗成的规则相对应。

对于低速CAN规定:电压差为-1.5V时表示逻辑1(隐性电平)     

                                 电压差为3V时表示逻辑0(显性电平)

5.  CAN收发器-TJA1050(高速CAN)

        其数据手册引脚介绍: 

        简单翻译一下:

名称引脚描述
TXD1传输数据输入,从CAN控制器读入数据到总线驱动器
GND2电源地
VCC3电源电压
RXD4传输数据输出,从CAN控制器读出数据到总线驱动器
Vref5参考电压输入
CAN_L6低电平CAN总线
CAN_H7高电平CAN总线
S8选择输入高速/静默模式(相当于一个开关,可不用)

6.  CAN物理层特性

物理层ISO 11898(High speed)ISO 11519-2(Low speed)
通信速度最高1Mbps最高125kbps
总线最大长度40m/1Mbps1km/40kbps
总线单元最大30最大20
总线拓扑隐性显性隐性显性
MinNomMaxMinNomMaxMinNomMaxMinNomMax
CAN_High(V)2.002.503.002.753.504.501.601.751.903.854.005.00
CAN_Low(V)2.002.503.000.501.502.253.103.253.400.001.001.15
电位差(H-L)(V)-0.500.051.52.03.0-0.3-1.5-0.33.00-

双绞线(屏蔽/非屏蔽)

闭环总线

阻抗(Z): 120Ω (Min.85Ω Max.130Ω)

总线电阻率(r): 70mΩ/m

总线延迟时间: 5ns/m

终端电阻: 120Ω (Min.85Ω Max.130Ω)

双绞线(屏蔽/非屏蔽)

开环总线

阻抗(Z):120Ω (Min.85Ω Max.130Ω)

总线电阻率(Г): 90mΩ/m

总线延迟时间: 5ns/m

终端电阻: 2.20kΩ (Min.2.09kΩ

Max.2.31kΩ)

CAN_L与GND间静电容量 30pF/m

CAN_H与GND间静电容量 30pF/m

CAN_L与GND间静电容量 30pF/m

STM32学习笔记_时光の尘的博客-CSDN博客

 CAN总线数据帧格式详细介绍-CSDN博客

 CAN总线_时光の尘的博客-CSDN博客


http://www.mrgr.cn/news/70759.html

相关文章:

  • 【HAProxy06】企业级反向代理HAProxy调度算法之其他算法
  • 丹摩征文活动|Llama3.1:从安装到熟练使用的全方位教程
  • 深度学习中的多头注意力机制:原理与实现解析
  • 信息安全工程师(84)UNIX/Linux操作系统安全分析与防护
  • iOS开发 swift系列---一个视图数据修改后,如何刷新另外一个视图
  • gitlab和jenkins连接
  • flutter调试
  • Ansys EMC Plus:以 Touchstone 格式计算和导出 S 参数
  • Python爬虫
  • 双指针(二)双指针到底是怎么个事
  • POP3、SMTP、FTP、HTTP、BGP、DNS、DHCP、RIP、Ping、Traceroute
  • 十、有C/C++/Java基础,迅速掌握Python,B站黑马2022版教程笔记(自用)
  • 高字节,低字节,大端序,小端序
  • 学习python的第九天之数据类型——tuple元组
  • 数学建模模型算法-Python实现
  • 自动渗透测试与手动渗透测试
  • springboot和vue:十六、JWT跨域认证代码(Cookie、Session、Token)
  • 深入浅出JUC常用同步器
  • 【漏洞复现】用友 U8CRM leadconversion.php Sql注入漏洞
  • 基于STM32U575RIT6智能除湿器项目
  • 【星闪EBM-H63开发板】AT固件的配置与测试
  • 121页PPT | 企业战略规划全景:战略设计、工具、模板和分析方法
  • JAVA完成猜数字小游戏
  • python练习-Django web入门
  • STM32:ADC
  • 万字长文解读机器学习——决策树