摘 要:本文介绍了CAN总线的特点和通信方式,并初步设计了一个CAN总线通信系统,搭建了78F0881的CAN通讯模块程序框架,为以后CAN总线在电动车领域的应用提供参考。
关键词:78F0881 CAN控制模块 CAN总线 分布式控制
中图分类号:TP336文献标识码:A文章编号:1674-098X(2011)03(b)-0061-01
控制器局域网(CAN)是一种有效支持分布式控制或实时控制的现场总线,具有高性能和高可靠性的特点;随着现代汽车技术的发展,CAN技术在汽车电子领域应用日益广泛。
1 CAN总线的特点
(1)具有实时性强、传输距离较远、抗电磁干扰能力强、成本低等优点;(2)采用双线串行通信方式,检错能力强,可在高噪声干扰环境中工作;(3)具有优先权和仲裁功能,多个控制模块通过CAN控制器挂到CAN-bus上,形成多主机局部网络;(4)可根据报文的ID决定接收或屏蔽该报文;(5)可靠的错误处理和检错机制;(6)发送的信息遭到破坏后,可自动重发;(7)节点在错误严重的情况下具有自动退出总线的功能;(8)报文不包含源地址或目标地址,仅用标志符来指示功能信息、优先级信息。
2 CAN总线通信的硬件设计
主控制器芯片选用的是NEC公司的78K0/FC2系列8位MCU,型号为μPD78F0881(A),封装为44管脚LQFP。此款芯片具有功能强大,工作可靠,使用简单,成本低廉等优点,被广泛用在汽车电子、工业设备中。该芯片不仅支持大容量存储器扩展,且在内部集成了32K字节的FLASH ROM,1024字节的高速RAM以及1024字节的内部扩展RAM;32个8位通用寄存器;37个I/O口;8路定时器;多个串行通讯接口,包括1路UART(支持LIN),1路CSI/UART复用,1路CAN。8路10位A/D转换通道。NECμPD78F0881(A)芯片内部已经集成了CAN控制器,对CAN有很好的支持,因此在设计该部分电路时还需选择一款可靠的CAN收发器,这里选用了Philips公司生产的TJA1050作为CAN收发器。TJA1050是82C250高速CAN收发器的后继产品。该器件提供了CAN控制器与物理总线之间的接口以及对CAN总线的差动发送和接收功能。TJA1050可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。
3 CAN总线通信的软件规划
NECμPD78F0839(A)芯片为内部集成CAN模块的8位微处理器,在使用CAN控制器之前首先必须对它的内部寄存器进行初始化设置,包括相关I/0口,位定时器的设置以及邮箱的相关配置。着重介绍一个汽车电子系统的程序框图。
通信协议的制定:在设计的协议中,参考J1939,采用CAN2.0b协议,为29位扩展ID。如表1所示为29位标识符的分配表。其中优先级为3位,可以有8个优先级,R一般为0;DP现固定为0;8位PF为报文代码;8位PS为目标地址或组扩展;8位SA为发送此报文的源地址。
软件设计:(1)CAN模块初始化;(2)接受和发送相应的CAN报文;(3)CAN报文解码;
CAN模块通信程序框图如图1所示。
4 小结和展望
NECμPD78F0881内嵌的CAN模块使得硬件电路设计更为简单、可靠,同时,采用C语言编程使得程序的设计难度降低,提高程序的可维护性和缩短开发时间,以上实例只是一个比较简单的框架,可根据不同的需求作出扩展。
参考文献
[1]邬宽明.CAN总线原理和应用系统设计[M].北京:北京航空航天大学出版社,1996.
[2]BOSCH公司CAN specification V 2 0.
[3]奎宪惠.现场总线技术及其应用[M].清华大学出版社.