1:物理电平
CAN总线有ISO11898和ISO11519(低速容错CAN)两个标准
ISO11898高速CAN电平状态为:

ISO11519低速CAN电平状态为:


电路上采用双绞线共模消除干扰,是因为电平同时变化,电压差不变,信号解码正常。
需要注意,平时常见的表示总线信号的逻辑波形和CANH-CANL是相反的,也即显0隐1,主要是因为逻辑上显性为0是因为逻辑上是线与的关系,CAN总线是多主通讯,有一个节点发出逻辑0,即为0;
2:编码方式
串行通讯常见的编码方式有RZ归零编码,和NRZ不归零编码,以及NRZI,反向不归零编码;
RZ:
其中RZ编码也成为归零码,归零码的特性就是在一个周期内,用二进制传输数据位,在数据位脉冲结束后,需要维持一段时间的低电平;


NRZ:
NRZ的逻辑是不同的,它的正电平表示1,低电平表示0。它与RZ码的区别就是它不用归零,也就是说,一个周期可以全部用来传输数据,这样传输的带宽就可以完全利用。一般常见的带有时钟线的传输协议都是使用NRZ编码或者差分的NRZ编码。因此,使用NRZ编码若想传输高速同步数据,基本上都要带有时钟线,因为本身NRZ编码无法传递时钟信号。但在低速异步传输下可以不存在时钟线,但在通信前,双方设备要约定好通信波特率,例如UART。

NRZI:
NRZ-I电平的一次翻转来表示Data电平的逻辑0,与前一个NRZ-I电平相同的电平表示Data电平的逻辑1(翻转代表0,不变代表1)。仔细观察,我们发现,NRZ-I编码信号经过反向后,还原的内容不变。典型应用如USB传输。

CAN采用的就是NRZ编码,相对而言这种编码方式传输效率更高,同样的和uart串口类似,靠约定的波特率来同步信号,不可避免的有误差存在,CAN总线采用在电平跳变时同步信号,将误差累计限制在两个跳变沿。
当通讯的数据内容存在较多连续的0或1时,两个跳变沿之间就会有很多位电平不变的状态,也存在一定的误码可能;

CAN总线使用的方式,是在CAN收发器间约定,在出现连续的5位及以上显性,或5位及以上隐性电平时,主动的插入一个填充位来强制电平发生翻转,如下图:

note:实际解码时是不存在这以为数据位的,它仅用于物理CAN收发过程中的同步控制作用;
3:CAN信号采样点
当ECU之间使用CAN来进行通信时,总线上发生了什么?我们可以借助示波器来观察总线上的电平,而从示波器上我们可以看到一串连续的高低起伏的“线条”——波形。无论是电磁波或者是总线上变化的电平,这些信息的载波在时间和空间上是连续的。而从这段连续的载波中解读出我们所需要的信息就需要借助一定的采集手段——采样。CAN控制器需要从总线的高低电平中获取到逻辑0和1。那么控制器要在哪个位置采样?要怎样才能实现正确采样呢?这就涉及到了采样点这个概念。采样的准确性直接影响到二进制获取的结果,如下图:

所以选取合适的采样点是很关键的,这就需要先了解CAN报文的一个位时间是如何组成的;
CAN控制器的最小时间周期称作时间份额(Time quantum,简称Tq),它是通过对芯片晶振周期进行分频而得来的。一个位时间由若干个Tq组成(通常为8到25个),同时根据功能分为4个阶段:同步段、传播段、相位缓冲段1和相位缓冲段2。

这4个阶段的功能如下:
- 同步段(Sync_Seg):用于实现时序调整,总线上各个节点的跳变沿产生在同步段内,通常为1个Tq;
- 传播段(Prop_Seg):用于补偿网络上的物理延迟时间。这些延迟时间包含信号在总线上的传输延迟和CAN节点内部的处理延迟。传播段保证了2倍的信号在总线上的延迟时间;
- 相位缓冲段1(Phase_Seg1)和相位缓冲段2(Phase_Seg2):用于补偿跳变沿的相位误差,其长度会在重同步的实现过程中延长或缩短。
采样点位于相位缓冲段1的结尾。由于相位缓冲段1和相位缓冲段2能够延长或缩短,采样点也能够随之变化。
为什么需要测试采样点?
合适的采样点位置是CAN控制器正常通信的保证。
对于CAN网络这个整体而言,各个节点应该尽量使用相同的采样点位置,否则容易出现采样错误,进而使整个网络的通信出现故障;对于单个节点而言,过早的采样使得节点易受位时间初期的电平波动影响,进而导致采样错误;受限于重同步的要求和相位缓冲段的宽度,CAN控制器无法过晚采样。
采样点的测试方法
采样点的测试方法:干扰某一位的采样点附近的总线电平,利用CAN错误帧机制,根据ECU是否发送错误帧来判断是否出现采样错误,进而计算ECU的采样点。根据ECU角色的不同,采样点测试的方法可以分为两类:以ECU作为发送节点,干扰它发送的报文;以ECU作为接收节点,干扰它接收的报文。
常用的采样点,时间份额:

4:CAN总线终端电阻
终端电阻的作用
CAN总线是一条多点广播通信线路,任何一个节点都可以发送和接收消息。CAN总线上的每个节点都需要有一个BAS21终端电阻来保证信号的正确性和稳定性。终端电阻的作用有以下几个方面:
1、保证信号的正确性
CAN总线是一条差分信号传输的总线,即CAN_H和CAN_L信号在传输过程中是相互独立的,但是它们的差分电压(CAN_H-CAN_L)是共同存在的,用于传输数据。终端电阻的作用就是使CAN_H和CAN_L信号的阻抗匹配,使得CAN_H-CAN_L差分电压保持在合适的范围内,从而保证信号的正确性。
2、降低信号反射和噪声
CAN总线上的信号传输速率高达1Mbps,信号在传输过程中会受到多次反射
,如果没有终端电阻的存在,信号会反射回来与原信号相叠加,导致信号失真。终端电阻的作用就是消除信号的反射,降低信号噪声,保证信号的稳定性。
3、提高总线的抗干扰能力
CAN总线一般应用于恶劣环境下的实时通信,例如汽车、工业控制等领域。在这些应用场景下,总线上会受到电磁干扰、电压干扰等干扰源的影响,终端电阻可以提高总线的抗干扰能力,保证通信的稳定性。
终端电阻的种类
CAN总线终端电阻一般分为两种类型:内部终端电阻和外部终端电阻。
1、内部终端电阻
内部终端电阻是指在某些CAN芯片中集成的电阻,其位置一般在芯片的端口处。内部终端电阻的优点是方便安装,不需要额外的器件,但是其阻值通常较大,一般为120欧姆
,可能无法满足某些特殊的应用要求。
2、外部终端电阻
外部终端电阻是指在CAN总线两端加入的电阻,其位置一般在CAN总线的两端。外部终端电阻的阻值一般为120欧姆,阻值范围为100欧姆到150欧姆之间。外部终端电阻的优点是阻值比较稳定,可以满足各种应用的要求,但需要额外的器件并进行安装。
终端电阻的选择
终端电阻的选择一般需要考虑以下几个方面:
1、总线长度和拓扑结构
CAN总线的长度和拓扑结构会影响终端电阻的选择,如果总线长度较短或者是线性拓扑结构,可以选择内部终端电阻;如果总线长度较长或者是分支拓扑结构,需要选择外部终端电阻。
2、工作频率
CAN总线的工作频率一般为1Mbps,高速CAN总线的工作频率可达到10Mbps。在选择终端电阻时需要考虑总线的工作频率,阻值要符合总线的特性阻抗。
3、特殊应用要求
有些特殊的应用场景需要使用不同的终端电阻,例如在高温或者低温环境下需要选择工作温度范围较广的电阻;在高速CAN总线上需要选择阻值更低的电阻。
终端电阻的安装方法
终端电阻的安装方法一般有三种:
1、内部终端电阻
内部终端电阻的安装方法比较简单,只需要将CAN芯片的端口设置为终端电阻即可。
2、外部终端电阻
在使用外部终端电阻时,需要在CAN总线的两端分别安装一个120欧姆的电阻
。通常情况下,这些电阻会被安装在总线连接器上,也可以使用专门的终端电阻器件进行安装。
3、自动终端电阻
有些CAN总线控制器支持自动终端电阻功能,它可以根据总线的连接状态和拓扑结构自动开启或关闭终端电阻,从而避免了手动设置的麻烦。
综上所述,CAN总线终端电阻在实际应用中起着非常重要的作用。正确选择和安装终端电阻可以保证CAN总线的稳定性和可靠性,从而提高整个系统的性能和可靠性。