用于车速传感器性能测试平台的串行口-以太网桥设计
(1)主Flash扇区0(fs0)配置在程序存储器的0000H~FFFFH空间;
(2)主Flash扇区1(fs1)配置在程序存储器的8000H~7FFFH空间;
(3)SRAM(rs0)配置在外部数据存储器的0000H~7FFFH空间;
(4)CPLD的PA口和PB口被分别设计为两个多路转换器,以供串行通信时进行信道切换。
3.1.2 串行口扩展设计
由图2可知,车速传感器性能测试平台中四个仅支持串行口的测试设备(分别负责耐温、转速、传感器静态特性和动态特性的测试)要同时接入嵌入式串行口-以太网桥,而微控制器?滋PSD3254本身只提供两个串行口(uart0、uart1),所以必须进行串行口扩展。一种简单的扩展方法是利用单片机I/O端口控制多路转换器(如CD4052)进行串行口扩展(图3),实现了一点对多点分时串行口通信。根据微控制器的I/O端口资源情况,依此方法系统最多可扩展32个串行口。根据此思路并结合测试平台的具体应用需求,利用uPSD3254的CPLD模块设计了两个二选一的多路转换器,从而不仅将两个串行口扩展为四个(uart00、uart01和uart10、uart11),而且省去了多路转换器芯片。另外,电平转换器实现TTL-RS232电平转换,这样就为四个测试设备提供了四个标准RS-232串行口供其接入串行口-以太网桥。
3.1.3 以太网接口设计
以太网接口是硬件电路设计的关键。因为RTL8019AS是基于ISA总线PC主板的以太网控制器,所以在和8位微控制器进行接口(见图3)时其硬件电路与通用方式有很大不同。下面从RTL8019AS以太网控制器[1]自身功能配置、与微控制器之间的总线接口及与网络介质的接口等三方面给出具体电路设计。
(1)RTL8019AS功能管脚设置
RTL8019AS提供3种工作方式:PnP即插即用方式、免跳线方式和跳线方式。由于8位微控制器无法支持PnP工作方式,而免跳线方式又需外加专用串行E2PROM 93C46以存放相应的工作参数,因此选择跳线工作方式。在这种方式下RTL8019AS的中断、I/O端口地址、网络接口类型选择等就完全取决于表1所示功能管脚的状态。
JP脚接高电平使芯片工作于跳线方式,IOCS16B脚接低电平选8位数据总线,IRQS0~IRQS2接低电平选INT0为中断请求源,IOS0~IOS3接低电平选芯片I/O端口基地址为300H,AUI、PL0、PL1接低电平分别选BNC网络接口和10Base-T双绞线传输介质,SMEMRB/SMEMWB接高电平屏蔽BROM读写操作。
(2)RTL8019AS与微控制器的总线接口
RTL8019AS与微控制器的接口连接如图4所示。
针对以上总线接口还有几点说明:①由于在8位微处理器系统中,只需操作RTL8019AS的32个I/O端口地址,所以只需5根地址线进行译码,其余15根地址线要根据I/O端口基地址接固定电平。②AEN使能端为低电平有效,而PC7的内部逻辑方程为PC7=,所以RTL8019AS映射到外部数据区的地址范围是8000H~FFFFH,这样通过读写外部数据区的此地址范围就能实现对RTL8019AS的读写。③由于RTL8019AS的处理速度比快很多,其内部数据缓冲区也相对较大,为了避免RTL8019AS每收到一帧数据就发出中断请求,从而频繁地打断处理器,所以以查询而非中断方式读写RTL8019AS以太网控制器。④RTL8019AS在复位时要进行一系列内部寄存器操作,所以用单片机的P3.7端口控制其复位,以保证有足够的复位时间。
(3)网络介质接口连接
由于RTL8019AS内部已集成以太网收发器,而且对外提供AUI(支持粗同轴电缆)和BNC(支持细同轴电缆和双绞线)两种网络介质接口,所以本方案选择较常用的BNC接口,这样就只需再外加一个网络变压器20F001N和RJ45水晶头插座即可解决网络介质接口问题。
3.2 软件系统设计
由于整个网桥的底层功能(如以太网协议实现)已由硬件电路完成(见图4),所以在软件上只需完成RTL8019AS驱动、精简TCP/IP协议栈实现、用户自定义应用层处理以及串行口通信等功能。为了便于软件功能的实现和扩充,软件系统采用模块化方法进行设计[2]。
3.2.1 RTL8019AS驱动模块
此模块设计依赖于RTL8019AS的硬件工作原理,即对RTL8019AS的驱动是通过操作其内部寄存器组来完成的。通常,在进行数据收发前需先向各寄存器写入相应的控制字,当发送以太网数据帧时,微控制器通过RTL8019AS的I/O端口将打包好的数据以远程DMA方式写入到RTL8019AS的内部数据发送缓冲区,然后启动发送;接收以太网数据帧时,RTL8019AS会自动接收数据并将其存入自己的内部数据接收缓冲区,然后以寄存器标志或中断请求方式通知,再通过RTL8019AS的I/O端口将数据以远程DMA方式读到自己的数据缓冲区并进行下一步的拆包处理。基于以上分析,RTL8019AS驱动程序分三部分设计,即芯片初始化(设置MAC地址、收发缓冲区大小、中断等)、发送数据子程序和接收数据子程序。详细的驱动程序见文献[3]。
3.2.2 精简TCP/IP协议栈模块设计
此模块负责TCP/IP协议的处理。由于以太网协议只规定了物理层和数据链路层,所以要想实现进程间通信还必须实现上层的TCP/IP协议。但此协议非常复杂,而且很多功能都是针对PC平台的应用,在嵌入式系统中根本用不上;另外,8位微控制器的处理能力和内存空间也使得在其上实现完整的TCP/IP协议根本不可能。因此,在8位机上用软件实现TCP/IP协议时首先必须根据应用需求对整个协议栈进行裁剪[4]。在本应用中,由于只需要在串行口和以太网间进行简单的测试数据和测试命令传输,所以在应用层采用了自定义协议,在传输层选择了能保证可靠性的TCP协议并进行了有针对性的TCP协议机制裁剪,而在网络层只实现了不提供分片和路由功能的IP协议、测试网络连通性所需的ICMP协议(仅支持Ping应答)以及提供IP地址到以太网地址(MAC地址)映射的ARP协议。这样,就得到了一个能在低档8位机上实现和运行的精简TCP/IP协议栈。此协议栈从物理层到应用层的完整结构如图5所示。
3.2.3 应用程序模块设计
应用程序模块直接面向用户需求提供相应服务。本设计中,根据整个软件模块的功能划分,应用程序需要完成串行口通信处理及串行帧和IP分组的格式转换。由于嵌入式串行口-以太网桥的TCP/IP协议栈传输层选择了保证数据传输可靠性的TCP协议(向应用层提供流式套接字接口),所以应用程序无需再进行超时重发和回传确认处理,仅需要完成串行口的数据收发操作以及串行数据帧和IP分组的格式转换。进行串行数据帧和IP分组的格式转换时使用了共享数据缓冲区和指针技术以避免协议分层间的数据拷贝,不仅节省了内存空间,而且大大提高了打包和拆包的处理速度;另外,由于串行口设备每次需传输的数据量很小,所以四个串行口缓冲区的数据采用集中打包、一次发送的方法减少了网络访问次数,既提高了通信效率又避免了因频繁短帧传输造成的网络拥堵;最后应用程序模块还提供了嵌入式串行口-以太网桥的串行口属性配置功能,用户可根据各测试设备串行口的具体属性,在管控计算机上通过以太网对网桥的各串行口收发数据缓冲区以及波特率进行远程动态设置,从而极大地提高了网桥的适应性。
实验证明,本文提出的嵌入式串行口-以太网桥应用于车速传感器性能测试平台,不但能完全满足测试平台的通信要求,还具有成本低、体积小、可靠性高等优点。同时在此网桥的硬件平台上,只要针对具体应用需求对应用程序模块稍作修改就可应用于其他汽车传感器性能测试平台(如轮速传感器性能测试平台)以及温室、环保、气象等需要远程监测的场合。因而该串行口-以太网桥具有很强的适应性和很高的推广应用价值。
- 基于C8051F和Zigbee无线网络的汽车测试系统设计(07-03)
- 基于串行口-以太网桥的车速传感器测试平台(05-11)
- 车速表指针跳动故障排除方法(11-22)