一种低成本的Ehternet嵌入式系统的设计
随着互联网中硬件的迅猛发展,网络用户呈指数增长。在使用计算机进行网络互联的同时,各种家电设备、仪器仪表以及工业生产中的数据采集与控制设备也逐步地走向网络化,以便共享网络中庞大的信息资源。
本设计是以全电子化铁路车站控制系统为背景,任务是实现铁路车站执行机与远程监测机之间的信息交换。其中,执行机包括各个执行单元,采用CAN总线接口。监测机为远程的PC控制机,采用以太网接口。本设计指在实现CAN通信链路和以太网通信链路的透明连接,最终形成通用的CAN总线以太网网关。
CAN总线与以太网通信,通常采用两种方案,一种是采用工控机加网卡来实现。这种连接方式成本高,开发周期长。另一种是采用32位MCU+RTOS的方案,这种方案采用32位高档单片机,在RTOS(实时多任务操作系统)的平台上进行软件开发,在嵌入式系统中实现TCP/IP的协议处理。它的缺点是:单片机价格较高,开发周期较长,需要购买昂贵的RTOS开发软件,对开发人员的开发能力要求较高。鉴于上述方案的优缺点,笔者设计一种单独的以太网网关互连系统,成功地实现了以太网与CAN总线的直接互联。
一、硬件设计
系统电路原理如图1所示。本系统以单片机为界,为了两部分:CAN总线控制部分和以太网控制部分。系统提供RJ45接口连接Ethernet网络,并且提供一个CAN总线接口供用户使用。系统可以把从Ethernet上过来的IP数据报解包送给CAN总线接口,也可把从CAN总线接口过来的数据封装为IP包送到局域网中。
图1 系统电路原理框图
(一)单片机及其外部存储器
单片机W78E58B为主要控制部分,实现对网络芯片和CAN控制器的控制。在微处理器内嵌入TCP/IP协议和CAN协议,完成两者之间的协议转换,实现CAN接口和以太网接口之间数据的透明传输。
62256是32K的外部RAM,用来缓存以太网数据包和CAN总线传来的数据,使用它的目的是提高单片机的数据传输速度和处理复杂的TCP/IP协议。由于以太网最大的数据包有1514字节,而单片机W78E58B只能256字节的RAM,无法存储这么大的数据包,只能放在外部RAM里,以使单片机能够高速地吞吐数据。P2.7为低电平时,62256被选通,因此其寻址范围为0000H~7FFFH。
单片机W78E58B内部有32K的EEPROM,可用来存储一些配置信息,如网关IP地址、MAC地址、SJA1000的ID网络标识符、网络掩码和总线定时(BTR0、BTR1)等。这样可以灵活方便地修改网关参数,适应不同的环境,同时也有利于以后的扩展。
(二)以太网控制部分
RTL8019AS是台湾Realtek公司制造的一种高集成度的全双工10M/S以太网控制芯片,可实现基于Ethernet协议的MAC层的全部功能,内置16KB的SRAM、双DMA通道和FIFO,可完成数据包的接收和发送功能。
在该设计中,RTL8019AS使用跳线模式(JP置为高),数据线使用八位模式(IOCS16B用27kΩ电阻下拉接地),RTL8019AS的低五位地址线SA0~SA4对应接到单片机的P2.0~P2.4,SA6和SA9接VCC,其他地址线全部接地。当P2.6和P2.7同时为高电平时RTL8019AS的片选信号AEN使能。RTL8019AS的I/O地址需要映射为单片机的I/O地址,这样单片机才能操作RTL8019AS。根据电路设计,该系统中单片机的I/O地址与RTL8019AS的I/O地址之间的映射关系为:0XC000H~240H,0XC100H~241H…)XDF00H~25FH,共32个字节。RTL8019AS除与单片机连接外,还将其网络收发器的四根引脚HD、LD、TRIN+、TPIN-通过外部的隔离滤波器LPF与以太网相连,目的是提高网络通信的抗干扰能力。
(三)CAN总线控制部分
SJA1000为CAN总线控制器,具有多主结构、总线访问优先权、广播报文功能及硬件滤波功能,具有简单总线连接的SJA1000可完成物理层和数据链路层的所有功能。它具有两种工作模式BasicCAN和PeliCAN。BasicCAN仅支持标准模式(本文仅介绍BasicCAN模式),支持错误分析功能,对CAN收发器进行控制,为微控制器提供控制CAN总线的简单接口。单片机对SAJ1000的读写就像读写自己的外部RAM一样。P2.7取反后作为其片选信号线。因此,SJA1000对应地址为8000H~807FH。SJA1000的/INT引脚接单片机的INT1引脚,使单片机能够实时响应CAN的中断请求。
TJA1050为CAN收发器,是CAN协议控制器和物理总线之间的接口,可以对CAN总线提供差动发送和接收能力。微控制器对CAN控制器进行相应配置后,收发器自动完成相应的CAN总线动作。有较强的抗干扰能力,最多节点数可达110个。
采用高速光耦6N137实现SJA1000与TJA1050之间的电气隔离,保护控制系统电路,以满足在最高速率1M/s下的电气响应。
二、软件设计
整个系统的软件分为两部分
- Linux嵌入式系统开发平台选型探讨(11-09)
- 嵌入式系统中文输入法的设计(03-02)
- 基于MPC755的嵌入式计算机系统设计(05-10)
- WinCE下光电编码器的驱动程序设计(04-12)
- 为什么嵌入式开发人员要使用FPGA(05-13)
- VxWorks几种常用的延时方法介绍(05-16)