基于CAN总线的接口电路设计_侯明
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
2008年第07期,第41卷 通 信 技 术 Vol.41,No.07,2008 总第199期Communications Technology No.199,Totally
基于CAN总线的接口电路设计
侯 明①, 杜 奕②
(①昆明理工大学 信息工程与自动化学院,云南 昆明 650031;②昆明理工大学 应用技术学院,云南 昆明 650031)
【摘要】文中介绍了CAN总线的主要性能及特点,CAN总线在实际工业应用中的总体结构,同时给出了CAN总线协议转换器的硬件设计方法和通信协议。主要研究了CAN总线接口电路设计,所设计的总线接口电路由微处理器、CAN控制器、CAN总线收发器组成,并且详细介绍了CAN控制器、CAN收发器的功能以及CAN总线接口的硬件电路和硬件条件下的软件设计,为后续CAN 总线接口电路的应用打下了基础。
【关键词】CAN总线;SJA1000;接口
【中图分类号】TP29 【文献标识码】A【文章编号】1002-0802(2008)07-0138-03 Interface Circuit Design Based on CAN Bus
HOU Ming①, DU Yi②
(①College of Information Engineering and Automation Kunming University of Science and Engineering, Kunming Yunnan 650003, China;
②College of Applied Technology, Kunming University of Science and Engineering Kunming Yunnan 650003, China)
【Abstract】In this paper, the main CAN bus performance and features are presented, including the general structure of the CAN bus used in industrial application, and the hardware design methods of the CAN bus protocol converters and communication protocols are also given. This paper discusses the main interface circuit design of CAN Bus, which consists of microprocessor, CAN controller, CAN bus transceiver, and describes in detail the CAN controller, CAN transceiver of the CAN Bus interface, including the features of the hardware and the software design under the conditions of the hardware design. All these lay a foundation for the application of follow-up CAN.
【Key words】CAN bus; SJA1000; interface
0 引言
CAN(Controller Area Network)即控制器局域网络,是一种高性能、高可靠性、易开发和低成本的现场总线,是德国Bosch公司为解决现代汽车中众多的控制与测试仪器之间的数据交换而开发的一种串行数据通信协议。它是一种多主总线,通信介质可以是双绞线、同轴电缆或光导纤维,通信速率可达1 Mb/s,距离可达10 km。CAN协议的一个最大特点是废除了传统的站地址编码,而代之以对通信数据块进行编码,使网络内的节点个数在理论上不受限制。由于CAN总线具有较强的纠错能力,支持差分收发,因而适合高干扰环境,并具有较远的传输距离。因此,CAN协议对于许多领域的分布式测控很有吸引力。
CAN总线以目前技术条件较成熟的IS0/0SI模型为基础,与别的网络相比,它的信息传递的格式为报文。报文的长度可以不同,但都是有限的。当总线空闲时任何已连接的单元都可以开始发新的报文,报文以全网广播方式散发出去。各接收站根据报文的内容而不是地址进行判决,不需在信息中加入地址。
目前汽车上的网络连接方式主要采用2条CAN,一条用于驱动系统的高速CAN,速率达到500 kb/s;另一条用于车身系统的低速CAN,速率是100 kb/s。驱动系统CAN主要连接对象是发动机控制器(ECU)、ABS控制器、安全气囊控制器、组合仪表等等,它们的基本特征相同,都是控制与汽车行驶直接相关的系统。车身系统CAN主要连接和控制的汽车
收稿日期:2008-05-19。
作者简介:侯 明(1974-),男,讲师,主要研究方向为计算机硬件控制;杜 奕(1977-),男,讲师,主要研究方向为信息融合。
138
内外部照明、灯光信号、雨刮电机等电器。因此有必要全面了解CAN总线接口和控制器。[1]
1 CAN通信控制器
CAN的通信协议主要由CAN控制器完成。CAN控制器主要由实现CAN总线协议的部分和实现与微处理器接口部分的电路组成。对于不同型号的CAN总线通信控制器,实现CAN协议部分电路的结构和功能大多相同,而与微处理器接口部分的结构和方式存在一些差异。目前生产CAN器件的知名厂商有:Intel、PHILIPS等。其CAN器件既有独立CAN控制器,也有包含CAN内核的微控制器和DSP等。[2]
这里主要以独立CAN控制器SJA1000为代表对CAN控制器的功能作一个简单介绍。SJA1000是适用于汽车和一般工业环境的独立CAN控制器。SJA1000是一种独立的CAN控制器,主要用于移动目标和一般工业环境中的区域网络控制。它是Philips公司PCA82C200控制器的替代产品,除了PCA82C200的Basic CAN操作模式以外,还增加了一种新的操作模式—PeliCAN,这种模式支持具有很多新特性的CAN2.0B协议。
2 硬件实现
CAN总线通信控制器的硬件电路结构如图1所示。主要包括主控制器、时钟保持电路、非易失性EEPROM存储器、CAN 总线接口电路和RS232接口电路。主控制器采用性价比高、结构简单、便于编程的AT89C51单片机,主要用于对CAN控制器SJA1000 及RS232串口的初始化,并通过对CAN控制器SJA1000 及RS232串口的控制操作实现现场CAN总线与管理层中央服务器PC的数据交换等通信任务。[3]
图1 CAN通信控制器的硬件电路结构
CAN总线接口电路的构成主要由CAN通信控制器SJA1000、高速光耦6N137和CAN总线驱动器82C250组成。SJA1000作为CAN总线协议转换的控制器,它内建BASIC CAN 协议,并提供对CAN2.0B协议的支持。通过对片内寄存器的读、写操作,主控制器单片机能够设置CAN总线通信模式,实现数据的发送与接收。
SJA1000在逻辑上实现了传输数据的编码和解码[4],若要与物理线路连接,还必须借助总线驱动器82C250,以增强CAN总线的差动发送和接收驱动能力。为了增强CAN 总线节点的抗干扰能力,防止线路间串扰,SJA1000 的TX0 和RXO 并不是直接与82C250 的TXD 和RXD 相连,而是通过高速光耦6N137 后再与82C250 相连;另外,CAN总线驱动器采用带隔离的DC/DC模块单独供电,实现了通信控制器与CAN总线的隔离,提高系统的可靠性。图2给出了CAN总线系统硬件电路
原理图。
图2 CAN总线系统硬件电路原理
这里采用PCA82C250作为驱动收发器[5],它是CAN控制器和物理传输线路之间的接口。它们可以用高达1 Mb/s的位速率实现在两条差动电压总线电缆上的数据传输。82C250的CANH和CANL引脚各自通过一热敏电阻与CAN总线相连,当过流时电阻发热阻值变大,保护82C250免受过流的冲击。CANH 和CANL与地之间并联两个小电容,可以起到滤除总线上的高频干扰和一定的防电磁辐射的能力。
RS232接口电路主要用于主控制器单片机与管理层中央服务器PC的双向数据传送。由于采用了标准的RS232串行通信,结构简单、成本低。CAN总线系统电路主要由四部分所构成:微控制器89C51、CAN控制器SJA1000、CAN总线收发器82C250和高速光电耦合器6N137微处理器。89C51负责SJA1000 的初始化,通过控制SJA1000实现数据的接收和发送等通信任务。[6]
SJA1000的AD0~Dl7连接到89C51的Po口,CS连接到89C51的P2.0,P2.0为0的CPU 片外存贮器地址可选中SJAIOOO,CPU 通过这些地址可对SJAlO0O执行相应的读写操作。SJAl0OO的RD、WR、ALE分别与89c51的对应引脚相连。INT接89c51的INT0,89C51也可通过中断方式访问SJA1000。
SJAIOOO和82C25O分别使用物理隔离的电源供电,是为了增强系统的抗干扰能力和可靠性。不过应该特别说明的一点是光耦部分电路所采用的两个电源vI3C和VDD必须完全隔离,否则采用光耦也就失去了意义。电源的完全隔离可采用小功率电源隔离模块或带多5 V隔离输出的开关电源模块实现。这些部分虽然增加了节点的复杂,但是却提高了节点的稳定性和安全性。
控制器的其他外围电路还有电源模块、非易失性EEPROM 存储器、时钟保持电路、LED指示灯和看门狗等。非易失性EEPROM存储器采用具有2KB容量的AT24C02,用于保存系统配置参数及各节点的最新信息,便于管理层的查询。时钟保持电路选用涓流充电时钟芯片DS1302,其内部含有实时时钟和日历,通过简单的串行接口与单片机进行通信,用于给各节点控制器校时。同时,控制器还配置了4个LED指示灯,分别用于系统上电、CAN通信、RS232通信和系统通信故障的指示,以方便系统的调试和对控制器运行状况的监测。[7]
139