《电子技术应用》
您所在的位置:首页 > 嵌入式技术 > 设计应用 > 基于LPC2294的CAN总线智能节点设计
基于LPC2294的CAN总线智能节点设计
微计算机信息
王铁钢,王忠庆
摘要: 隔离CAN收发器CTM1050T的使用取代了在以往的设计方案中需要高速光耦(6N137)、DC/DC电源隔离模块、CAN收发器等分立元件才能实现的带隔离的CAN收发电路,现在只需利用一片CTM1050T接口芯片就可以实现带隔离的CAN收发电路,并且隔离电压可以达到DC 2500V。在简化硬件电路开销的同时提高了系统的抗干扰性能。
Abstract:
Key words :

一。本设计给出的CAN总线智能节点设计方案,它采用内置多路CAN总线控制器的LPC2294作为主控制器,采用隔离CAN收发器CTM1050T作为收发器,使得该节点体积小、功耗低、抗干扰性好,因而特别适用于汽车、工业控制以及医疗系统和容错维护总线中。

1.硬件设计

1.1 LPC2294的特点

LPC2294是PHILIPS公司推出的一款功能强大的超低功耗的具有ARM7TDMI内核的32位微控制器。内部嵌入256 KB的高速Flash 存储器和16KB静态RAM。128 位宽度的存储器接口和独特的加速结构使32 位代码能够在最大时钟速率(60MHz)下运行。对代码规模有严格控制的应用可使用16 位Thumb 模式将代码规模降低超过30%,而性能的损失却很小。

由于LPC2294 的144 脚封装、极低的功耗、两个个32 位定时器、八通道10 位ADC、四路互连的CAN接口、PWM 通道(六路)以及多达九个外部中断管脚使它们特别适用于汽车、工业控制应用以及医疗系统和容错维护总线。

LPC2294 集成4路CAN 控制器。他们具有如下特性:

★ 单个总线上的数据传输速率高达1Mb/s

★ 32 位寄存器和RAM访问

★ 兼容CAN 2.0B, ISO 11898-1标准

★ 全局验收滤波器可以识别所有CAN 总线的11 位和29 位Rx 标识符

★ 验收滤波器为选择的标准标识符提供了Full CAN-style 自动接收功能

1.2      隔离CAN收发器CTM1050T

CTM1050T是一款带隔离的高速CAN收发器芯片,其主要功能是将CAN控制器的逻辑电平转换为CAN总线的差分电平,并且具有(DC 2500V)隔离功能、ESD保护功能及TVS管防总线过压功能。CTM1050T具有以下特性:

☆完全符合CAN 2.0和ISO 11898标准的CAN收发器

☆具有隔离、ESD保护功能及TVS管防总线过压功能;

☆速率最高达1Mbit/s;

☆隔离电压:DC 2500V

☆电磁辐射EME极低,电磁抗干扰EMI性极高;

☆无需外加元件可直接使用。

1.3      CAN智能节点硬件电路设计

CAN智能节点硬件电路如图1所示。

图1基于LPC2294的CAN总线智能节点硬件电路

主控制器LPC2294的晶振频率范围为1~30MHz。本设计选晶振频率为20MHz。内部256KB的高速Flash存储器用于代码和数据的存储。对于FLASH存储器,可通过内置的串行JTAG接口进行在系统编程(ISP In-System Programming),或进行在应用编程(IAP In-Application Programming)。为了便于调试和系统升级,在设计中总可以预留这些接口电路。

LPC2294采用双电源供电。CPU的供电电压范围为1.65~1.95V(1.8±0.15V),I/O供电电压范围为3.0~3.6V(3.3±03V)。

隔离CAN总线收发器CTM1050T是CAN协议控制器和物理总线之间的接口。在以往的设计方案中需要高速光耦(6N137)、DC/DC电源隔离模块、CAN收发器等其他元件才能实现带隔离的CAN收发电路,现在只需利用一片CTM1050T接口芯片就可以实现带隔离的CAN收发电路,并且隔离电压可以达到DC 2500V。

1.4硬件的抗干扰设计

在本设计所应用的场合中,产生电磁信号的设备较多,包括超短波设备、音频设备、电源等,因此抗干扰设计显得尤为重要。主要采取了以下措施:

(1)为了进一步提高CAN总线节点的抗干扰能力,保证各节点之间在电气上是完全隔离和独立的,我们采用隔离CAN收发器CTM1050T,取代传统的光耦与电源隔离模块,提高性能的同时简化电路设计。

(2)在CAN总线的两端加有两个120Ω的电阻,这两个电阻对于总线阻抗的匹配起着相当重要的作用。去掉它们会使数据通信的抗干扰性及可靠性大大降低,甚至无法通信。

(3)CANH和CANL与地之间并联了两个30pF的小电容,可虑除总线上的高频干扰并且具有一定的防电磁辐射的能力。

2.软件设计

对于一般的32位ARM嵌入式应用系统,在运行主程序前必须初始化运行环境,即编写ARM控制器启动代码。该启动代码包括异常向量表、堆栈初始化、存储系统初始化和目标板初始化等,一般用汇编语言编写。

对于该设计来说,关键的是编写CAN驱动程序。主程序只需通过调用驱动程序提供的接口来实现数据的接受和发送。驱动程序包括四部分内容:CAN控制器的初始化、接收数据、发送数据和总线异常处理。图2为主程序流程图。

图2 主程序流程图

2.1      CAN控制器的初始化

初始化CAN 控制器的操作包括:硬件使能、设置管脚连接、软件复位、设置报警界限、设置总线波特率、设置中断工作方式、设置验收滤波器工作方式、设置工作模式并启动CAN等。需要特别指出的是设置总线波特率是个难点,所有CAN节点的波特率都要相同才能正常工作,所以要正确配置VPBDIV和PLL寄存器。在设置各CAN寄存器之前必须进行软件复位,这是因为CAN的某些寄存器必须在软复位下读写。

值得注意的是,LPC2294为所有的CAN 控制器提供了全局接收标识符查询功能。2KB的接收过滤用RAM可容纳1024个标准标识符或者512个扩展标识符或两种类型混合的标识符。通过软件处理,可在该RAM中设置存放1~5个标识符表格,它能更容易的对任意复杂的ID进行筛选过滤,满足复杂的ID的接受过滤要求。大大减少了系统软件设计复杂度及运行时的负担。设置验收滤波器工作方式,必须首先创建LUT表格,指定每个表格的起始地址,并用实际的ID地址初始化该表格。最后设定验收滤波器模式寄存器。若该节点不主动发送数据,可选择在总线不活动时进入睡眠模式。

2.2 数据发送

    将待发送的数据打包成符合CAN 协议的帧格式后,便可写入发送缓存区,并启动发送。在写发送缓存区前必须查询其状态。LPC2294中的CAN控制器为了提高大量数据发送的效率,每个CAN控制器都有三个独立的发送缓冲区,它们的状态可以通过查询CANSR得知。只有当其中有空闲的发送缓冲区时才可将数据写入。在发送大量数据数,这一步显得尤为重要,否则发送可靠性将不能保证。启动发送成功后,只能通过查询CANGSR的TCS位或配合发送成功中断来判断数据是否发送成功。

2.3 数据接收

接收数据可采用查询方式或中断方式。在某一段时间内,CAN总线并不总是在活动,为了提高效率,可采用中断方式。在初始化程序中必须使能接收中断。在中断服务子程序中,读取CANICR,判断是否有接收中断标志,有则读取接收缓冲区数据。

2.4 异常情况处理

在总线发生严重故障的情况下,CAN节点有可能脱离总线,此时以下寄存器位被置位:CANSR的BS位、CANIR的BEI位和EI位(如果使能)和CANMOD的RM位。RM将许多CAN控制器功能复位和禁止。软件下一步必须置零RM位。发送错误计数器将递减计数总线释放条件(11个连续的隐性位)的第128个事件。软件可通过读取Tx错误计数器对计数器递减计数的情况进行监测。

一些不是很严重的错误一般不会引起总线错误,即使不处理也不会产生什么致命错误,为了提高中断处理速度,可以根据实际情况裁减中断服务程序。

3结束语

由于该方案体积小、功耗低、抗干扰性好,现已应用于电磁环境复杂的某装甲车通信设备中,满足了该项目对CAN网络节点的要求。此外该设计作为CAN总线节点的一个模块,能够和仪器仪表等设备相结合,使其具有网络通信的能力,有着广阔的应用前景。

 

本文作者创新点:隔离CAN收发器CTM1050T的使用取代了在以往的设计方案中需要高速光耦(6N137)、DC/DC电源隔离模块、CAN收发器等分立元件才能实现的带隔离的CAN收发电路,现在只需利用一片CTM1050T接口芯片就可以实现带隔离的CAN收发电路,并且隔离电压可以达到DC 2500V。在简化硬件电路开销的同时提高了系统的抗干扰性能。

此内容为AET网站原创,未经授权禁止转载。