最后更新:2022-08-02 08:54:37 手机定位技术交流文章
CAN 是控制器局域网络 (Controller Area Network) 的简称,它是由德国公司BOSCH开发的,它专门从事汽车电子产品的开发和生产。它最终成为国际标准(ISO 11519和ISO 11898),是世界上最广泛使用的现场巴士之一。差异点如下:

CAN总线协议已成为汽车计算机控制系统和嵌入式工业控制网络的标准总线。并且拥有以CAN 为底层协议专为大型货车和重工机械车辆设计的 J1939 协议。近年来,具有较高的可靠性和良好的误差检测能力,广泛应用于汽车计算机控制系统和恶劣环境温度、强电磁辐射和高振动的工业环境中。
让我们展示一个运营商网络的概念

1.2 CAN物理层
与I2C、SPI和其他有时钟信号的同步通信方法不同,CAN通信与时钟信号不同步,它是一种异步通讯,只有CAN_High和CAN_Low信号线,合并构成一组微分信号线,以微分信号的形式进行通信。我们来看一个示意图

1.2.1封闭巴士网络
有两种主要形式的CAN物理层,图中的CAN通信网络是按照ISO11898标准的高速、短距离“闭环网络”。其巴士的最大长度是40米,最大通信速度为1Mbps,公共汽车的每个端需要一个“120欧元”阻尼器。

1.2.2开放环路总线网络
图示了ISO11519-2标准下的低速、长距离“开放环网”。其最大传输距离为1公里,最大通信速度为125kbps,这两个巴士是独立的,不构成一个闭环。每条电线需要一个“2”。 电阻为2,00欧元。

1.2.3通讯节点
从CAN通信网络图中可以看出,CAN总线可以载入多个通信节点,节点之间的信号通过总线传输,实现节点间通讯。因为CAN通信协议不编码节点的地址,而不是编码数据内容,所以网络中的节点数在理论上是无限的,只要公共汽车的载荷足够,载荷可以通过继电器增强.
CAN通信节点由CAN控制器和CAN接收器组成,通过CAN_Tx和CAN_Rx信号线连接控制器与接收器,接收器和CAN总线使用CAN_High和CAN_Low信号线连接。CAN_Tx和CAN_Rx使用相似的TTL逻辑信号,CAN_High和CAN_Low是不同的信号线的对。使用比较特殊的微分信号,下一个部分更详细地解释.
当CAN节点需要发送数据时,控制器通过CAN_Tx线向接收器发送二进制编码,然后接收器将这个正常逻辑平行信号转换为差分信号,通过CAN_High和CAN_Low差分线输出到CAN总线网络。当接收器从总线接收到控制器时,则是相反的过程,接收器将在总线上接收的CAN_High和CAN_Low信号转换为正常逻辑平行信号。通过CAN_Rx向控制器输出。
例如,STM32 CAN芯片是通信节点的外部控制器。为了形成一个完整的节点,并给它一个接收器,TJA1050芯片在我们的测试板上作为CAN接收器。CAN控制器与CAN接收器之间的关系类似于TTL序列端口与MAX3232平行变换芯片之间的关系。MAX3232芯片将TTL电路的串行信号转换为RS-232电路的串行信号。CAN接收器的功能是将CAN控制器的TTL平行信号转换为差分信号(或相反)。
目前,有以下CAN晶体管芯片(不完整的)

让我们使用TJA 1050来看下面的原理图:

1.2.4差异信号
差幅信号也称为差幅模块信号,与传统的逻辑方式不同,表示单一信号线的电压。 当传输差幅信号时,需要两个信号线,两个信号线的振幅均等,相位相反,两个信号线的电压差值表达
逻辑0和逻辑1。 如图所示,它使用V+和V信号之间的差异来表达图下信号。

差分信号传输与单线信号传输有以下优点:
•强的抗干扰能力,当外部有噪声干扰时,几乎同时耦合两个信号线,接收器只关心两个信号的差值,因此外部共模噪声可以完全抵消。
举一个例子,正常单线假设逻辑1是3.3V,逻辑0假设是0V,但是如果有噪声,把3.3V放在0V(极限),制造0V-3.3V,此时就逻辑错误,但 Can high/Can low一般在两行作用,尽管两者都有噪音效应,但是差值还是不变的
• 能有效抑制它对外部的电磁干扰,同样的道理,由于两根信号的极性相反,他们对外辐射的电磁场可以相互抵消,耦合的越紧密,泄放到外界的电磁能量越少。
例如,假设一个是10V,另一个是10V,一个单个字符串会引起外部的电磁干涉,但CAN可以把线条转在一起并抵御彼此的电磁干涉,就像缝线一样
• 时序定位精确,由于差分信号的开关变化是位于两个信号的交点,而不像普通单端信号依靠高低两个阈值电压判断,因而受工艺,温度的影响小,能降低时序上的误差,同时也更适合于低幅度信号的电路。
由于微分信号线具有这些优点,微分信号传输被用于USB协议、485协议、Ethernet协议和CAN协议的物理层。
1.2.5 CAN协议中的差异信号
CAN协议指定它使用的CAN_High和CAN_Low信号所代表的差异信号,见表及图。以高速CAN协议为例,当表示逻辑1(无形电场),CAN_High和CAN_Low线的电压为2.5V,也就是说,它们的电压差 VH-V:sub:L=0V;而逻辑 0 是表示的(证据水平)。CAN_High的电压为3.5V,CAN_Low线的电平衡为1.5V,这意味着它们的电压差是VH-V:sub:L=2V。例如,当 CAN收发器从 CAN_Tx 线接收到来自 CAN 控制器的低电平信号时 (逻辑 0),它使CAN_High输出3.5V,CAN_Low同时输出1V,因此可见电平面的输出代表逻辑0。


在CAN巴士上,它必须置于隐含电平面(逻辑1)或可视电平面(逻辑0)的其中一个状态。如果有两个CAN通信节点,在同一时间,一个输出隐性电平,另一个输出是可见的电平面,与I2C总线相似的“线和”特性将使它处于明显的电平衡状态,这就是可见电镀的名称的来源。也就是说,它可以被视为具有优先意义。
因为CAN总线协议的物理层只有一对微分线,只有一个信号可以同时表达,所以对于通信节点来说,CAN通信是半双向的,接收和传输数据是按时进行的。在CAN的通讯网络中,因为共用总线,只有一个通信节点在整个网络上同时发送信号,其他节点只能在那个时候接收。
1.3 CAN协议层
1.3.1CAN的频率和位相同步
由于CAN属于非同步通信,没有时钟信号线,每个连接到相同的总线网络的节点将像串行非同步通信,使用商定的频率进行节点间通信,特别地,CAN还使用相位同步来对抗干扰和吸收错误。实现了电线整齐信号的正确采样,确保通讯正常。
1.3.2-bit時間序列分解
为了实现位同步,CAN协议将每个数据点的时间序列分解为图所示的SS节、PTS节、PBS1节和PBS2节。这些四个段的长度是增加到CAN数据点的长度。分解后最小的单位是Tq,一個完整的位置由8-25 Tqs組成。为方便表示,图中的升值水平直接代表信号逻辑0或逻辑1(而不是差分信号)。

图中显示的CAN通信信号为每个数据点的19Tq长度,车队分区 comprises 1Tq,PTS分段为6Tq,PBS第1部分是5Tq,PBS2为7Tq的帐户。信号采样点位于PBS1和PBS2之间,通过控制每个段的长度,可以移动样品点的位置,以便准确地采样。
各 段 的 作用 如下 :
•SS科(SYNC SEG)
SS 译为同步段,如果通信节点检测到沿着主线的信号跳跃属于SS节的范围,这意味着节点和公共汽车的顺序是同步的。当节点与总线同步时,采样点收集的电压水平可以确定为该点的电压水平。该车组的尺寸为1Tq.
• PTS科(PROP SEG)
PTS 译为传播时间段,这个时间段是用于补偿网络的物理延时时间。是总线上输入比较器延时和输出驱动器延时总和的两倍。PTS 段的大小可以为 1~8Tq。
•PBS1(PHASE SEG1),
PBS1 译为相位缓冲段,主要用来补偿边沿阶段的误差,它的时间长度在重新同步的时候可以加长。PBS1 段的初始大小可以为 1~8Tq。
•PBS2(PHASE SEG2)
PBS2 这是另一个相位缓冲段,也是用来补偿边沿阶段误差的,它的时间长度在重新同步时可以缩短。PBS2 段的初始大小可以为 2~8Tq。
1.3.3通信端口速率
总线上的各个通讯节点只要约定好 1 个 Tq 的时间长度以及每一个数据位占据多少个 Tq,就可以确定 CAN 通讯的波特率。
例如,假设图上1Tq = 1us,每个数据点由19个Tq组成,传输数据需要时间T1bit=19us,因此,每秒可以传输的位数是: 1x10 squared/19 = 52631.6 (bps)
每秒可传输的数据位数是通信的带宽。
1.3.4同步过程分析
该比特仅指定每个数据比特的长度,数据同步也涉及阶段细节,这个时候就需要用到数据位内的 SS、PTS、PBS1 及 PBS2 段了。根据对段的应用方式差异,CAN数据同步分为硬同步和重同步。硬同步只能在有帧启动信号时进行.无法确保随后的位数和时间序列同步,重新同步可以解决这个问题,这两个方法的详细描述如下:
(1) 硬同步
如果CAN节点通过总线发送数据,它发送信号指示通信的开始(即下节介绍的帧启动信号),信号是从高到低的下降趋势.由于CAN总线上的通信节点没有传输数据,随时检测公共汽车上的信号。见图 ,你可以在公共汽车上看到一个帧启动信号时,节点检测到总线的帧启动信号不在节点内部时间序列的SS段范围内,因此判断自己的内部时间序列与公共汽车没有同步,因此,在该状态的采样点收集的数据是错误的。因此节点以硬的同步方式调整,本地时间序列中的SS节点与沿着主线出现的部分相配,获得同步,同步后, 抽样点可以收集正确的数据.

(2) 重新同步
以前的硬同步只有在有帧启动信号时才行,如果在一个很长的数据框架里,当节点信号和总线信号相有偏差时,这种同步是无效的。因此,需要引入重同步方法,它与正常数据点的高到低电压平面上的跳跃同步(帧启动信号是特殊的跳跃)。重同步和硬同步的相似之处在于它们都使用SS节点来检测。同步的目的是将SS节点包括在跳动变量沿着节点中。重新同步的方法分为两个情况: 加班和延迟.为了区分公共汽车的相对位置,沿着SS段跳跃。第一阶段过渡情况,如图所示,节点从线端跳到线端,发现其内部时间序列优于一般线的2Tq时间序列,然后控制器在下一个位数时间序列中增加PBS1中的2Tq的时间长度,将节点序列与总线重新同步.

第二种相位滞后的情况如图 ,节点从线端跳到线端,检测到它的时序比总线的时序相对滞后 2Tq,这时控制器在前一个位时序中的 PBS2 段减少 2Tq 的时间长度,获得同步。

在重新同步的时候,PBS1 和 PBS2 中增加或减少的这段时间长度被定义为“重新同步补偿宽度SJW* (reSynchronization Jump Width)”。一般来说,CAN控制器限制SJW的最大值,如果最大SJW=3Tq是有限的,单一同步调整不能增加或减少超过3Tq的时间,若有需要,控制器通过多个小范围调整同步。当控制器设置的SJW限值较大时,吸收误差增加,但通讯的速度会下降
1.3.5 CAN报告的类型和结构
在SPI通信中,芯片选择 、 时钟信号 、 数据输入和数据输出这四个信号有不同的信号线,I2C协议包含两个信号线,有时是钟信号和数据信号。非同步序列由接收和发送两个信号线组成,这些协议中包含的信号比CAN协议更丰富。它们可以很容易地同步数据或区分数据传输方向。CAN使用两个不同的信号线,只能表达一个信号,物理层的简单性决定了CAN必须配备一个更复杂的协议。如何用信号通道实现相同的, 甚至更强大的功能?CAN协议提供了数据包装、操作命令(如读写)和同步信号的解决方案。之后包装的内容称为报告。
报告类型
在原始数据段前添加传输启动标签、卡选择(识别)标签和控制标签,在数据的末尾,添加CRC检查标签、响应标签和传输端标签,将这些内容包装在一个特定的格式中,你可以用一个渠道表达各种信号,不同的标签就像SPI不同频道的信号,它扮演了共同传输的角色。当整个包被转移到其他设备时,只要这些设备在格式上读取,可以恢复原始数据,这些陈述被称为CAN的“数据框架”。
为了更有效地控制通信,CAN列出了5种框架,这些框架的类型和用途在表中描述

数据框架结构
数据框架是CAN通信中最重要的和最复杂的信息。了解数据框架的结构,请参阅图

数据帧以一个显性位 (逻辑 0) 开始,以 7 个连续的隐性位 (逻辑 1) 结束,在它们之间,分别有仲裁段、控制段、数据段、CRC 段和 ACK 段。
2.1 CAN控制核
框图中标号处的 CAN 控制内核包含了各种控制寄存器及状态寄存器,我们主要讲解其中的主控制寄存器 CAN_MCR 及位时序寄存器 CAN_BTR。
2.1.1主控制器CAN_MCR
CAN_MCR主要控制台负责管理CAN的工作模式,并使用下面的控制台 bits实现控制。
2.1.2位数时间序列登记(CAN_BTR)和位数速率


代码列表 CAN初始化结构

CAN发送和接收结构

CAN滤波器结构

本文由 在线网速测试 整理编辑,转载请注明出处。