can协议基础(1)-简要介绍及物理层

1 介绍

1.1 can 协议的简要介绍

CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由研发和生产汽车电子产品著称的德国 BOSCH 公司开发的,并最终成为国际标准(ISO11519 以及 ISO11898),是国际上应用最广泛的现场总线之一。差异点如下:

iso标准

1.2 通讯方式

can 总线通讯方式是串行通迅的一种,与 SPI、IIC 等不同,can 总线的同步并不是以时钟信号来进行同步的,是预先设置好波特率的异步半双工通讯方式,can 总线广泛应用于汽车和工业自动化领域。它允许在没有主机计算机的情况下,多个微控制器和设备之间进行通信。以下是 CAN 总线的一些关键特点:

  1. 多主通信:CAN 总线允许网络上的任何设备(节点)随时开始通信,采用多主通信方式。
  2. 消息优先级:当两个或更多节点同时尝试发送消息时,CAN 总线通过标识符的优先级来决定哪个消息具有传输优先权。
  3. 差错检测:CAN 协议包含多种差错检测功能,如循环冗余检查(CRC)、帧检查、位填充等,确保数据传输的可靠性。
  4. 实时性:由于其优先级排序和高效的冲突解决机制,CAN 总线适合实时应用。
  5. 灵活性:CAN 网络可以简单地通过添加新的节点来扩展,而不需要大幅修改现有网络结构。
  6. 抗干扰能力强:CAN 总线采用差分信号传输,提高了在恶劣环境下的抗干扰能力。

1.3 can 总线的优势

CAN 总线(Controller Area Network)的设计主要针对复杂的通信需求,尤其是在汽车和工业自动化领域,它提供了多项优势:

  1. 高可靠性:CAN 总线具有高级的错误检测、错误限制和自动错误恢复功能,这些特性确保了数据传输的高可靠性。
  2. 实时性能:通过消息的优先级排序,CAN 总线能够保证关键数据及时传输,适合对实时性要求高的应用。
  3. 灵活的网络拓扑:CAN 总线支持星形、环形、总线形等多种网络拓扑结构,使得系统设计更加灵活。
  4. 低成本:CAN 总线减少了布线的复杂性和成本,因为它允许在单个双绞线上连接多达几百个节点。
  5. 抗干扰能力:采用差分信号传输的方式,提高了系统在恶劣环境下的抗干扰能力。
  6. 广泛的应用支持:由于 CAN 总线的广泛采用,市场上有大量支持 CAN 通信的微控制器和集成电路,便于开发和维护。
  7. 扩展性:CAN 网络可以通过简单地添加新节点来轻松扩展,而无需对现有网络架构进行大的修改。
  8. 多主通信:CAN 总线允许网络上的任何节点都可以主动开始通信,提高了通信的灵活性。

CAN 总线在汽车行业中尤为重要,用于连接各种电子控制单元(ECU),如发动机控制单元、防抱死制动系统、空调控制等。此外,它也被应用于机器人、医疗设备、电梯控制等多种工业自动化设备中,在下述文章中,除了 can 总线的通讯原理之外,我会着重分析这些关键特点。

2 can 协议的组成

CAN 协议(Controller Area Network)是一种复杂的通信协议,它由多个层次和元素组成,以确保数据在不同设备之间可靠、高效地传输。主要组成部分包括:

  1. 物理层

    • 传输介质:通常是双绞线,用于实现物理信号的传输。
    • 接口芯片:如 CAN 控制器和 CAN 收发器,负责数据的发送和接收。
  2. 数据链路层

    • 帧格式:CAN 协议定义了几种不同类型的帧,包括数据帧(用于数据传输)、远程帧(用于请求数据)、错误帧(用于错误通知)、过载帧(用于延迟下一帧的传输)。
    • 消息过滤:节点可以根据标识符决定是否接收某个消息。
    • 错误检测和处理:包括循环冗余检查(CRC)、帧检查、位填充等机制。
  3. 应用层

    • 标识符:用于标识消息的优先级,CAN 2.0A 标准使用 11 位标识符,而 CAN 2.0B 标准使用 29 位标识符。
    • 数据字段:可以包含 0 到 8 字节的数据(CAN FD 标准允许更大的数据量)。
  4. 传输协议(可选):

    • 高级协议:如 CANopen、DeviceNet 等,定义了更高层次的通信规则和设备配置方法,使得设备间的互操作性更好。
  5. 错误处理机制

    • 被动错误:当节点检测到错误但不影响网络的正常通信时,它将进入被动错误状态。
    • 主动错误:节点主动通知网络上的其他节点发生了错误。
    • 总线关闭:当错误过多时,节点可能会从网络中断开以防止进一步的错误传播。

2.1 物理层

CAN 协议的物理层负责数据的实际传输,包括电气特性、信号的物理编码、连接方式和传输介质。以下是 CAN 协议物理层的一些关键特点和组成部分:

  1. 传输介质

    • 通常使用双绞线作为信号传输的物理介质,有助于减少外部电磁干扰(EMI),在差分信号传输中,信号的一个版本通过一根线传输(称为 CAN_H,CAN 高线),而信号的反相版本通过另一根线传输(称为 CAN_L,CAN 低线),在某些应用中,也可以使用光纤来提高通信距离和抗干扰能力。
    • 差分的电压令 CAN 网络即使在一条信号线断开或者在噪声极大的环境中也能够工作,只需要一对双绞线,差分的 CAN 输入就能够很有效地抵偿噪音,只需要该噪音是在通常的波段里.
  2. can 总线标准:
    物理层及数据链路层: ISO11898

  3. 电气特性

    • CAN 协议定义了两个重要的电气状态:隐性(Recessive)和显性(Dominant)。隐性状态对应于逻辑“1”,而显性状态对应于逻辑“0”,通过使 CAN_H 电压高于 CAN_L 电压来实现。隐性状态表示逻辑“1”,在物理层上,CAN_H 和 CAN_L 电压接近相等,通常接近于总线的静态电压。

    • 注意事项

      • CAN 总线的电压水平主要取决于其物理层的实现和工作状态。在高速 CAN(ISO 11898-2)和低速/容错 CAN(ISO 11898-3)中,电压水平有所不同。以下是一些关键点:
        高速 CAN (ISO 11898-2)

        • 显性(Dominant)状态:CAN_H(高线)和 CAN_L(低线)之间的电压差通常大约为 2V。在这种状态下,CAN_H 通常比 CAN_L 的电压高 2V 左右。例如,如果 CAN_L 是 2.5V,那么 CAN_H 大约是 4.5V。
        • 隐性(Recessive)状态:两条线的电压差接近于 0V,两线都接近于静态电压水平,通常是 2.5V 左右。

        低速/容错 CAN (ISO 11898-3)

        • 显性(Dominant)状态:电压差较小,CAN_H 和 CAN_L 的电压差异通常在 1V 左右,但具体值取决于具体实现。
        • 隐性(Recessive)状态:两条线的电压更接近,通常都接近于总线的静态电压,这个电压水平也是约 2.5V。
  4. 信号电平

    • CAN 高速(ISO 11898-2)和 CAN 低速(ISO 11898-3)有不同的电压水平和传输速率。高速 CAN 通常工作在更高的速率(最高 1Mbps),而低速 CAN 工作在较低的速率(最高 125Kbps),但提供更高的抗干扰能力。
  5. 终端电阻

    • 终端电阻是为了消除在通信电缆中的信号反射,在通信过程中,有两种原因导致信号反射:阻抗不连续和阻抗不匹配。
    • 阻抗不连续,信号在传输线末端突然遇到电缆阻抗很小甚至没有,信号在这个地方就会引起反射。这种信号反射的原理,与光从一种媒质进入另一种媒质要引起反射是相似的。消除这种反射的方法,就必须在电缆的末端跨接一个与电缆的特性阻抗同样大小的终端电阻,使电缆的阻抗连续。由于信号在电缆上的传输是双向的,因此,在通讯电缆的另一端可跨接一个同样大小的终端电阻。
      引起信号反射的另外一个原因是数据收发器与传输电缆之间的阻抗不匹配。这种原因引起的反射,主要表现在通讯线路处在空闲方式时,整个网络数据混乱
  6. 连接器

    • CAN 网络的物理连接可以通过不同类型的连接器实现,这取决于具体的应用和环境要求。在汽车行业中,常见的有 9 针 D-SUB 连接器(俗称 DB9)
  7. 拓扑结构

    • CAN 网络通常采用总线拓扑结构,所有节点通过一条主线连接。尽管物理层支持星形拓扑,但总线形拓扑因其简单性和高效性而更为常见。
  8. 容错性能

  9. can 收发器
    CAN 的组成一般有两种方式,一种是 CPU 与 CAN 控制器集成到一起、再外接 CAN 收发器(STM32 系列是此种方式),另一种是 CPU 与 CAN 控制器分开的,使用的时候需要配置 CAN 接口电路,较为常用的有 TJA1050,在后续文章中我也会针对该芯片进行分析。
    CAN 收发器(Transceiver)是连接 CAN 总线和 CAN 控制器的关键组件,负责在这两个部分之间转换信号。它的主要功能和特点包括:

    1. 信号转换:将来自 CAN 控制器的 TTL 电平信号转换为适合在 CAN 总线上传输的差分信号,反之亦然。
    2. 差分信号传输:利用差分信号技术提高信号的抗干扰能力。这意味着数据通过两条线(CAN_H 和 CAN_L)以电压差的形式传输,从而提高通信的可靠性。
    3. 隐性和显性状态控制:根据 CAN 协议,收发器能够处理两种电气状态——隐性(Recessive,逻辑“1”)和显性(Dominant,逻辑“0”)。在物理层,这通过控制 CAN_H 和 CAN_L 线上的电压差来实现。
    4. 保护功能:许多 CAN 收发器具备过电压保护、热保护和电磁干扰(EMI)过滤功能,以保护电路免受损坏。
    5. 隔离功能:某些 CAN 收发器设计中包含隔离功能,以电气方式隔离 CAN 总线和控制器,进一步提高系统的稳定性和安全性。
    6. 低功耗模式:为了适应不同的应用需求,一些 CAN 收发器支持低功耗操作模式,如睡眠模式,以减少系统的能耗。