基于LPC2368的CAN总线智能节点设计*

2010-08-11 05:27周爱军胡宏灿崔大连
舰船电子工程 2010年7期
关键词:收发器微控制器中断

周爱军 胡宏灿 崔大连

(海军大连舰艇学院装备自动化系 大连 116018)

1 引言

最初CAN-bus被设计作为汽车环境中的微控制器通讯工具,用于在车载各电子控制装置ECU之间交换信息,从而形成汽车电子控制网络。CAN总线使用多主机模式进行组网,通讯方式灵活;使用非破坏性的总线仲裁技术,节省了总线冲突仲裁时间;数据包采用短帧结构,传输时间短,受干扰概率低,传输距离长;具备完善的错误处理机制,保证了总线的健壮性。可以说CAN-bus总线在通信能力、可靠性、实时性、灵活性、易用性、传输距离等方面较其他串行总线有着明显的优势。鉴于此,很多单片机厂商纷纷将CAN协议控制器集成在微控制器芯片上,LPC2368是PHILIPS公司推出的一款性价比很高的ARM7核处理器,内部集成两路独立的CAN控制器,以其性能高、成本低和能耗小的特点,适用于多种工控领域,本文主要介绍基于LPC2368的CAN智能节点设计[1~2]。

2 硬件设计

2.1 LPC2368微控制器特点

LPC2368处理器是基于一款支持实时仿真和跟踪的 32位 ARM7TDMI微控制器,并带有512KB嵌入的高速FLash存储器,58KB的SRAM;128位宽度的存储器接口和独特的加速结构,使32位代码能够在最大时钟速率下运行;对代码规模有严格控制的应用可使用Thumb指令进行开发,可将代码规模降低30%,而性能的损失却很小;指令实行三级流水线作业,提供Embedded ICE逻辑单元,支持片上断点和调试点,具有先进的软件开发和调试环境。LPC2368内部集成2个CAN控制器,每一个CAN控制器都与PHILIPS出品的独立CAN控制器SJA1000有着相似的寄存器结构,单个总线上的数据传输速率可高达1Mb/s;兼容CAN2.0B,符合IS011898-1规范;全局验收滤波器可以识别所有的11位和29位标识符;验收滤波器为选择的标识符提供Full-style自动接收。

2.2 CAN智能节点硬件电路

CAN总线接口部分包括 LPC2368内置的CAN协议控制器、光电耦合器和总线收发器[3],如图1所示。

图1 接口电路图

由于LPC2368内置了CAN协议控制模块,所以节点硬件电路只需设计好协议控制器和总线收发器以及总线收发器和总线的接口电路即可。这里我们选用了PHILIPS公司(现为NXP公司)的TJA1050高速总线收发器。在整个应用中,微控制器内置的CAN协议控制模块主要完成CAN的通信协议,实现报文的装配和拆分、接收信息的过滤和校验等工作;收发器TJA1050实现CAN协议控制器和通信线路的物理连接,提高CAN总线的驱动能力和可靠性;为了进一步提高系统的抗干扰能力,LPC2368引脚 Tx1、Rx1与收发器 TJA1050并不直接相连,而是使用高速光耦合 6N137和TJA1050相连[4]。

电路中采用隔离型DC/DC模块B0505S-1W向收发器电路供电。这样就可以很好地实现总线上各节点的电气隔离,这部分电路虽增加了接点的复杂性,但却提高了接点的稳定性和安全性。

TJA1050与总线接口部分,使CANH、CANL与地之间并联滤波电容,以达到消除总线高频干扰的目的,并且使节点具备一定的防电磁辐射能力。在选取电容大小的时候必须考虑总线节点的数量和总线传播速率,当T JA1050的输出级阻抗约200欧姆,总线系统有10个节点,速度是500kbit/s时,则电容的值不应该超过470pF。

在两根CAN总线接入端与地之间分别反接了一个保护二极管。当CAN总线有较高的负电压时,二极管的短路可起到一定的过压保护作用。根据TJA1050的特性,本设计中CAN终端电阻使用了分裂终端,即总线端节点的两个终端电阻都被分成两个等值的电阻,用两个60Ω的电阻取代120Ω的电阻,可以有效降低辐射。

3 软件设计

软件调试环境采用KEIL公司的keil uvision 4,通过 ULINK仿真调试。软件设计部分包括CAN协议控制器的初始化、报文的接收、报文的发送及总线错误处理四个模块[5]。

3.1 CAN协议控制器的初始化

系统是否能正常地工作,初始化程序的设计是个关键。必须对写入每个寄存器的内容进行仔细和全面的考虑。控制器初始化工作主要包括:硬件使能、配置管脚连接、软件复位、设置总线波特率、配置模式寄存器、配置中断工作方式、配置验收滤波器、启动CAN工作等。这部分内容与通用CAN协议控制器SJA1000相似,不再赘述。

3.2 报文接收

CAN报文的接收采用中断方式。在ARM7TDMI核处理器中向量中断控制器VIC具有32个中断请求输入,可将其编程分为3类:FIQ、向量IRQ和非向量IRQ。每个片内外设都有一条中断线连接到向量中断控制器,其中CAN控制器的VIC通道号是19~23。考虑到CAN控制器的中断源较多,笔者采用非向量中断。为了避免接收到的数据因为没有得到及时处理而造成数据丢失,我们定义了接收缓冲区,采用环形缓冲结构(类似于SJA1000CAN控制器中64字节FIFO环形缓冲)来接收数据。结合定义的环形缓冲区来进行CAN报文的接收程序设计。CAN报文接收模块流程如图2所示。

3.3 报文的发送

LPC2368中CAN控制器为了提高大量数据发送的效率,每个CAN控制器配有三个独立的发送缓冲寄存器,这点和SJA1000有所不同。因此与SJA1000的发送程序相比要相对复杂。因为发送时是根据缓冲区的实际情况有选择的把数据写入三个发送缓冲之一。每个缓冲区的状态通过查询CANSR得知。所以在设计发送程序的时候要先判断哪个缓冲是空闲的,然后再把数据写入缓冲区,启动发送。报文发送流程如图3所示。

3.4 总线错误处理

为了使节点工作的更加可靠,对工作过程中发生的错误必须进行处理。工作过程中的错误中断类型有两种,一是错误报警中断,另一个是总线错误中断,前者是产生的条件是错误计数器的值超过96,中断处理方式通常为清零所有的错误计数器的值,维持CAN的运行;而总线错误中断产生的条件是错误计数器的值到达255,中断错误处理方式为复位节点,重新初始化CAN控制器。从错误中断产生的条件可以得出,错误报警中断会屏蔽总线错误中断,所以为了简化错误处理过程,我们可以使节点打开总线错误中断而屏蔽错误报警中断,在总线错误累计255次后,CAN节点脱离总线,总线错误中断的处理是复位该节点,重新初始化CAN控制器,这样可以消除错误,给节点一个很好的初态,使节点重新回归正常工作状态。

4 结语

本文采用LPC2368作为主控CPU,利用其内嵌CAN协议控制器和外置的TJA1050总线收发器给出了CAN智能节点的通讯接口设计和软件实现流程。本设计在学校导航装备仿真模拟实验室的建设中得到了使用,试验证明,本设计方案和“单片机+CAN协议控制器+总线收发器”设计方案相比,有开发简单、工作稳定可靠、支持在系统编程、便于功能扩展等优势,具有较高的容错能力和自我诊断修复功能。

[1]周立功.ARM嵌入式系统基础教程[M].北京:电子工业出版社,2008

[2]王黎明.CAN现场总线系统的设计与应用[M].北京:电子工业出版社,2008

[3]孙传友.测控电路及装置[M].北京:北京航空航天大学出版社,2007

[4]张毅刚.新编MCS-51单片机应用设计[M].北京:电子工业出版社,2003

[5]饶运涛.现场总线CAN原理与应用技术[M].北京:北京航天航空大学出版社,2003

猜你喜欢
收发器微控制器中断
TASKING针对英飞凌第三代AURIX微控制器推出多核开发环境
光纤收发器故障排除经验谈
“单片机中断概述”微课教学设计
一种考虑GPS信号中断的导航滤波算法
Linux中断线程化分析及中断延时测试
用于高品质电动汽车的分布式并行计算
跟踪导练(二)(5)
Virtex5 FPGA GTP_DUAL硬核两个收发器独立使用的实现
电磁导向智能车设计探讨
光纤收发器常见故障原因