微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > MCU和DSP > 基于ARM控制器LPC2294的CAN/PCI智能通信卡设计

基于ARM控制器LPC2294的CAN/PCI智能通信卡设计

时间:07-20 来源:电子元器件应用 点击:

2 软件设计

  2.1 通信卡软件设计

  通信卡上的软件主要指的是ARM控制器上的软件程序。本文选用ARM控制器LPC2294来实现智能数据传输路径选择。LPC2294是通信卡的控制核心。它集成有4路CAN控制器,每个CAN控制器都与独立CAN控制器SJA1000有着相似的寄存器结构,它只是对器件寄存器访问由原来的8bit字节访问转变为了32 bit的双字访问。LPC2294可实现CAN网段与上位机之间的数据传输控制(包括上行数据传输和下行数据传输)以及不同CAN网段间的数据传输控制(平行数据传输)。

  LPC2294为所有CAN控制器提供了全局接收标识符查询功能。它包含一个512×32 (2 k字节)的RAM,可通过软件处理在RAM中存放1~5个标识符表格。整个接收滤波RAM可容纳1024个标准标识符或512个扩展标识符,或两种类型的混合标识符。由于允许的表格范围有2 k字节,故能容易地满足复杂的ID接收过滤要求。LPC2294在FullCAN模式下能自动接收并选定网段的标准帧,但本文不采用FullCAN模式。

  若在EPlC6的"双口RAM"中设置一个状态与控制寄存器组(SOR),那么,上位机便可通过访问该寄存器组查询通信卡的运行状态。为了有效管理数据传输,防止传输过程中的数据丢失,本设计在ARM内部的静态RAM区开辟了一个全局数据收发缓存区(GRTB),其示意图如图4所示。

图4中,对于标准帧来说,它只有11位标识符,因此,图中的标识符字节3和4保留不用。而帧格式用来区别此帧是标准帧(0)还是扩展帧(1)。当RTR为1时,表示此帧是远程帧。图中的源段号和目的段号用于表明此帧来自哪个网段以及将要送往哪个网段(此处将上位机也作为其中一段来处理)。DLC表明传输的数据字节数目。

  2.2 通信卡的运行流程

  系统上电复位后,系统将首先运行初始化程序。LPC2294的初始化主要是初始化全局接收和发送缓冲区以及清除状态寄存器中的值等;PCI9030的初始化主要是从EEPROM中加载初始数据以进行初始设置,CAN初始化包括设置模式、总线时序、中断使能、标识符表格,这些设置均可通过给CAN芯片的内部寄存器赋值来实现。初始化成功之后,通信卡将进行自检,并在确定启动正常之后进入工作状态。这一部分的程序流程图如图5的A部分所示。

系统进入工作状态后(图5中的B部分)将等待中断产生,如有,则进人相应的中断服务程序。如果是数据传输,则转入数据传输子程序,数据传输子程序主要包括3个部分:

  (1) 下行数据传输

  下行数据传输指的是上位机向CAN网段发送数据。即上位机把数据写入到"双口RAM"中以等待LPC2294将数据取走。LPC2294将上位机发来的数据暂时存放在全局数据收发缓存区(GRTB)中,然后检查匹配的目的段是否有空闲的发送区(CANSR中的TBS位为1),若有则将数据分别写入每个网段的发送区并发送。如果匹配网段的3个发送缓冲器全为忙,则循环等待,直到有一个以上的发送缓冲器为空再进行发送。

  (2) 上行数据传输

  上行数据传输指的是CAN网段向上位机发送数据。当程序检测到某个网段X的CAN中断/捕获寄存器(CANICR)中的接收中断位(RI)置位后,它将进入接收中断服务程序。此时程序将到标识符表格中查找匹配的标识符,CAN控制器会在接收时自动搜索接收滤波器的RAM中的表格并进行匹配,只要找到匹配值则产生接收中断并通知用户保留信息,否则自动放弃这一帧信息而不产生接收中断,如果它只找到一个匹配值(源网段中),则说明此数据是只传输给上位机的,此时程序会将接收到的数据信息按上面介绍的格式保存到全局数据收发缓冲区(GRTB),以等待LPC2294将其发送给EPlC6的"双口RAM",以便上位机读取。

  (3) 平行数据传输

  当出现接收中断时,程序也会到标识符表格中查找匹配的标识符,如果找到一个以上的匹配值,则说明还有其他网段需要这些数据。此时程序会将接收到的数据信息读入到全局数据收发缓冲区(GRTB)中去,然后把数据发往匹配网段。

  在调用相应的数据传输子程序后,程序将置标志位并返回。如果是其它一些中断,则转入相应的中断服务程序。若没有中断产生,则检查PC机是否有参数配置需要,最后进行系统自检。本系统会在系统闲暇时进行自检并上传状态报表,这样可以使用户随时了解通信卡的工作情况,对于提高系统的工作可靠性以及出现故障时的查错效率具有重要的意义。

  2.3 上位机程序设计

  本设计中,上位机软件设计程序主要包括通信卡底层驱动程序和用户服务程序。其设计框图图6所示。

通信卡底层驱动程序的功能主要是配置CAN总线接口、收发CAN总线上的数据、对CAN总线进行实时监测、执

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top