×
接口总线驱动 > 详情

CAN总线技术原理和物理层

发布时间:2023-12-19 发布时间:
|

CAN总线在硬件系统中占有一席之地,国际上应用最广泛的现场总线之一,与我们讲过的SPIUART不同,属于“高端高效”系列。很多小伙伴希望我们讲讲CAN总线,今天就来了。

一句话总结:CAN总线是将离散独立的数据线整理到统一节点上。

1、CAN总线由来

CAN总线最早是由BoschIntel在80年代末开发的,虽然最早是用在汽车级的通信系统中的,但是随着技术的发展,CAN总线应用范围已经不在局限于汽车中,像机器人、工业、自动控制系统中,都有广泛的应用。

2、CAN总线为什么这么好用

以CAN总线应用最广的汽车给大家举例,汽车电子控制系统之间的数据通信基本上都是通过CAN总线实现。

在下图中,Motronic控制单元和变速箱控制单元之间的数据通信包含5根数据线。这还仅仅是两个控制器之间的传输线。如果我们再加上转向控制、雨刷控制、车窗控制等等,就需要大量的信号数据线,这个时候会导致整车的电子控制系统线路复杂,维修起来也非常困难。

而如果使用CAN总线,各个控制单元之间的信息通过两根数据线就可以进行交换了:

使用CAN总线之后的通信网络对比:

3、CAN总线技术原理

CAN总线使用串行数据传输方式,可以1Mb/s的速率在40m的双绞线上运行,也可以使用光缆连接,而且支持多主控制器。

当CAN总线上的一个节点(站)发送数据时,它以报文形式广播给网络中所有节点。对每个节点来说,无论数据是否是发给自己的,都对其进行接收。

CAN总线的软件报文在上面这组报文中:仲裁域,每组报文开头内容,前11位字符为标识符,定义了报文的优先级,这种报文格式称为面向内容的编址方案。在同一系统中标识符是唯一的,不可能有两个站发送具有相同标识符的报文。当几个站同时竞争总线读取时,这种配置十分重要。

在仲裁域的最后一位是远程传输请求位(RTR),代表信息帧是数据帧还是不包含任何数据的远地请求帧

控制域,前两位是保留位,作为扩展位,DLC表示一帧中数据字节的数目。

数据域,包含0~8字节的数据。

校验域,检验位错用的循环冗余校验域,共15位。

结束域,由七位隐性电平组成。

CAN总线是可靠性很高的总线,共有五种错误:

CRC错误:发送与接收的CRC值不同发生该错误;

格式错误:帧格式不合法发生该错误;

应答错误:发送节点在ACK阶段没有收到应答信息发生该错误;

位发送错误:发送节点在发送信息时发现总线电平与发送电平不符发生该错误;

位填充错误:通信线缆上违反通信规则时发生该错误。

当发生这五种错误之一时,发送节点或接受节点将发送错误帧。

4、CAN总线物理层

在节点终端的接口器件有三种形式,如下图:

CAN总线的终端电阻的接法如下:

增加终端电阻的目的是为了增强CAN通讯的可靠性,消除CAN总线终端信号反射干扰。CAN总线网络最远的两个端点通常要加入终端匹配电阻,如上图。一般如果CAN总线使用的是在双绞线上运行,这时我们会增加120Ω的电阻,这是因为匹配电阻是由传输电缆的特性阻抗决定的。

5、常用CAN控制器与收发器

在开发板上CAN总线需要控制器和收发器,下图是常用的CAN总线接口电路

SJA1000是用的较多的独立CAN控制器,价格又很便宜,几十块钱。SJA1000可以和51单片机STM32等组合快速搭建CAN总线网络。SJA1000通过并行总线与MCU连接,需要通过地址、数据、读写控制等多个线进行连接。PCA82C250收发器是CAN控制器的物理接口,可以给总线提供差动发送和接受信号。和SJA1000一样,都是采用5V供电。
 


『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
采用BC定时查询方式的总线控制器异步通讯处理方案