异步串行通讯口(UART)是在工业自动化中应用最为广泛的通讯接口之一,其接口形式包括RS232C、RS485、RS422。作为以网络通讯为特色的英创嵌入式主板产品,常常会面临支持多串口(串口数量通常超过6个)的应用。在通常情况下串口的数据收发均采用硬件中断驱动,但对于多串口的应用,由于系统资源的限制,不可能为每一个串口控制器提供一个独立的中断,而必须采用中断共享的技术,在WinCE环境中,中断共享还涉及到更为复杂的驱动程序。为了方便客户能高效、低成本的实现多串口的扩展,英创公司专门设计了采用硬件中断共享技术的4串口扩展单元ETA503,作为客户实际扩展的参考。
本文将以EM9000嵌入式主板作为系统的嵌入式主板,具体介绍ETA503的使用方法,该方法同样适用于英创的其他嵌入式主板产品,如EM9260、EM9360、ETR232H等。客户可参考本文及ETA503的资料,快速实现自己的多串口产品。
注意,本文所介绍的串口扩展方法的基本特点是每4个异步串口共享一个独立的硬件中断,对EM9000、EM9260等模块,可扩展一组4个串口,而EM9360由于总线上支持多个独立外部中断,所以可扩展2组共8个异步串口。尽管理论上可以扩展更多的串口,但考虑到系统的综合处理能力,在软件上我们把扩展串口数量的上限定在2组8个。
系统构成
ETA503是基于英创精简ISA总线(接口信号如图3所示)的4串口扩展单元,其输出接口均为9线制(接口信号如图4所示)的RS232C。与嵌入式主板的连接关系如图1所示:
ETA503采用工业标准的16C550作为每个串口的控制器,而每个16C550将占用8个精简ISA总线的8位数据端口,ETA503经过精心设计,并不占用额外的数据端口,所以整个ETA503只占用8×4 = 32个精简ISA总线的8位数据端口,使用片选CS1#和地址线SA0 – SA4。
用户可通过以下步骤来快速实现多串口应用方案:
原型评估
从英创公司购买一套ETA503多串口扩展单元(如图2所示)以及英创的嵌入式主板,通过精简ISA总线相连接起来,可进行快速的功能评估。对于 ARM9系列的产品,如EM9000、EM9260、EM9360等,多串口的驱动程序将加载到内核;对x86的产品,如ETR232i、ETR232H等,将提供多串口的串口驱动程序。在此基础上,客户可利用英创公司为ETA503提供的基本通讯应用程序源代码,快速评估多串口扩展单元的基本性能是否满足其具体的应用需求。
设计应用产品
ETA503多串口扩展单元由包括1个16C554(等效为4个16C550),如图2所示。客户在作应用设计时,可将ETA503当作一个元器件,由插针直接插在相应的应用电路中,根据需要修改各个串口的驱动形式,如RS232C、RS485、RS422等。如果客户的应用主板需要同时包括英创的嵌入式主板模块,则还需要参考相应嵌入式主板的评估底板电路原理图和PCB图。
应用程序开发
在WinCE应用环境中对扩展的多串口的编程方法与标准的串口应用程序完全一样,注意在打开串口号大于9的串口时,需要使用“\\$device\\COMxx”,而不是通常的“COMx:”。考虑到共享中断的异步特性,各个串口可能同时请求中断,从而产生极高的中断频率,所以建议客户把低波特率的串口通道,如9600bps或以下的波特率,配置在扩展串口上,以均衡CPU对各个硬件设备的开销;相应地把需要使用高波特率的通道配置到英创嵌入式主板自带的串口通道上,如EM9360的COM2 – COM7,这些串口均配置有独立的硬件中断。在WinCE标准的串口驱动程序中为每个串口分配了2KB的接收数据缓冲区,所以各个串口上层处理线程可参考buffer的深度,采用合适的响应方式,以最大限度的避免线程空转所带来的CPU时间的无谓消耗。
对作为多串口服务器的应用,如果嵌入式主板选用ARM9系列产品,就可利用WinCE提供的 Web服务器功能来方便实现对各串口参数的设置,WinCE下的Web支持ASP网页;对x86产品,则可在应用程序连接英创为x86产品提供的Web服务器库以及客户编写的cgi C代码。
在英创嵌入式主板的缺省配置中没有加载扩展多串口的驱动程序。对需要使用多串口扩展功能的客户,在购买英创嵌入式主板时需向英创商务人员说明其需求,我们将根据客户的需求加载一组(4个)串口或2组(8)串口的驱动程序。
驱动程序版权说明
英创公司的多串口驱动程序已申请软件产品保护,客户可以在英创嵌入式主板上免费使用该驱动程序,但禁止在其他的第三方平台上使用英创公司的多串口驱动程序。
成都英创信息技术有限公司 028-8618 0660