摘要: 随着科学技术、网络信息化的快速发展,嵌入式设备与人们的生活息息相关,设备联网已是当今科技领域的主要发展趋势。本文选择了μC/OS-II为操作系统,32位微处理器LPC2294为核心处理器,设计了TCP/IP-CAN协议转换网关的硬/软件系统的设计方案。对以LPC2294为核心处理器的硬件系统进行最小系统的设计,并对主要电路进行了较为详细的叙述。对嵌入式网关的软件程序模块进行了简单介绍。 关键字: 网关;微处理器;嵌入式;CAN
1 引言
计算机、控制、通讯、网络等技术的飞速发展,引起自动化领域的深刻变革,并逐步形成了网络化、全开放、全分布的自动控制体系系统。嵌入式系统在工业自动化、国防等领域被广泛应用,而将以太网技术、现场总线技术与嵌入式技术相结合,是顺应各个领域发展需求的结果,也是科技自身发展和融合的结果。本文基于μC/OS-II+TCP/IP+CAN的解决方案,以μC/OS-II为软件平台,ARM为硬件模拟平台,开发了一种基于微处理器的协议转换网关的硬软件系统。
2 嵌入式网关总体结构设计
本文选择ARM7系列的微处理器LPC2294为MCU,该设计主要有以下几个模块组成,如图1所示:

图1 嵌入式网关的硬件构成框图
由于LPC2294集成了一个256kB的FLASH存储器系统。该存储器可用作代码和数据的存储。对FLASH存储器的编程可通过几种方法来实现。可通过串口进行系统编程,也可以在应用程序运行时进行应用编程。这样为数据存储和现场固件的升级都带来了极大的灵活性。当使用片内bootloader时,有248kBFlash存储器可作用户代码使用,FLASH地址范围0x00000000~0x0003FFFF。片内SRAM可用作代码和/或数据的存储。SRAM支持8位、16位和32位访问LPC2294具有16kB静态RAM,RAM地址范围0x400000000~0x40003FFF。
3 嵌入式网关硬件电路设计
3.1 微处理器LPC2294简介
本设计选用的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、ISO11989-1标准;总线数据波特度均可达1Mbps;可访问32位的寄存器和ARM:全局验收过滤器可识别几乎所有总线的n位和29位叙标识符;验收过滤器为选择的标准标识符提供了FullCAN-styel自动接收功能。作为本设计的核心部件,LPC2294不仅担起主控制器的作用,同时还作为CAN网络的节点控制器,与网络中的其它节点实现数据传输与交换。
3.2 系统串口电路
由于LPC2294的片上串口除带有发送与接收引脚外,也提供了标准DB-9定义的其他信号。所以在本系统的串口设计中,我们也引出了数据终端准备好信号DTR和数据设备准备好信号DSR。由于RS-232-C标准所定义的高、低电平信号与LPC2294系统的LVTTL电路所定义的高、低电平信号完全不同,LVTTL的标准逻辑“l”对应2V~3.3V电平,标准逻辑“0”对应0V~0.4V电平,而RS-232-C标准采用负逻辑方式,标准逻辑,“l”对应-5V~-15V电平,标准逻辑“0”对应+5V~+15V电平,显然,两者间要进行通信必须经过信号电平的转换,本系统采用是常见的电压转换芯片SP3232E。串口电路如图2所示。

图2 系统串口电路
3.3 复位电路
系统复位电路可完成在系统工作异常时实现复位功能,如图3所示。SP708S属于专用微处理器电源监控芯片。其集成有众多组件,可监测微处理器及数字系统中的供电及电池的工作情况。由于以上众多组件的使用,SP708S可有效地增强系统的可靠性及工作效率。SP708S包含一个看门狗定时器,一个微处理器复位模块,一个供电失败比较器,及一个手动复位输入模块。SP708S适用于+3.0v或+3.3V环境。
图中nRST连接到LPC2294的复位脚RESET,信号nTRST连接LPC2294内部的JTAG接口电路的复位脚TRST。当复位开关RST按下时,SP708S输出复位信号,引脚RST输出低电平,导致两路74HC125导通,信号nRST和nTRST输出低电平是系统复位。系统正常运行情况下,SP708S的引脚RST输出高电平,两路74HC125截止,上拉电阻R3 , R4将信号nRST和nTRST上拉为高电平。

图3 系统复位电路
3.4 以太网接口电路与CAN接口电路
RTL8019AS是一种高度集成的以太网芯片,具有全双工、掉电控制等特性,能方便的实现Plug and Play (即插即用)的NE2000兼容适配器,NE2000是Novell公司生产的16位ISA总线的网卡。RTL8019AS支持16KB,32KB,64KB字节的BROM,另外还支持FlashMemory和页访问模式,最大支持4M字节(16K*256)。此外还支持在运行完BROM后释放内存,以供系统其他程序的运行。
RTL8019AS芯片内部集成了DMA控制器、ISA总线控制器和集成了16KSRAM。用户可以通过DMA方式把需要的数据写入片内SRAM中,让芯片自动将数据发出去;而芯片在接收到数据后,用户可以通过DMA方式将其读出。
本网关设计以RTL801gAS芯片为核心的以太网控制器,IOM以太网接口为系统提供以太网接入的物理通道,通过该接口,系统可以10M的速率接入以太网。
由于LPC2294控制器内部具有4路CAN接口,它的一路CAN接口通过一条串行数据输出线TDI和一条串行数据输入线RDI连接到TJA1050T收发器。
TJA1050T收发器是CAN协议控制器和物理总线之间的接口。它最初是应用在波特率
范围在60k波特到IM波特的高速自动化应用中。TJA1050T可以为总线提供不同的发送性能,为CAN控制器提供不同的接收性能。而且它与“ISO11898’’标准完全兼容。TJA1050T有一个电流限制电路,保护发送器的输出级,使由正或负电源电压意外造成的短路不会对TJA1050T造成损坏(此时的功率消耗增加)。
TJA1050T还有一个温度保护电路,当与发送器的连接点的温度超过大约165℃时,会断开与发送器的连接。因为发送器消耗了大部分的功率,所以这个集成电路的功率消耗和温度会较低。但是此时IC的其他功能仍继续工作。当引脚TXD变高(电平),发送器由关闭状态复位。当总线短路时,尤其需要这个温度保护电路。
3.5 JTAG接口电路
JTAG仿真调试接口采用ARM公司的标准的20引脚,JTAG是为了在线测试的需要而发展起来的针对芯片及线路板测试的接口技术。它利用串行移位输入及输出的方式对芯片的输入端加载特定的代码序列,并获得输出端给出的响应序列。全部JTAG接口只有很少的几根引脚,具有方便高效的开发方式,支持在线仿真和编程,所配编译器功能强大,具有FLASH存储器,利用单片机本身具有的JTAG接口可以在一台PC机及一个结构小巧的JTAG控制器的帮助下实现对芯片内部的所有部件进行访问和程序的下载,完成程序的在线调试,实时修改片内寄存器和内存的内容,对使用者来说将大大提高程序的调试效率。LPC2294与JTAG接口的连接电路如图4所示,JTAG接口的nRST和nTRST与系统复位电路相连,形成线“与”关系,从而共同控制系统复位。

图4 JTAG仿真接口电路
4 嵌入式网关软件设计
对于一般的32位ARM应用系统,在运行主程序前必须初始化运行环境,即为ARM芯片编写启动代码。该启动代码包括异常向量表、堆栈初始化、存储系统初始化和目标板初始化等,一般用汇编语言编写。对于该设计来说,软件程序设计主要模块包括:μC/OS-II操作系统的移植、TCP/PI协议转换模块、CAN协议转换模块。而每个程序模块又有各自具体内容。鉴于篇幅限制,此处仅简单介绍启动代码的设计。
软件调试环境采用ARM公司的ARM核处理器集成开发工具ADSvl.2。ADSvl.2集成了汇编、C、C++编译器和调试器,编译效率高,提供了功能强大的系统库,支持软件调式、JTAG仿真调试及硬件调试。本设计采用的是JATG仿真调试。
启动代码类似于电脑中的BIOS,它从系统上电开始接管CPU,依次需要负责初始化CPU在各种模式下的堆栈空间、设定CPU的内存映射、对系统的各种控制寄存器做初始化、对CPU的外部存储器进行初始化、设定各外围设备的基地址、创建正确的中断向量表、为C代码执行创建ZI(零创建)区,然后进入到C代码。在C代码中继续对时钟、RS232端口进行初始化,然后打开系统中断允许位。最后进入到应用代码中执行,执行期间响应各种不同的中断信号并调用预先设置好的中断服务程序处理这些中断。
由于嵌入式系统的软硬件都要比PC机的简单,所以它的Bootloader代码要比BIOS程序简单得多。嵌入式系统的资源有限,应用程序通常都是固化在ROM中运行。ROM中的程序执行前,需要对系统硬件和软件运行环境进行初始化。这些工作是用汇编语言和C语言编写的Bootloader代码完成的。
本文作者创新点:
本文研究了基于μC/OS-II设计的以太网和CAN总线之间的协议转换网关。实现了以太网和CAN总线的实时互联,允许授权上层用户在Internet任意一点访问生产层,并实现对生产层设备的监控。
参考文献:
[1] 郭苗刚,施建军.现场总线控制系统浅谈[J]. 山西长治:山西冶金,2004(l)
[2] 谢克明,嵌入式操作系统研究及开发实例[J]. 自动化博览,2005.2,No.1:23-26
[3] 陶波,丁汉等.基于嵌入式Internet的工业控制[J]. 测控技术,2002.20(8).
[4] 秦贵和,宋益青,李宝玲. 基于ARM9的嵌入式车载网关的软硬件系统设计[J]. 微计算机信息, 2007,2-2:271-272
|