微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > CAN总线技术及其应用

CAN总线技术及其应用

时间:12-21 来源:互联网 点击:

引言

1986年德国最大的工业企业之一Rober Bosch公司首次提出了应用于汽车内各种传感器和执行器之间相互通信的CAN总线(Controller AreaNetwork)技术以来,以其可靠性、实时性和灵活性强的特点,得到了诸多汽车开发商的青睐。本文介绍了CAN总线的通信协议,分析了CAN总线控制器SJA1000和驱动器PCA82C250的内部结构和工作原理,主要阐述了CAN总线技术在智能小区门禁控制系统中的应用。

1 CAN总线的特点

1.1 CAN总线的位数值表示与通信距离

CAN总线协议是建立在国际标准组织的开放系统OSI 7层互连参考模型基础之上的。其模型结构只有3层,即只取OSI底层的物理层、数据链层和应用层,保证了节点间无差错的数据传输。

CAN总线上用“显性”(Dominant)和“隐性”(Recessive)两个互补的逻辑值表示“0”和“1”。如图1所示,VCNA-H和VCAN-L为CAN总线收发器与总线之间的两接口引脚,信号是以两线之间的“差分”电压形式出现。在隐性状态,VCNA—H和VCAN—L被固定在平均电压电平附近,Vdiff近似于0。显性位以大于最小阀值的差分电压表示。CAN总线的通信距离最远可达10Km(位速率为5 kbps),通信速率最快可达1Mbps(此时最长通信距离为40m)。

图1 CAN总线的位数值传输方式

1.2报文传输

CAN技术的报文传输为多主方式工作,网络上任意节点均可在任意时刻主动地向网络上其它节点发送信息,而不分主从。CAN节点只需通过对报文的标示符滤波即可实现点对点、一点对多点及全局广播等几种方式发送、接收数据。

CAN总线的数据传输(报文传输)采用帧格式。按帧格式的不同,分为含有11位标识符的标准帧和含有29位标识符的扩展帧。CAN总线的帧类型分为数据帧、远程帧、错误帧和过载帧。

1.3仲裁(Arbitration)

只要总线空闲,任何单元都可以开始发送报文。如果两个或两个以上节点同时开始传送报文,那么就会有总线访问冲突。通过使用标识符的逐位仲裁可以解决这个冲突。仲裁的机制确保了报文和时间均不损失。当具有相同标识符的数据帧和远程帧同时发送时,数据帧优先于远程帧。在仲裁期间,每一个发送器都对总线进行监测,如果发送和接收电平相同,则该节点可以继续发送报文。比如发送的是一“隐性”电平,而监视到的是一“显性”电平,那么这个节点就失去了仲裁,必须退出发送状态。

2 CAN总线控制器和驱动器

2.1 CAN总线控制器SJA1000的内部结构

CAN总线控制器主要保证数据链路层和物理层的通信质量。SJA1000是一种独立的CAN总线控制器。SJA1000的内部结构如图2所示。

图2 SJA1000内部结构图

各功能模块的作用如下:

接口管理逻辑(IML)负责解释来自CPU的命令,控制CAN寄存器的寻址,向主控制器(CPU)提供中断信息和状态信息。发送缓冲器(TXB)是CPU和位流处理器(BSP)之间的接口,负责存储发送到CAN总线上的一条完整的报文。发送缓冲器的长度为13个字节,由CPU写入、位流处理器读出。

接收缓冲器(RXB、长度为13个字节)是验收滤波器和CPU之间的接口,用来存储从CAN总线上接收并被确认的信息。作为接收FIFO(RXFIFO,长度为64字节)的一个窗口,接收缓冲器可被CPU访问。CPU在接收FIFO的支持下,可以在处理一条报文的同时接收其他报文。

验收滤波器(ACF)将一条接收到的报文标识码与验收滤波器中的预设值相比较,以决定是否接收这条报文。在纯粹的接收测试中,所有的报文都保存在接收FIFO中,但只有验收滤波通过且无差错的报文,才能被保存在接收缓冲器中。

位流处理器(BSP)是一个控制发送缓冲器、接收FIFO和CAN总线之间数据流的程序装置。它还执行总线上的错误检测、仲载、总线填充和错误处理。位时序逻辑(BTL)监视串行的CAN总线和位时序。它在信息开头“弱势支配”的总线传输时,同步CAN总线位流(硬同步),接收报文时再次同步下一次传送(软同步)。

错误管理逻辑(EML)负责限制传输层模块的错误。它接收来自位流处理器的出错报告,然后把有关错误统计告诉位流处理器和接口管理逻辑(IML)。

2.2 SJA1000的内部寄存器

SJA1000有两种工作模式,即BasicCAN模式和PeliCAN模式。在这两种模式中,SJA1000寄存器从数量、地址分配到功能等方面都有所区别。SJA1000在复位状态下的默认模式为BasicCAN模式。CAN控制器在两种模式中又都有两种状态模式,分别称为操作模式和复位模式。处在这两种不同状态的模式中,对寄存器的访问操作功能是不同的。SJA1000的控制寄存器、命令寄存器、状态寄存器、发送缓冲器(均为8位)等

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top