异步串行通讯口(UART)是在工业自动化中应用最为广泛的通讯接口之一,其接口形式包括RS232C、RS485、RS422。作为以网络通讯为特色的英创嵌入式主板产品,常常会面临支持多串口(串口数量通常超过6个)的应用。在通常情况下串口的数据收发均采用硬件中断驱动,但对于多串口的应用,由于系统资源的限制,不可能为每一个串口控制器提供一个独立的中断,而必须采用中断共享的技术,在WinCE环境中,中断共享还涉及到更为复杂的驱动程序。为了方便客户能高效、低成本的实现多串口的扩展,英创公司专门设计了采用硬件中断共享技术的8串口扩展单元ETA508,作为客户实际扩展的参考。
本文将以EM9000作为系统的嵌入式主板,具体介绍ETA508的使用方法,该方法同样适用于英创的其他嵌入式主板产品,如EM9260、EM9360、ETR232i等。客户可参考本文及ETA508的资料,快速实现自己的多串口产品。
注意,本文所介绍的串口扩展方法的基本特点是每8个异步串口共享一个独立的硬件中断,对EM9000、EM9260等模块,可扩展一组8个串口,而EM9360由于总线上支持多个独立外部中断,所以可扩展2组共16个异步串口。尽管理论上可以扩展更多的串口,但考虑到系统的综合处理能力,在软件上我们把扩展串口数量的上限定在2组16个。
英创公司所推出的多串口扩展方案的核心是ETA508ICU接口控制单元。如图3所示,ETA508ICU是基于CPLD的专用接口模块,主要实现片选译码和中断共享控制等功能,ETA508ICU通过2组24芯双排IDC插针(2mm针距)与客户的应用底板相连,2组IDC插针分别命名为CN1和CN2,ETA508ICU的功能框图如图4所示:
图4 ETA508ICU功能框图
框图左半部分的引脚为CN1的引脚,右半部分引脚为CN2的引脚。CN1的管脚主要与精简ISA相连,其中大部分信号直接来自于ISA总线的信号,对CS2#,第一组直接与地址线A6相连,第二组则与地址线A6经过反相的输出,即A6#,相连,这时地址线A6实际作为第二片选线。CN1上的17#、18#、19#和22#管脚为系统保留管脚,要求在应用中保持悬空。CN2的管脚信号主要与16C550的接口信号直接相连,具体的连接方法可直接参考ETA508的原理图。
应用程序开发