通信教程 | CAN总线协议基础原理

  • 2022/02/09

本文说的CAN即是一种总线,也是一种协议。因此,我们常听见CAN总线,也常听见CAN协议。

CAN协议和CANOpen协议是两套不同的协议。从软硬件层次来划分,CAN协议属于硬件协议,而CANOpen属于软件协议。

本文将概述CAN网络,让大家对CAN总线协议有一个全局的概念,再到底层的CAN总线协议知识。

1、CAN网络

CAN网络可以理解为多台CAN设备连接在同一条CAN总线上组合成的网络,其中的CAN设备我们称之为节点。CAN网络拓扑结构如下图:

如上图,一个CAN节点主要包含三类:MCU应用程序、CAN控制器、CAN收发器

1. MCU应用程序MCU应用程序我将其分为三块:业务逻辑代码、协议层代码、底层驱动代码。

A.业务逻辑代码:是根据项目需求而定,也很好理解。比如我读取一个传感器数据,并对其做出相应逻辑处理。

B.协议层代码:比如后续要讲述的CANOpen。

C.底层驱动代码:配置CAN总线相应参数、控制收发的代码。

2.CAN控制器CAN控制器内部结构还是挺复杂的,一般现在CAN控制器都是与处理器集成在一起。

其实对于编程的人来说,无非也就是包含一些控制、状态、配置等寄存器。比如我们看到有些STM32芯片带有CAN,也就是说CAN控制器已经集成在STM32芯片中了,我们只需要编程操作其中的寄存器即可。

3.CAN收发器CAN收发器:将CAN收发引脚(CAN_TX和CAN_RX)的TTL信号转换成CAN总线的电平信号。

PS:你可以把CAN总线通信认为是UART通过485进行通信:CAN控制器就如UART的控制器,而CAN收发器就如485转换芯片。

2、ISO标准化的CAN协议

写这一章节的主要目的就是想让大家了解CAN总线位于OSI所在层次。

1.ISO/OSI基本参照模型

【注】

ISO:International Standardization Organization国际标准化组织;

OSI:Open Systems Interconnection开放式系统间互联;

2.CAN在OSI模型中的定义

【注】

LLC:Logical Link Control逻辑链路控制;

MAC:Medium Access Control媒介访问控制;

从上图可以知道CAN总线底层硬件的内容(CAN控制器、收发器)主要位于OSI的第1层和第2层。

3、概述 CAN总线协议

CAN总线协议:就是为了保证通信(收发)数据在CAN总线上能稳定传输而制订的一套协议。

CAN总线协议的内容很多,为方便初学者理解,本文先大概描述一下CAN总线协议,后续文章详细讲述CAN总线协议的内容。

1.总线信号CAN总线为「两线」「差分」信号,用隐形代表逻辑1,显性代表逻辑0。如下图:

2.优先级

假如某一时刻,一个设备(节点)往总线发0,一个设备往总线发1。那么总线会呈现什么现象?

答案:最后总线呈现为显性,也就是0。

3.位时序

位时序逻辑将监视串行总线,执行采样并调整采样点,在调整采样点时,需要在起始位边沿进行同步并后续的边沿进行再同步。

简单的说就是对一个bit位分几段进行采样,目的就是提高数据传输稳定性。在STM32中底层驱动代码就需要进行位时序编程,在STM32参考手册中也会发现如下位时序图

4.帧的种类和格式帧的种类有多种:数据帧:用于发送单元向接收单元传送数据的帧。遥控帧:用于接收单元向具有相同 ID 的发送单元请求数据的帧。错误帧:用于当检测出错误时向其它单元通知错误的帧。过载帧:用于接收单元通知其尚未做好接收准备的帧。帧间隔:用于将数据帧及遥控帧与前面的帧分离开来的帧。

数据帧和遥控帧有标准格式和扩展格式两种格式。标准格式有11个位的标识符ID,扩展格式有29个位的ID。

5.位填充位填充是为防止突发错误而设定的功能。当同样的电平持续 5 位时则添加一个位的反型数据。如下图:

6.错误的种类

CAN总线协议内容很多,初学者可以先了解这些,希望对你有所帮助。

人工客服
(售后/吐槽/合作/交友)
  • 器件型号:SGTL5000XNAA3R2
    • 数量 1
    • 建议厂商 Freescale Semiconductor
    • 器件描述 Audio Codec , Ultra Low-Power, 4 mw for DAC-to-HP, 98 dB SNR and -80 dB THD+N, QFN 32, Reel
    • 参考价格 $3.53
    • 风险等级
    • ECAD模型

      ECAD模型

      下载ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:LTC2875IS8#TRPBF
    • 数量 1
    • 建议厂商 Linear Technology
    • 器件描述 LTC2875 - ±60V Fault Protected 3.3V or 5V 25kV ESD High Speed CAN Transceiver; Package: SO; Pins: 8; Temperature Range: -40°C to 85°C
    • 参考价格 暂无数据
    • 风险等级
    • ECAD模型
    • 数据手册
    • 查看更多信息
  • 器件型号:TJA1042T,118
    • 数量 1
    • 建议厂商 NXP Semiconductors
    • 器件描述 TJA1042 - High-speed CAN transceiver with Standby mode SOIC 8-Pin
    • 参考价格 $1.52
    • 风险等级
    • ECAD模型

      ECAD模型

      下载ECAD模型
    • 数据手册
    • 查看更多信息

相关资讯

  1. 1.
  2. 2.
  3. 3.
  4. 4.
    以太网自协商

    13小时前

  5. 5.
  6. 6.
  7. 7.
  8. 8.
  9. 9.
  10. 10.
  11. 11.
  12. 12.
  13. 13.
  14. 14.
  15. 15.
  16. 16.
  17. 17.
  18. 18.
  19. 19.
  20. 20.
查看全部20条内容