| 基于微控制器LPC2294的CAN总线智能节点设计方案 |
| 类别:网文精粹 |
|
window.google_render_ad();
Design of Intelligent CAN Bus Node Based on LPC2294 Abstract: CAN Bus is a widely used real-time Field-Bus. This paper presents a CAN Bus Intelligent Node design based on 32 bit ARM microcontroller LPC2294 which have a 32 bit ARM7DMI kernel. Details on the features of ARM Microcontrollers LPC2294 and isolation CAN transceiver CTM1050T, the structure of the hardware and the software design was present, meanwhile, the hardware anti-interference measures was introduced combined with the actual use. Keywords:LPC2294 CAN Bus CTM1050T 摘要:CAN总线是一种应用广泛的实时性现场总线。本文提出了一种基于具有ARM7DMI内核的32位ARM微控制器LPC2294的CAN总线智能节点设计方案。详细介绍了ARM微控制器LPC2294和隔离CAN收发器CTM1050T的特点,给出了智能节点的硬件结构以及软件设计,同时结合现场实际使用给出了硬件抗干扰措施。 关键词:LPC2294 CAN总线 CTM1050T CAN(Controller Area Network)即控制器局域网,是国际上应用最广泛的现场总线之一。本设计给出的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.3CAN智能节点硬件电路设计 CAN智能节点硬件电路如图1所示。 500)this.style.width=500;" border=0> 主控制器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为主程序流程图。 500)this.style.width=500;" border=0> 2.1CAN控制器的初始化 初始化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。在简化硬件电路开销的同时提高了系统的抗干扰性能。 |
- B2B搜索“联姻”..
- 2008-9-11
- HOLTEK推出H..
- 2008-9-11
- 关于ISPRO校验..
- 2008-9-11
- 利用适配板实现免制..
- 2008-9-11
- GSMSMS模块客..
- 2008-9-11
- ISPro下载型编..
- 2008-9-11
- C语言之stati..
- 2008-9-11
- 完美结合语音芯片与..
- 2008-9-11
- 又做一工具:ATm..
- 2008-9-11
- QE128的DEM..
- 2008-9-11
- 特别推荐一款高性能..
- 2008-9-11
- SATA硬盘使用解..
- 2008-9-16
- EPoX主板几种前..
- 2008-9-16
- 反其道行之降低电压..
- 2008-9-16
- 基于ATM8051..
- 2008-9-16
- THB6016H测..
- 2008-9-16
- 显示器黑屏的解决办..
- 2008-9-16
- 你会买网络服务器吗..
- 2008-9-16
- 酷漫教你制作只带一..
- 2008-9-16
- 酷漫破解网页右健锁定
- 2008-9-16


