车辆(五)——汽车CAN总线系统
一、汽车电子技术概述
1.1现代汽车电子技术的发展阶段
- 电子管时代:20世纪50年代;
- 晶体管时代:20世纪60年代;
- 集成电路时代:20世纪90年代;
- 网络化综合技术时代:以微控制器为核心的汽车电子控制单元通过汽车电子网络系统连接起来,实现通信与控制的网络化管理。
1.2OSI参考模型分层
- 物理层:完成相邻节点之间原始比特流的传输。提供为建立、维护和拆除物理链路所需要的机械的、电气的、功能的和规程的特性;有关的物理链路上传输非结构的位流以及故障检测指示。
- 数据链路层:在不可靠的物理线路上进行数据的可靠传输。在网络层实体间提供数据发送和接收的功能和过程;提供数据链路的流控。
- 网络层:完成网络中主机间的报文传输。控制分组传送系统的操作、路由选择、拥护控制、网络互连等功能,它的作用是将具体的物理传送对高层透明。
- 传输层:完成网络中不同主机上的用户进程之间可靠的数据通信。提供建立、维护和拆除传送连接的功能;选择网络层提供最合适的服务;在系统之间提供可靠的透明的数据传送,提供端到端的错误恢复和流量控制。
- 会话层:允许不同机器上的用户之间建立会话关系。提供两进程之间建立、维护和结束会话连接的功能;提供交互会话的管理功能,如三种数据流方向的控制,即一路交互、两路交替和两路同时会话模式。
- 表示层:代表应用进程协商数据表示;完成数据转换、格式化和文本压缩。
- 应用层:提供OSI用户服务,例如事务处理程序、文件传送协议和网络管理等。
二、CAN总线基本原理
2.1CAN总线基本特点
CAN —— Controller Area Network是20世纪80年代初德国Bosch公司为解决现代汽车众多控制单元、测试仪器之间的实时数据交换而开发的一种串行通讯协议。
(1)采用双线差分信号。屏蔽或非屏蔽的双绞线。传输速率最大1Mbps,总线长度<=40米,随总线长度增加传输速率降低。
(2)节点数量没有限制,可以动态改变。
(3)广播发送报文,报文可以被所有节点同时接收。
(4)多主站结构,各节点平等,优先权由报文标识符ID确定。
(5)采用短帧结构,每一帧的有效字节数为8个。
(6)每个报文的内容通过标识符识别,标识符在网络中是唯一的:标识符描述了数据的含义;某些特定的应用对标识符的分配进行了标准化。
(7)根据需要可对相关性报文过滤。
(8)数据在整个系统范围内具有一致性:CAN提供了一套复杂的错误检测与错误处理机制,包括:CRC检测、接口的抗电磁干扰能力、错误报文的自动重发、临时错误的恢复以及永久错误的关闭。
(9)总线访问方式——非破坏性仲裁的载波侦听多路访问/冲突避免:a.载波侦听,网络上各个节点在发送数据前都要检测总线上是否有数据传输。若网络上有数据,则不发送数据,等待网络空闲;若网络上无数据,则立即发送已经准备好的数据。b.冲突避免,节点在发送数据过程中要不停地检测发送的数据,确定是否与其他节点数据发生冲突。
(10)采用NRZ(非归零)和位填充的位编码方式,保证较高信息传输量与准确度。
2.2CAN的分层结构
CAN被细分为物理层和数据链路层。
三、CAN的消息帧
CAN有两类消息帧,其本质的不同在于ID的长度:标准帧和扩展帧。
CAN的消息帧根据用途分为四种不同的类型:数据帧用于传送数据;远程帧用于请求发送数据;错误帧用于标识探测到的错误;超载帧用于延迟下一个信息帧的发送。
3.1数据帧
数据帧由7个不同的位场组成,即帧起始、仲裁场、控制场、数据场、CRC场、应答场和帧结束。
- 帧起始(SOF):标志数据帧和远程帧的开始,它仅由一个显性位构成,只有在总线处在空闲状态时,才允许开始发送。所有站必须同步于首先开始发送的那个站的帧起始前沿
- 仲裁场:在标准格式中,仲裁场由11位标识符和RTR位组成;在扩展格式中,仲裁场由29位标识符和SRR位、标识位以及RTR位组成。【ID唯一确定一条报文,ID越小优先级越高】【RTR用于区分数据帧和远程帧:数据帧,RTR=0,显性;远程帧,RTR=1,隐性】
- 控制场:由6位组成。在标准格式中,一个信息帧中包括DLC、发送显性电平的IDE位和保留位r0。在扩展格式中,一个信息帧包括DLC和两个保留位r1和r0,这两个位必须发送显性电平。DLC(数据长度码):数据场的字节数目由数据长度码给出。数据长度码为4位,在控制场中被发送。
- 数据场:由数据帧中被发送的数据组成,可包括0-8字节。
- CRC场:包括CRC序列和CRC界定符。
- 应答场:包括2位,即应答间隙和应答界定符。
- 帧结束:每个数据帧和远程帧均有7个隐性位组成的标志序列界定。
3.2远程帧
接收数据的节点可以通过发送远程帧要求源节点发送数据,由6个域组成:帧起始、仲裁场、控制场、CRC场、应答场和帧结束。没有数据场,RTR位为隐性电平。
3.3出错帧
由错误标志和错误界定符两个域组成。
3.4超载帧
包括两个位场:超载标志和超载界定符。
四、通讯机制
- 报文发送时要检测总线状态:只有总线空闲,节点才能发送报文;在发送报文过程中进行回读,判断送出的位与回读的位是否一致。
- “线与”机制:通过ID进行仲裁;线性位(0)能够覆盖隐性位(1),所以ID越小报文优先级越高。
- 非破坏性仲裁:退出仲裁后进入“只听”状态;等待总线再次空闲时进行报文重发。
- 报文接收过滤:通过过滤器,节点可以对接收的报文进行过滤,若相关,则接收;若不相关,则过滤。
- NRZ编码
- 位填充:发送时位填充——发送节点发送5个连续的相同极性位后,在位流中自动插入一个极性相反的位;接收后清除填充——接收节点对相同极性位的数量进行检测,从位流中将填充位去掉。
五、位定时与同步
1.波特率
- 波特率由编程设置的时间份额tQ大小和数量确定;
- 波特率 = 1 / 位时间;位时间 = 时间份额tQ × 位时间中时间份额的数量;
- 常见波特率:500Kb/s、250Kb/s(高速CAN、100Kb/s(低速CAN)
2.时间份额
时间份额是从振荡器周期派生出来的一种定长时间单元。它存在一个可编程的分度值,它们都是整数,最小范围为1~32。从最小份额开始,时间份额的长度可以是:时间份额=m*最小时间份额。
3.同步
由于节点的振荡器漂移,网络节点之间的传播延迟以及噪声干扰等,导致节点间产生相位误差,需同步。
CAN的同步包括硬同步和重同步两种同步方式
- 硬同步:硬同步只在总线空闲时通过一个下降沿(帧起始)来完成,此时不管有没有相位误差,所有节点的位时间重新开始。强迫引起硬同步的跳变沿位于重新开始的位时间的同步段之内。
- 重同步:在消息帧的随后位中,每当有从“隐性位”到“显性位”的跳变,并且该跳变落在了同步段之外,就会引起一次重同步。重同步机制可以根据跳变沿增长或者缩短位时间以调整采样点的位置,保证正确采样。
4.位时间
- 一个位时间,顾名思义一个位在通讯过程中所用时间;
- 一个位时间包含4个部分,8-25个时间份额;
- 为方便编程,许多CAN模块将传播段和相位缓冲段1合并为一个时间段,即有三个时间段
- 同步段:一个位的输出从同步段开始;同步段用于同步总线上的各个节点,引起硬同步的跳变沿产生在此段内;固定长度,1个时间份额。
- 传播段:用于补偿信号通过网络和节点传播的物理延迟;传播长度应能保证2倍的信号在总线的延迟;长度可编程(1至8个时间份额,或更长)【延迟时间的确定:保证2倍信号在总线上的延迟需要考虑ACK】。
- 相位缓冲段:通过重同步对相位缓冲段1加长和相位缓冲段2缩短;可调节最大长度为重同步跳转宽度(RJW);在相位缓冲段1末端进行总线状态的采样;长度可编程(1至8个时间份额,或更长)。
同步跳转宽度, (SJW)
要求 SJW为PES1(PBS1)和PES2(PBS2)调整的最大 长度
SJW必须小于PES1和PES2的最小值
SJW可以通过编程从1到Min(Phase_Seg1,4)取值。