中国·芯片交易在线
首页 | 供应信息 | 求购信息 | 库存查询 | 新闻中心 | 展会资讯 | IC厂商 | 技术资料 | 自由区域
   新闻首页 |  行业动态 | 新品发布 | 政策法规 | 科技成果 | 模拟技术 | 嵌入系统 | 传感控制 | 存储设计  
当前位置:IC72首页>> IC新闻中心>> 模拟技术 >>电子行业新闻正文

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

时间:2008/9/13 9:57:00  作者:  来源:IC72  浏览人数:1266
 
 

      CAN(ControllerAreaNetwork)即控制器局域网,CAN总线是国际上应用最广泛的现场总线之一。它最早是由德国Bosch公司推出的,CAN通信协议是一种用于汽车内部测量与执行部件之间的数据通信协议。

      作为一种技术先进、可靠性高、功能完善、成本合理的远程网络通讯控制方式,CAN总线已被广泛应用于各个自动化控制系统中。例如,在汽车电子、自动控制、智能大厦、电力系统、安防监控等各领域中,CAN总线具有不可比拟的优越性。本设计给出CAN总线节点方案。它采用内置多路CAN总线控制器的LPC2294作为主控制器,使得该节点体积小、功耗低、抗干扰性好,因而特别适用于汽车、工业控制以及医疗系统和容错维护总线中。

      1硬件设计

      1.1LPC2294的特点

      ARM7系列具有ARM7TDMI内核的32位嵌入式微处理器是目前应用很广的嵌入式RISC处理器。该系列芯片体积小、功耗低、成本低,高性能与灵活性相结合,有较多的寄存器,提供了扩充的增强的固定长的16/32位双指令集。用16位的Thumb指令可以节省高达35%的空间。另外它还实行流水线作业,提供嵌入式ICE2RT逻辑,支持片上断点和调试点支持,具有先进的软件开发和调试环境。

      本设计选用的LPC2294是PHILIPS公司新推出的一款功能强大的超低功耗的具有ARM7TDMI内核的32位微控制器。144脚封装、两个32位定时器、八路10位ADC、四路CAN通道和PWM通道以及多达九个的外部中断,内部嵌入256K字节高速Flash存储器和16K字节静态RAM,包含76(使用了外部存储器)~112(单片)个GPIO口。如此丰富的片上资源完全可以满足一般的工业控制的需要,同时还可以减少系统硬件设计的复杂度。另外,LPC2294支持JTAG实时仿真和跟踪、128位宽度的存储器接口和独特的加速结构,使32位代码能够在高达60MHz的操作频率下运行。

      LPC2294内部集成有四路CAN控制器:符合CAN规范CAN2.0B,ISO11898-1标准;总线数据波特率均可达1Mbps;可访问32位的寄存器和RAM;全局验收过滤器可识别几乎所有总线的11位和29位Rx标识符;验收过滤器为选择的标准标识符提供了FullCAN-style自动接收功能。

      作为本设计的核心部件,LPC2294不仅担负起主控制器的作用,同时还作为CAN网络的节点控制器,与网络中的其它节点实现数据传输与交换。

      1.2CAN节点硬件电路组成

      CAN节点硬件电路如图1所示,由ARM微控制器LPC2294、CAN总线收发器TJA1050T、高速光耦6N137和电源隔离模块B0505S等组成。

ic72新闻中心

      主控芯片LPC2294的晶振频率范围为1~30MHz。本设计选晶振频率为20MHz,通过设置内部的VPB分频器可以提高CPU时钟频率。内部256K字节的高速Flash存储器用于代码和数据的存储。对于FLASH存储器,可通过内置的串行JTAG接口进行在系统编程(ISP),或进行在应用编程(IAP)。为了便于调试和系统升级,在设计中可以预留这些接口电路。

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

      收发器TJA1050T是CAN协议控制器和物理总线之间的接口,它与“ISO11898”标准完全兼容。CANH和CANL理想配合,可使电磁辐射减到更低。除此之外,TJA1050T不上电时,总线呈现无源特性,这使得TJA1050T在性能上大大优于以前的CAN总线收发器。TJA1050T有两种工作模式:高速模式和静音模式(它们由引脚“S”来控制)。在高速模式中,总线输出信号有固定的斜率,并且以尽量快的速度切换。高速模式适用于最大位速率和最大总线长度的情况,而且此时其收发器循环延迟最小。静音模式时发送器是禁能的,它不管TxD的输入信号。静音模式可以防止CAN控制器不受控制时对网络通讯造成堵塞。

      1.3硬件的抗干扰设计

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

      (1)为了进一步提高CAN总线节点的抗干扰能力,保证各节点之间在电气上是完全隔离和独立的,LPC2294的TX0和RX0分别通过高速光耦6N137与TJA1050T的TXD和RXD相连。不过,应该特别说明的是,光耦部分电路所采用的两个电源必须完全隔离,否则采用光耦也就失去了意义。电源的完全隔离采用小功率电源隔离模块B0505S。电路虽复杂一些,但是却提高了节点的稳定性和安全性。

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

      (3)CANH和CANL与地之间并联了两个30pF的小电容,可以滤除总线上的高频干扰并且具有一定的防电磁辐射的能力;在两根CAN总线接入端之间并入了5.6V的TVS管,当CAN总线窜入电压干扰时可通过TVS管的短路起到一定的过压保护作用。

      (4)为了减小现场对节点的干扰,采用屏蔽双绞线,且根据实际使用经验,屏蔽电缆的屏蔽层无需接地。

      2软件设计

      软件调试环境采用ARM公司的ARM核处理器集成开发工具ADSv1.2。ADSv1.2集成了汇编、C、C++编译器和调试器,编译效率高,提供了功能强大的系统库,支持软件调试、JTAG仿真调试及硬件调试。本设计采用的是JTAG仿真调试。

      对于一般的32位ARM应用系统,在运行主程序前必须初始化运行环境,即为ARM芯片编写启动代码。该启动代码包括异常向量表、堆栈初始化、存储系统初始化和目标板初始化等,一般用汇编语言编写。对于该设计来说,关键的是编写CAN驱动程序。主程序只需通过调用驱动程序提供的接口来实现数据的接收和发送。驱动程序包括四部分内容:CAN控制器的初始化、接收数据、发送数据和总线异常处理。图2为主程序流程图。

ic72新闻中心

      2.1CAN控制器初始化

      初始化CAN控制器的操作包括:硬件使能、软件复位、设置报警界限、设置总线波特率、设置中断工作方式、设置验收滤波器工作方式、设置工作模式并启动CAN等。初始化程序如下:

      HwEnCAN(CanNum);//硬件使能,CanNum=0~3,指四路CAN控制器

      SoftRstCAN(CanNum);//软件复位寄存器

      CANEWL(CanNum).Bits.EWL_BIT=USE_EWL_CAN[CanNum];//设置错误警告界限

      CANBTR(CanNum).Word=USE_BTR_CAN[CanNum];//初始化波特率

      VICDefVectAddr=(UINT32)CANIntPrg; //初始化中断为非向量中断

      VICIntEnable|=(1<<19)|(1<<(20+CanNum))|(1<<(26+CanNum));

      CANIER(CanNum).Word=USE_INT_CAN[CanNum];

      CANAFMR.Bits.AccBP_BIT=1;//配置验收滤波器(旁路状态,即屏蔽验收滤波器)

      CANMOD(CanNum).Bits.TPM_BIT=USE_TPM_CAN[CanNum];//初始化工作模式

      CANMOD(CanNum).Bits.LOM_BIT=USE_MOD_CAN[CanNum];

      SoftEnCAN(CanNum);//启动CAN

      LPC2294片内外设与引脚的连接由引脚连接模块控制。CAN控制器的硬件使能就是通过软件设置GPIO寄存器来控制多路开关的,将特定的引脚与CAN控制器连接起来。在设置各CAN寄存器之前必须进行软件复位,这是因为CAN的某些寄存器必须在软复位状态下读写。

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

      2.2数据发送

      将待发送的数据打包成符合CAN协议的帧格式后,便可写入发送缓冲区,并启动发送。图3为发送子程序流程图。

ic72新闻中心

      在写发送缓冲区前必须查询其状态。LPC2294中的每个CAN控制器有三个发送缓冲区,它们的状态可通过查询CANSR得知。只有当其中有空闲的发送缓冲区时才可将数据写入。在发送大量数据时,这一步显得尤其重要,否则发送可靠性将不能保证。启动发送成功后,只能通过查询CANGSR的TCS位或配合发送成功中断来判断数据是否发送成功。

      2.3数据接收

      接收数据可采用查询方式或中断方式。在某一段时间内,CAN总线并不总是在活动,为了提高效率,可采用中断方式。在初始化程序中必须使能接收中断。在中断服务子程序中,读取CANICR,判断是否有接收中断标志,有则读取接收缓冲区数据。为了防止接收缓冲区数据溢出,可开辟一个循环接收数据队列来暂时存储数据,主程序则通过查询该队列来获得总线数据。

      2.4异常情况处理

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

      在应用中,若前面传输到CAN控制器的数据未被读出,而接收缓冲区又没有及时释放,就有可能引起后面信息的丢失。这时必须通过写命令寄存器来清除CANSR的数据溢出位。这两种异常可通过异常中断来处理,只要在中断子程序中加入处理代码即可。其它的总线异常处理可根据使用情况决定是否在软件中处理。

      总之,软件的编写和规划相当重要。ARM7TDMI指令集是基于RISC的,具有32位ARM/16位Thumb双指令集,ARM/Thumb程序可通过改写程序状态寄存器CPSR相互调用。因此,为了提高程序代码密度,某些对性能要求不高的代码可用Thumb指令集编写。

      由于该方案体积小、功耗低、抗干扰性好,现已应用于电磁环境复杂的某车载通信设备中,满足了该项目对CAN网络节点的要求。

 
【相关文章】
·基于ARM的CAN总线智能节点的设计
 
 
IC新闻搜索
 
热点新闻
基于红外超声光电编码器的室内移动小车定位系
基于闪烁存储器的TMS320VC5409DSP并行引导装载方法
非移动市场需求飙升,ARM预计2010年出货量超50亿片
一种快速响应的电容式湿度传感器感湿薄膜设计
利用特殊应用模拟开关改进便携式设计
无线传感器网络跨层通信协议的设计
基于ARM9内核Processor对外部NAND FLASH的控制实现
基于GSM技术的汽车防盗系统的设计
热电阻在烟叶初烤炕房温度控制中的应用
高速数据转换系统对时钟和数据传输的性能要求
友情连接
 关于我们  IC论坛  意见反馈  设置首页  广告服务  用户帮助  联系我们
copyright:(1998-2005) IC72 中国·芯片交易在线
(北京)联系电话:(010)82614113、82614123 传真:(010)82614123 客户服务:service@IC72.com 库存上载:IC72@IC72.com
在线MSN咨询:ic72sale8@hotmail.com 通信地址:北京市西城区西直门内大街2号大厦15层 邮政编码:100013
(深圳)联系方式: 在线MSN咨询:ic72sale6@hotmail.com 在线QQ咨询:191232636 通信地址:深圳市福田区振华路
注 册 号: 1101081318959(1-1)

A B C D E F G H I J K L M N O P Q R S T U V W X Y Z 0 1 2 3 4 5 6 7 8 9