文章来源:http://www.emtronix.com/case/case2008197.html
异步串行通讯口(UART)是在工业自动化中应用最为广泛的通讯接口之一,其接口形式包括RS232C、RS485、RS422。作为以网络通讯为特色的英创嵌入式主板产品,常常会面临支持多串口(串口数量通常超过6个)的应用。在通常情况下串口的数据收发均采用硬件中断驱动,但对于多串口的应用,由于系统资源的限制,不可能为每一个串口控制器提供一个独立的中断,而必须采用中断共享的技术,在WinCE环境中,中断共享还涉及到更为复杂的驱动程序。为了方便客户能高效、低成本的实现多串口的扩展,英创公司专门设计了采用硬件中断共享技术的8串口扩展单元ETA508,作为客户实际扩展的参考。
本文将以EM9000作为系统的嵌入式主板,具体介绍ETA508的使用方法,该方法同样适用于英创的其他嵌入式主板产品,如EM9260、EM9360、ETR232i等。客户可参考本文及ETA508的资料,快速实现自己的多串口产品。
注意,本文所介绍的串口扩展方法的基本特点是每8个异步串口共享一个独立的硬件中断,对EM9000、EM9260等模块,可扩展一组8个串口,而EM9360由于总线上支持多个独立外部中断,所以可扩展2组共16个异步串口。尽管理论上可以扩展更多的串口,但考虑到系统的综合处理能力,在软件上我们把扩展串口数量的上限定在2组16个。
系统构成
ETA508是基于英创精简ISA总线的8串口扩展单元,其输出接口均为三线制的RS232C。与嵌入式主板的连接关系如图1所示:
图1 由EM9000嵌入式主板与ETA508构成的多串口系统
ETA508采用工业标准的16C550作为每个串口的控制器,而每个16C550将占用8个精简ISA总线的8位数据端口,ETA508经过精心设计,并不占用额外的数据端口,所以整个ETA508只占用8×8 = 64个精简ISA总线的8位数据端口,使用片选CS1#和地址线SA0 – SA5。对EM9000和EM9260,由于需要用到P5口的信号线,所以如果在系统中使用了多串口,则不能同时使用音频、SPI等功能。
用户可通过以下步骤来快速实现多串口应用方案:
原型评估
从英创公司购买一套ETA508多串口扩展单元(如图2所示)以及英创的嵌入式主板,对 ARM9的产品,如EM9000、EM9260、EM9360等,多串口的驱动程序将加载到内核;对x86的产品,如ETR232i、ETR232H等,将提供多串口的串口驱动程序。在此基础上,客户可利用英创公司为ETA508提供的基本通讯应用程序源代码,快速评估多串口扩展单元的基本性能是否满足其具体的应用需求。
图2 ETA508多串口扩展单元,包括8串口主板和ETA508ICU接口控制模块
设计应用产品
ETA508多串口扩展单元由包括2个16C554(等效为4个16C550)以及RS232驱动电路的主板和ETA508ICU接口控制单元小模块组成,如图3所示。英创公司将为客户免费提供ETA508主板的电路原理图和PCB图的资料,客户可根据需要修改各个串口的驱动形式,如RS232C、RS485、RS422等。如果客户的应用主板需要同时包括英创的嵌入式主板模块,则还需要参考相应嵌入式主板的评估底板电路原理图和PCB图。在此基础上,客户只需仅花¥80向英创购买ETA508ICU,就可方便快速地实现8个异步串口的扩展,同时保持客户自身产品的成本优势。
图3 ETA508由 8串口主板和ETA508ICU接口控制模块组成
英创公司所推出的多串口扩展方案的核心是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的原理图。
应用程序开发
在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代码。
在英创嵌入式主板的缺省配置中没有加载扩展多串口的驱动程序。对需要使用多串口扩展功能的客户,在购买英创嵌入式主板时需向英创商务人员说明其需求,我们将根据客户的需求加载一组(8个)串口或2组(16)串口的驱动程序。
驱动程序版权说明
英创公司的多串口驱动程序已申请软件产品保护,客户可以在英创嵌入式主板上免费使用该驱动程序,但禁止在其他的第三方平台上使用英创公司的多串口驱动程序。
文章评论(0条评论)
登录后参与讨论