CAN总线
https://theembeddedsystem.readthedocs.io/en/latest/c8_can/index_c8.html
CAN总线简介
CAN(控制器局域网,Controller Area Network)是历史最悠久的、使用最为广泛的汽车控制领域网络,在工业控制领域CAN也被广泛使用。
- CAN2.0A/B(第一代CAN):于1991年制定的CAN总线技术规范的2种版本,其中A版本使用11位长度的消息ID(该版本也被成为经典CAN总线),B版本支持29位长度的消息ID,同时B版本兼容A版本。CAN2.0A/B支持的最大波特率为1Mbps,数据域长度为0~8,且支持远程请求帧(即某个节点主动地从另一个节点读取消息)。
- CAN FD(第二代CAN):于2011年制定的CAN FD(即CAN with Flexible Data-rate)是为了满足越来越大的汽车网络信息负荷,CAN FD兼容CAN2.0B标准但允许使用两种波特率传输一个数据帧,总线仲裁阶段和帧尾(包含应答域和EOF)仍采用CAN2.0B的1Mbps最大波特率,但数据域和CRC校验域允许5Mbps甚至更高的波特率,而且数据域的长度支持0~64字节。
- CAN XL(第三代CAN):于2020年提出的第三代CAN总线规范,与CAN FD(被称作第二代CAN总线规范)相比,CAN XL的仲裁阶段仅支持11位长度的消息ID且仍支持1Mbps的最大波特率,但数据域的波特率强制切换到最大10Mbps(CAN FD的数据域是可选择地切换至高波特率)。此外,CAN XL的数据域长度扩展为1~2048字节。
波特率:典型值10kbps~1Mbps(CAN FD可达8Mbps)。
- 节点数量:理论上最多110节点(受总线电容限制)。
- 传输距离:
波特率 | 最大距离 |
---|---|
1 Mbps | 40米 |
125 kbps | 500米 |
10 kbps | 6千米 |
CAN总线是一种异步串行通讯低层网络。对照OSI模型,CAN总线规范仅包含物理层和数据链路层的标准。然而,构建在CAN总线之上的应用层协议(即OSI模型的高层协议)有多种, 譬如针对汽车控制领域和工业控制领域的CANopen协议、针对工业控制领域的DeviceNet协议、针对公交车和卡车控制领域的SAE J1939协议、针对轻型电动汽车领域的EnergyBus协议等。
CAN总线具有以下几个特点:
- 高可靠性。CAN总线采用无主的网络架构,网络传输不依赖于主机的可靠性。CAN总线采用消息ID和消息体的传输机制(无网络节点ID),每个节点可发送或接收多个ID的消息,任何节点失效都不会影响其他节点和网络。
- 低成本。CAN总线物理层采用低压差分信号,CAN总线物理层接口的收发器成本与RS485收发器相接近,但CAN总线收发器具有网络侦测能力(每个节点都可以检测自己发出的信号)。
- 高传输效率。CAN总线使用面向位流编码的短数据帧,每个位都采用不归零编码,数据域最大长度位8字节。传输短数据帧时占用的网络周期短,受干扰或导致错误数据位的概率低,而且重传的时间也短。
- 易组网。CAN总线采用消息ID(11位或29位两种长度的消息ID)的二进制‘0’位的多少分配消息传输优先级,允许多个节点自动竞争和仲裁获取总线的占用权,甚至支持即插即用的节点。
- 开放协议和生态系统。CAN总线得到广泛应用的关键应归功于Bosch最初采用的开放版权策略,以及由半导体制造商(协议栈的硬件化)、汽车零部件开发商、软件开发商和行业协会等共同参与而打造的CAN总线生态。
CAN总线的物理层使用双绞线作为网络介质,两个信号分别称作CAN_HI和CAN_LO,他们组成一对差分信号,由CAN总线节点的物理层接口——总线收发器驱动。 CAN总线的数据帧是面向二进制位编码的结构化位流,每个数据帧都包含帧起始域、仲裁域、控制域、数据域、CRC校验域、确认域、帧结束域和帧间隔域等。
在CAN总线的规范中,将二进制位‘0’定义为“显性位”或“显性信号”、‘1’定义为“隐性位”或“隐性信号”。在传输显性位‘0’时,CAN_HI信号将被拉高到CAN总线收发器的工作电源电压VDD, 同时CAN_LO信号将被拉低到CAN总线收发器GND;传输隐性位‘1’时,CAN总线收发器不驱动CAN_HI和CAN_LO两个信号,即两个信号处于浮空状态,此时两总线信号受120欧姆终端匹配的影响都保持2V左右。
图8.1 CAN2.0A数据帧(位流)和物理层CAN_HI和CAN_LO信号之间关系示意图[1]
上图能够清楚地看出,CAN总线发送‘0’和‘1’时CAN_HI和CAN_LO两信号的电压状态。CAN总线物理层的收发器有很多种型号,甚至他们的工作电压各不相同(如3.3V或5V), 但是CAN总线允许使用不同型号的总线收发器节点共用同一个网络,这是因为CAN总线接收器以CAN_HI和CAN_LO两信号的电压差和阈值来判定‘0’和‘1’信号
完整的CAN2.0/A总线数据帧由55个二进制位组成, 并结构化为8个信息域:
- 帧起始域:仅有1个显性位‘0’。由于CAN总线的空闲状态或接收状态是浮空的,CAN_HI和CAN_LO两信号的电压差为0,即总线处于隐性位‘1’的状态, 显性位‘0’作为帧起始域具有明确的同步作用。此外,CAN总线传输显性位‘0’时两总线信号由收发器主动地驱动,从隐性位‘1’跳变到显性位‘0’的过渡期更短, 所以帧起始域信号的初始变化更斜率更大。虽然CAN总线的经历多个版本演变,帧起始域并没有变化。
- 仲裁域:也称作优先级域,由11位的
帧/消息ID
和远程请求标志位组成。CAN总线不对节点进行编址,即一个CAN网络节点可以拥有一个或多个消息ID,但在整个CAN网络内每一个消息ID必须保持惟一性。 - 控制域(指定信息域长度)
- 数据域(帧数据)
- CRC校验域:内容是根据该域之前的位流内容计算得到15位长度的CRC值(循环冗余校验码),CRC15多项式函数
- ACK域
- 帧结束域
帧确认域、帧结束域和帧间隔域等都是固定的信息,即所有CAN2.0A数据帧的这些域都是相同的,这些固定内容的信息域用于同步CAN数据帧。
CAN总线是一种多主(或无主)网络架构,任何节点都可以随时启动消息发送过程,但是发送者必须在发送消息ID期间侦测网络状态确保是否发送成功, 一旦发送不成功则停止发送过程,直到网络恢复空闲状态后再次启动发送过程。我们把CAN总线发送帧/消息ID和远程请求标志位的过程称作抢占总线的仲裁过程。如图8.2所示。
图8.2 CAN总线占用权的仲裁过程示意图
如果两个CAN节点同时发送数据, 假设A节点发送‘0’、B节点发送‘1’,那么总线上实际传送的是‘0’,即隐性位‘1’被显性位‘0’覆盖。根据这个,实现了CAN的优先级机制。
使用CAN总线组网是非常容易的,尤其使用CAN总线传输系统应用层的数据信息几乎不消耗MCU的存储资源和CPU时间。但是,CAN总线并不是实时网络, 一个节点的消息被成功地发送和接收的时间是不确定的,尤其CAN总线上多个节点之间的数据传输非常频繁时,某些低优先级的消息可能会传输失败。 虽然RS485总线、ModBus等协议构建的主从网络采用主机轮询各从机的效率比较低,但借助于固定周期的从机轮询机制可以确保数据传输的实时性。
CAN总线相关的另一个重要概念——位填充。位填充操作是由CAN协议控制器自动完成,CAN总线操作软件仅仅对CAN协议控制器做配置而已:是否启用位填充。 CAN总线数据帧的位填充指的是,待发送的位流如果出现连续5个同极性位时则插入一个相反极性的位。位填充操作可以确保接收者与发送者有足够多的跳变保持同步, 这是因为CAN总线采用不归零编码。位填充操作由发送者自动添加,并由接收者自动删除,CAN总线的应用层数据不受任何影响。CAN数据帧的位填充仅仅对帧起始域、 仲裁域、控制域、数据域和CRC校验域有作用。如果我们的软件配置CAN协议控制器启用位填充功能,当接收到连续6个或以上同极性位则视为总线发送错误, CAN协议控制器将发出总线错误信息。
接口协议
目前CAN总线的标准化被分割成6个部分,即ISO 11898-1~6, 这个6个部分分别对CAN总线的链路层和物理层、高速物理介质附属层、低速物理介质附属层、时间触发的CAN通讯(即TTCAN)、低功耗的高速物理附属层、 可选择性唤醒的高速物理附属层等进行标准化以便于全球CAN网络节点制造商的产品能够相互兼容和互联。
目前在用CAN总线版本分为2.0A、2.0B、FD,虽然CAN XL已经启动但尚未正式应用,除了已废止的标准,在用的ISO 11898的6个部分分别对这三种版本的低层协议实施标准化。 低层协议仅包括数据链路层(DLL)和物理层(PHY),CAN总线的高层协议基本上与行业有关。
CAN2.0A
CAN2.0A标准协议支持4种协议帧:
- 标准数据帧:信息发送者使用数据帧将节点数据广播到网络上,其他节点根据消息ID确定是否处理该消息。
- 远程请求帧:某些节点需要主动地从其他节点读取信息时,只需要将远程请求帧(仅包含消息ID且无数据域)广播到网络上,然后具有对应消息ID的CAN网络节点将会发送一个标准的数据帧(包含有远程请求帧ID和数据), 到网络上,主动发起远程请求帧的CAN总线节点将会收到请求的数据。
- 错误帧:当数据帧发送节点发送数据期间侦测到数据发送错误, 则发起主动错误帧(由连续6个显性位‘0’代表错误帧标志和连续8个隐性位’1‘代表错误定界符)告知CAN网络上其他节点放弃本次通讯,当数据帧接收者侦测到数据错误时, 则可以直接发出被动错误帧(由连续6个隐性位‘1’代表错误帧标志和连续8个隐性位’1‘代表错误定界符)。
- 过载帧:当网络接收者侦测到连续的数据帧之间侦测到非法的显性位‘0’时, 则直接发出过载帧(由连续6个显性位‘0’代表过载帧标志和连续8个隐性位’1‘代表过载帧定界符)。
错误帧和过载帧都属于容错处理。
被动错误帧不影响数据帧的发送, 过载帧被触发时将会破坏数据帧的发送,这是因为6个连续的显性位‘0’将违反CAN总线的位填充规则,迫使数据帧的发送者停止发送或发起主动错误帧。
图8.6 CAN2.0A协议帧(标准数据帧和远程请求帧的位流格式)
CAN2.0A标准的数据帧和远程请求帧位流格式:
- 支持11位长度的ID
- 数据域长度为0~8个字节
- RTR(Remote Transmission Request),标准数据帧中该位是显性的(‘0’),远程请求帧只能够该位是隐性的(‘1’)
- 控制域中4个DLC(Data Length Code)位用来指定数据域的字节个数
- 标准数据帧中DLC[3:0]={0, 1, .., 8}
- 远程请求帧中DLC的4个位都是‘0’表示无数据域
CAN2.0B
CAB2.0B标准仅仅是在CAN2.0A的基础上增加消息ID的位长度扩展,2.0B支持29个位长度的ID,同时将仲裁域的位个数也扩展至32个。
为什么要扩展ID位长度呢? CAN总线使用ID和RTR位来竞争和仲裁总线的占用权,并不对CAN网络节点做其他的寻址定义,消息ID就像网络上数据信息的地址资源一样, 按照存储器映射机制,消息ID的二进制位宽度影响CAN网络上所有节点的数据信息总容量。因此,CAN2.0A标准迭代至CAN2.0B本质上是CAN网络上信息总容量的提升。
引入29位的ID扩展之后,CAN2.0B还必须兼容CAN2.0A,即遵循CAN2.B标准的CAN网络节点和早期的CAN2.0A节点能够在同一个CAN网络上安全地传输数据, 这或许是制订CAN2.0B标准时的最大挑战。使用基本ID和ID扩展的CAN2.0B标准的数据帧和远程请求帧的位流格式如图:
图8.7 CAN2.0B协议帧(两种ID位长度的标准数据帧和远程请求帧的位流格式)
对比CAN2.0A和使用基本ID的CAN2.0B的标准数据帧:控制域的首位,在CAN2.0A标准的数据帧中该位称作保留位1(RB1)且始终保持为显性的(‘0’),在CAN2.0B标准的数据帧中该位被称作IDE(IDentifier Extension)。
IDE位的作用:当遵循CAN2.0B标准的节点使用11位基本ID传送数据时该位保持显性(‘0’)与CAN2.0A标准的数据帧保持一致, 这样的数据帧在两种标准组成的CAN网络上传输时接收者不会有任何歧义;当遵循CAN2.0B标准的节点使用29位长的ID发送数据时该位则变成隐性(‘1’), 遵循CAN2.0A的网络节点将忽略此类数据帧,遵循CAN2.0B的节点则能够识别这是一个29位长度的ID的数据帧或远程请求帧。
使用29位长度ID的CAN2.0B标准的数据帧中,如图(b),仲裁域总共有32个位,即29位ID、1位SRR(Substitute Remote Request,固定为‘1’)、 1位IDE(固定为‘1’代表此帧使用ID扩展)和1位RRS(Remote Request Substitution,RTR的替代位),其中RRS位与CAN2.0A标准中的RTR位具有同等作用。
除了仲裁域之外,CAN2.0B标准的控制域和数据域等仍保持与CAN2.0A标准一致,而且CAN2.0B标准的控制域仍预留2个固定为‘0’的保留位。
CAN FD
CAN FD标准的最大变化是增加数据域的字节个数(最大64个字节)和该域的波特率, 而且CAN FD标准不支持远程请求帧。在理论上,CAN FD仍兼容CAN2.0B标准,即支持两种标准的CAN网络节点可以共享同一个CAN网络, 继续保留11位宽度ID的数据帧。
CAN FD标准的数据帧的CRC域也被调整,根据数据域的字节个数(16个字节及以下或20个字节及以上)分别使用17位或21位的CRC域位宽度。
图8.8 CAN FD协议帧(两种ID位长度和数据域长度的标准数据帧的位流格式)
CAN FD标准的仲裁域与CAN2.0B完全相同,但两者的控制域变化较大。同样使用11位ID时,在CAN2.0B标准数据帧的控制域的前2个保留位分别是IDE和一个保留位RB0, 但CAN FD标准数据帧的控制域的这两个位分别定义位IDE和FDF(FD Frame);对于控制域的首个位,使用11位ID意味着IDE位都是‘0’,如果第二个位仍为‘0’则代表CAN2.0B数据帧, 如果第二个位为‘1’则代表CAN FD数据帧;当FDF为‘1’时,即CAN FD标准的数据帧,控制域的后续位将被重新定义。很显然, 使用11位ID时理论上允许CAN2.0B和CAN FD两种节点共享同一个CAN网络。
使用29位ID时,CAN2.0B控制域的2个保留位默认都是‘0’,在CAN FD标准数据帧的控制域中这两个位的首位被定义成FDF,当FDF为‘1’时,即CAN FD标准的数据帧标志位有效, 与CAN20.0B相比较,CAN FD数据帧中控制域的其他位被重新定义,分别为BRS(Bit Rate Switch)和ESI(Error State Indicator)。 BRS位是CAN FD标准数据帧的控制域中新增的一个关键位,当BRS为‘1’时,该位之后且直到CRC界定符之间的每一个位的传输波特率将切换位为8倍速; 顾名思义,ESI位在正常传输时保持‘0’,除非发送节点侦测到错误则将此位发送成‘1’。
值得注意的是,CAN FD标准是首次采用2种不同波特率传输单个数据帧的机制,使用规则是仲裁域到控制域BRS位(包含该位)采用低波特率(兼容CAN2.0B不超过1Mbps), BRS位之后直到CRC界定符的所有位采用8倍速传输,确认域、帧结束域和帧间隔域则恢复低波特率传输。CAN FD标准的数据域最长可达64个字节,这是CAN2.0A/B标准的8倍, 如果传输CAN FD标准数据帧时允许使用8倍速传输数据域和CRC域的各位,CAN FD传输64个字节数据时占用CAN总线的时间不大于CAN2.0A/B的8个字节数据域的耗时。 有些文献中称CAN FD标准支持的最大波特率可达10Mbps,事实上这是一种误解。
此外,CAN FD仍使用4个位DLC[3:0]来界定数据域的字节数,但是CAN FD支持最大为64字节的数据域,这是为什么呢?如果采用线性对应关系:(2^DLC的二进制位个数)-1 –> 数据域的字节个数, 对于数据域最大的字节个数为64的情况,合适的DLC的二进制位个数应等于7。事实上,CAN FD协议使用非线性的映射关系:
- DLC[3:0] <= 8,数据域的数据个数 = DLC[3:0]字节 (保持线性关系)
- DLC[3:0] = 9, 数据域的数据个数 = 12字节
- DLC[3:0] = 10, 数据域的数据个数 = 16字节
- DLC[3:0] = 11, 数据域的数据个数 = 20字节
- DLC[3:0] = 12, 数据域的数据个数 = 24字节
- DLC[3:0] = 13, 数据域的数据个数 = 32字节
- DLC[3:0] = 14, 数据域的数据个数 = 48字节
- DLC[3:0] = 15, 数据域的数据个数 = 64字节
在图8.8中可以看出,CAN FD标准的CRC域也有很大变化,不仅根据数据域的字节数改变CRC算法,还增加4个位(即Stuff Count子域)用于验证该域之前的数据帧中二进制位个数。 Stuff Count的前3个位:Stuff_Count[2:0] = 数据位个数%8(即除以8的余数)的格雷码;第4个位是Stuff_Count[2:0]的奇校验位。增加Stuff Count子域的目的是提升数据帧的检错能力。
格雷码(Grey Code)是一种可靠性较高的绝对编码方式,相邻的两个码之间仅有一个位不同,与其他编码(如连续的二进制编码)相比出错率更低。3位二进制码与格雷码对照关系:
- 序数:0, 1, 2, 3, 4, 5, 6, 7
- 3位二进制码:000, 001, 010, 011, 100, 101, 110, 111
- 3位格雷编码:000, 001, 011, 010, 110, 111, 101, 100
比较三种版本的CAN标准,CAN总线的竞争和仲裁机制始终保持不变,即CAN网络架构始终不变;CAN2.0B标准增加消息ID的二进制位宽度以提升CAN网络上数据信息的总容量; CAN FD标准将数据域的字节个数提高8倍并支持8倍波特率传输数据域,在不增加CAN数据帧传输时间的条件下将每帧的数据信息提高8倍;CAN FD标准使用改进的CRC域提升数据帧的检错能力。 很显然,CAN标准的每一次迭代的目的都是在信息容量、信息传输效率等方面的提升,这也正是为了满足汽车控制和工业控制等领域不断地提升的信息容量、信息交换速度。
对比三种不同CAN总线标准的数据帧格式,随着信息容量和传输速度不断地提升,数据帧的检错能力也随之提升,数据帧的结构越来越复杂。 尤其新标准向后兼容的需求等会不会使CAN总线的应用软硬件接口设计越来越复杂(兼容更多种标准)呢?不会的。
多种CAN标准的协议控制器都是成熟的硬件功能单元,无论是集成在MCU内部或是独立IC,图8.6~8.8的数据帧都是由协议控制器根据用户程序待传输的消息ID和消息数据自动封装而成的, 用户程序仅仅是把11位或29位宽度的消息ID和对应的消息体数据字节逐个写入CAN协议控制器的发送缓冲区或从接收缓冲区读回RAM的操作。 图8.9给出11宽度或29位宽度消息ID和消息数据封装成CAN2.0B标准的数据帧的操作。
图8.9 消息ID和消息数据如何封装成CAN2.0B标准的数据帧
图8.10 消息ID和消息数据如何封装成CAN FD标准的数据帧
对于MCU片内的CAN协议控制器单元,消息ID和消息体数据缓冲区都是MCU片上外设的存储器单元,消息ID和消息体的读回(接收)/写入(发送)操作都是存储器单元的读写操作。 如果使用独立的CAN协议控制器IC,该IC可通过高速SPI、UART或并行总线接口与主MCU连接(片外功能单元的扩展), CAN总线的配置(消息ID的位宽度、波特率等)、发送缓冲区和接收缓冲区等都将被映射成寄存器,消息ID和消息体数据的读写操作本质上是通过SPI、UART或并行总线读写这些寄存器。
接口硬件
CAN总线硬件设计要点
收发器与控制器:
- 收发器芯片:
- TJA1050:高速CAN收发器,支持5Mbps,兼容ISO 11898-2。
- MCP2551:低成本收发器,适合工业应用。
- ISO1042:隔离型收发器,提供5kV隔离(医疗/工业)。
- CAN控制器:
- 集成于MCU(如STM32F4系列)或独立芯片(如MCP2515)。
总线拓扑与布线
- 终端电阻:在总线两端各接120Ω电阻(匹配双绞线特性阻抗)。
- 分支长度:节点分支(Stub)长度≤0.3米(1Mbps时)以减少反射。
- 双绞线选择:屏蔽双绞线(如AWG22)降低EMI,屏蔽层单点接地。
保护与隔离
- TVS二极管:在CAN_H/CAN_L间添加SM712,防护±12kV ESD。
- 共模扼流圈:如TDK ACT45B,抑制高频共模噪声。
- 隔离电源:使用DC-DC模块(如B0505S)隔离MCU与总线电源。
图8.12 CAN总线在汽车控制系统中的应用
CAN总线经历数十年的发展已经形成稳定的软硬件设计模型[1]。图8.13是参照CAN总线协议栈的CAN网络节点的硬件设计模型。
[1] https://www.ti.com/lit/pdf/sloa101
图8.13 CAN网路节点的硬件设计模型
虽然CAN总线的2个信号也是差分的,CAN总线收发器与RS485、RS422等差分信号收发器并不通用,根据前一节知识我们很清楚他们之间的区别。 图8.14给出CAN总线收发器的内部结构及其前后级接口的原理。在RS485等标准差分收发器中,逻辑‘1’和逻辑‘0’(或开路状态)都受驱动器控制,接收状态受控于专用的“enTxD”信号。 在CAN总线范畴,仅发送逻辑‘0’(显性位)时收发器处于受控状态,其他时刻收发器都是三态的(只能接收)。 图8.14所示的CAN总线收发器无需MCU或其他专用逻辑驱动的情况下即可实现这些状态模式。
图8.14 CAN总线收发器的内部原理结构及其前后级接口
对于CAN总线的终端电阻,图8.14中的RT需要注意其功率。根据CAN总线的差分信号接口,当传输显性位‘0’时CAN_HI信号通过内部P型三极管被拉高至VDD, 同时CAN_LO信号被内部N型三极管强制拉低到GND,此时终端电阻两端的电压差是最大的,CAN总线的驱动电流被限制在50mA,那么120欧终端电阻的功率为0.3W(即0.050.05120), 这意味着至少选择1/3W(1210)或1/2W的规格。
120欧终端电阻的作用是进行阻抗匹配,以减少回波反射
https://zhuanlan.zhihu.com/p/662503836 CAN收发器芯片:
- 检测供电
- CAN使用差分电压传送(CAN_H、CAN_L),电压要符合要求,Vdiff=CAN_H-CAN_L
- 高速CAN总线上
- 显性电平(逻辑0)时,CAN_H为3.5V、CAN_L为1.5V,此时电压差是2V
- 隐性电平(逻辑1)时,CAN_H和CAN_L都为2.5V,此时电压差就是0V
- 低速CAN总线上
- 显性电平(逻辑0)时,CAN_H为3.6V、CAN_L为1.4V,此时电压差是2.2V
- 隐性电平(逻辑1)时,CAN_H为0.3V、CAN_L都为4.7V,此时电压差就是-4.4V
- 高速CAN总线上
典型应用场景
- 汽车电子
- 动力总成:发动机ECU、变速箱控制单元(TCU)实时交换数据(如转速、温度)。
- 车身控制:车门模块、座椅调节、空调系统通过CAN互联(遵循ISO 15765)。
- 诊断接口:OBD-II(车载诊断)通过CAN读取故障码(如SAE J1939协议)。
- 工业自动化
- PLC通信:西门子PROFIBUS/CANopen网络控制机械臂、传送带。
- 机器人控制:多关节同步运动控制(如CANopen DS402协议)。
- 医疗设备
- 监护仪:多参数生命体征数据集中传输(如心电、血氧)。
- 手术机器人:高实时性指令传递(要求μs级延迟)。
- 航空航天
- 飞控系统:飞行管理计算机(FMC)与舵机、传感器通信(ARINC 825标准)。
- 黑匣子:飞行数据记录仪通过CAN总线收集传感器信息。
- 新能源与储能
- 电池管理系统(BMS):监控锂电池组电压、温度(如CAN报文0x6B0)。
- 充电桩:CAN通信实现充电握手与功率控制(遵循GB/T 27930)。
CAN协议演进
- CAN FD(Flexible Data Rate)
- 特性:
- 数据场长度扩展至64字节(标准CAN仅8字节)。
- 可变波特率:仲裁段用标准速率,数据段提升至5Mbps~8Mbps。
- 应用:自动驾驶雷达/摄像头数据传输、高精度电机控制。
- CAN XL
- 特性:
- 数据长度扩展至2048字节,速率达10Mbps。
- 兼容传统CAN与CAN FD,支持更复杂网络拓扑。
- 应用:车载以太网备份网络、工业大数据采集。
开发与调试工具
CAN分析仪:
- Vector CANoe:仿真、测试、诊断一体化平台。
- PCAN-USB Pro:低成本抓包与数据发送工具。 s协议栈:
- CANopen:工业标准协议栈(对象字典、PDO/SDO)。
- SAE J1939:商用车协议(参数组编号PGN)。 调试技巧:
- 终端电阻检测:断电测量总线电阻是否为60Ω(两端120Ω并联)。
- 波形分析:示波器查看CAN_H/CAN_L差分信号是否完整。