(2) 串口处理模块:如图1 微控制器的右半部分:串口数据从32 个串行端口独立输入或输出,标准串口的RS232 电平与TTL 电平通MAX232 相互转化。值得注意的是所有低速串行接口均采用RJ45 接口,而且为了保证数据的传输速度,在实际应用中只使用了TXD,RXD,GND信号,避免了其它握手信号。

对于多串口的设计,采用串口扩展芯片GM8142,结合强大的SPI性能,完成了32 个独立于系统固有串口(DB9 接口) 的扩展。每片GM8142 能提供4 个独立的串行口,该网关设计中采用8 片GM8142,每片GM8142 的片选信号又通过3-8 译码器74LV138 连接到微控制器的3个独立的SPI 接口上,另外,每片GM8142 所必需的中断信号通过强上拉(4.7K)连接到微控制器的标准IO上,这样,串口处理模块搭建完成。

当两片或多片GM8142 所管理的串口同时产生数据请求时,微控制器会根据事先设定好的MCU中断机制判断中断请求的优先级,对优先级高的中断请求优先响应。当同一片GM8142 的不同串行口同时产生中断请求时,在LINUX下,通过对该字符设备驱动程序的编写,可使微控制器在SPI 上得到相应端口的编号并及时清除中断,然后,再次根据用户事先设定好的中断优先级处理中断。这样,所有的扩展串行接口均能按用户事先设定好的中断优先级完成对串口的控制。

系统的32 个扩展串口均能工作在独立波特率的独立场合,在速率上,它们均能单独稳定运行在115200BPS以内的任何波特率上,但若32 个串口同时双向并且以115200BPS 的速率运行时应考虑MCU 的处理能力。综上所述,系统提供了32 个串口、可自定义优先级控制、波特率配置方案的多串口实现方法。

(3)软件设计:系统要求用户能够在Windows 环境下(客户端)通过以太网对远端串口设备进行配置、状态查询并且发送和接收数据。这整个过程就像是直接对串口进行操作,用户无需感知是通过以太网进行的数据传输。为了达到以上目的,网关依靠以PIC32处理器为核心的嵌入式系统平台,在其上运行Linux 操作系统,为各个串口设备提供独立的打开,关闭,及监听线程,使串口设备完全独立运行。在用户端,用户对串口的操作实际上是通过socket 编程发送命令或数据给PIC32处理器,供其解析并最终直接控制串口完成。以COMn(n《32)的监听线程为例,给出串口层上数据流。如图1所示。