CAN总线技术详解与测试【硬件】

2020-05-29 15:05:39 浏览数 (1)

CAN总线在硬件系统中占有一席之地,国际上应用最广泛的现场总线之一,与我们讲过的SPI、UART不同,属于“高端高效”系列。

01

CAN总线由来

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

02

CAN总线为什么这么好用

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

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

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

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

03

CAN总线技术原理

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

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

CAN总线的软件报文

在上面这组报文中:

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

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

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

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

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

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

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

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

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

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

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

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

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

04

CAN总线物理层

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

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

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

05

常用CAN控制器与收发器

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

SJA1000是用的较多的独立CAN控制器,价格又很便宜,几十块钱。SJA1000可以和51单片机、STM32等组合快速搭建CAN总线网络。SJA1000通过并行总线与MCU连接,需要通过地址、数据、读写控制等多个线进行连接。

PCA82C250收发器是CAN控制器的物理接口,可以给总线提供差动发送和接受信号。和SJA1000一样,都是采用5V供电。

没玩过CAN总线的小伙伴,可以自制或者淘宝购买2个带有单片机 控制器和收发器的开发板,两者之间一对一点对点通信,一块作为主控发送控制数据,另一块接受数据并执行操作,比如点个灯。如此简单,就试试吧!

0 人点赞