基于PC104模块的多串口通信扩展设计与工程实现

基于PC104模块的多串口通信扩展设计与工程实现,第1张

摘要:应用PC/104模块486DX和EMM-8M-XT实现多串口通信。扩展后,10个串口可以同时进行全双工通信。结合工程实例,给出系统结构、软硬件设计方法以及多串口通信在DOS平台上的典型应用。

2004年12月31日收到修改稿。
引言
    串行通信方式具有使用方便、传输可靠、信号线数量少等优点,因而倍受青睐。
基于PC/104模块的嵌入式系统,串行通信是常用的通信方式之一。通过串行数据端口,可以实现PC/104与PC机以及PC/104模块之间的通信。无人机飞控系统是一个典型的多外设平台,因此工程设计中必须解决多串行口数据通信问题,完成数据采集或信号传输。在其它工程应用中,研究多串口数据通信也尤其重要。应用PC/104模块在嵌入式系统中扩展8个以上的串行端口,并同时进行双工数据通信是本文要重点讨论。

系统结构及硬件设计
    随着技术的进步,PC/104结构的嵌入式模块可以根据实际的要求通过简单的搭积木的方法进行系统扩展,其丰富的功能模块为设计人员带来了诸多方便。在无人机飞行控制系统中,部分传感器、测控终端、任务设备通常采用串行数据接口。本文将结合某型无人机飞控系统开发平台,介绍应用486DX和EMM-8M-XT嵌入式模块,实现多串口数据通信扩展设计的方法和工程应用情况。

基于PC104模块的多串口通信扩展设计与工程实现,第2张


    某型无人机飞控系统结构如图1所示。实际使用中,CPU板和串口板通过PC104总线栈接,根据使用需要还外扩了AD/DA、DIO等其它功能模块。本文仅对与串口相关的模块进行介绍。系统CPU板自带两个串行口(P9~P10),外扩的串口板提供8个串行口(P1~P8),分别完成不同的数据通信功能。各口具体功能及通信模式见表1。
表1   串口工作模式及功能
串口号
工作模式
功             能
P1、P2
RS422
与测控设备数据通信用
P3
RS422
接收GPS信息,发送初始信息
P4
RS485
采集航向角数据
P5
RS485
采集高度、空速数据
P6~P8
RS422
与3台任务设备进行数据通信
P9
RS232
CPU板电子盘程序更新用
P10
RS232
飞控系统监测、航路装定
图1  系统结构框图
486DX模块
    486DX是一种高度集成、具有自栈结构、与IBM-PC/AT兼容的PC/104 CPU模块。采用增强型的80486嵌入式中央处理器INTEL DX4作为核心元件,工作频率33~133MHz,4~16M字节的在板DRAM
    486DX模块在板包含了与PC/AT兼容的DMA控制器、8259类型的中断控制器及定时器,带扩展的工业标准ROM-BIOS及键盘喇叭接口。在板的外部接口包括一个PC/AT兼容的标准双向并行口、两个16550兼容的RS232串行通讯接口、一个用外接后备电池支持实时时钟,应用EEPROM存储BIOS参数设置,省去了大多数硬件配置跳线。该板功耗极低,典型值为2.8W,外部电源要求为+5V,可以宽温工作。
    本文设计的系统主要应用该模块的两个串行端口,端口1(P9)用于实现模块电子盘上用户程序的在线改写,端口2(P10)主要用于飞控系统参数的实时监测和航路装定。考虑到实际设计的系统中串口设备多,需要外扩串口模块实现多串口通信。这里选用DIAMOND公司的EMM-8M-XT串口通信模块来实现。
EMM-8M-XT模块扩展设计
    EMM-8M-XT串口通信模块,在板集成了两个单元高性能的16C554控制芯片(相当于8个16C550),可以达到更高的通讯速率而无需占用过多的CPU资源,模块的主要特点如下:
·8个通道各有独立的16字节接收缓冲器和16字节发送缓冲器;
·每个串口可通过硬件跳线设置工作模式(RS232\RS422\RS485任选);
·标准配置波特率可达115.200Kbps(460.8Kbps可选);

·10个不同中断级可选;
·上电时8串口的基地址和中断选择从EEPROM中取数据配置,上电后可通过软件配置;
    EMM-8M-XT模块中,J3、J4为模块的串行端口。除了包括八个可设置的全信号串行口外,还包括了8路离散的DIO,本例中没有使用DIO。模块中包括J5~J9 共5组跳线,通过正确设置这些跳线,可以确定串口工作模式、基地址和中断号使用。这里需要说明一点,由于串口模块为外扩方式,其地址不能与CPU模块串口地址相冲突,因此J9的跳线设置为B(in)、C(in),串口板的基地址为240H。使用的中断号为3和11,其中P1~P4共享11号中断,P5~P8共享3号中断。

基于PC104模块的多串口通信扩展设计与工程实现,第3张


    要正确使用每个串行口,除了硬件跳线设置正确外,还要对EMM-8M-XT模块的在板EEPROM进行软件设置。每个串行口的基地址和中断号设置均保存在EEPROM中,上电后模块将从中读取这些数据,并且中断号的软件设置要与硬件跳线设置相一致。
    需要说明一点,一旦串口软件设置成功后,这种设置同硬件跳线设置效果是相同的,这是由EEPROM的非易失性决定的。除非人为通过软件进行重写 *** 作,设置的参数才会改变。本例中,笔者用Borland C 编写了一个软件设置应用程序(限于篇幅,本文从略),可以在PC/104开发装置上对EMM-8M-XT模块进行EEPROM的软件设置,并且设置后可以回读、显示以检验设置的正确性。

软件设计
    软件采用C语言编程,工作于DOS6.22平台系统下,可读性好,能够方便移植到其他平台。串口通信程序中包含很多模块,这里以EMM-8M-XT模块串口服务程序部分代码为例进行简单介绍,486DX模块的编程方法类似。软件的基本流程参见图2。
图2  串口软件基本流程
Server_COM_Int(CCOM* pCOM)串口服务程序:
void Server_COM_Int(CCOM* pCOM)    //串口服务程序
{
 int nDataInBuf;                            //如果还有中断等待响应
 while(!((pCOM->byteIIR=(0x0F&inportb(pCOM->Base+COM_IIR)))
&COM_NO_INT_PENDING)){
  switch(pCOM->byteIIR){
  case COM_INT_FROM_RDR:      //数据准备好
  case COM_INT_FROM_RTO:      //接收超时
   while(inportb(pCOM->Base+COM_LSR)&COM_STATUS_DR){ //FIFO中还有数据
    pCOM->pRBuffer[pCOM->pRBEndOff++]
     =inportb(pCOM->Base+COM_RB);   //数据进环形缓冲区
    if(pCOM->pRBEndOff==pCOM->nRBSize)
     pCOM->pRBEndOff=0;      //调整环形缓冲区指针
   }
   pCOM->bCOM_Data_OK=TRUE;      //串口收据接收完毕
   break;
  case COM_INT_FROM_TRE:        //发送数据准备好
   nDataInBuf=pCOM->pTBEndOff-pCOM->pTBHeadOff; //计算缓冲区字符
   if(nDataInBuf==0)     //如果字符数为零,禁止"发送空"中断
    outportb(pCOM->Base+COM_IER,
     inportb(pCOM->Base+COM_IER)&(~COM_INT_THRE));
   else{    
    outportb(pCOM->Base+COM_MCR, //发送使能,Bit1 置1(拉低RTS)
    (inportb(pCOM->Base+COM_MCR)|COM_MCR_RTS)&(~COM_MCR_DTR));
    if(nDataInBuf<0) nDataInBuf+=pCOM->nTBSize;//计算缓冲区字符数    if(nDataInBuf>COM_MAX_FIFO_DEP)
nDataInBuf=COM_MAX_FIFO_DEP;
while(nDataInBuf>0){
outportb(pCOM->Base+COM_THB,
pCOM->pTBuffer[pCOM->pTBHeadOff++]);
    if(pCOM->pTBHeadOff==pCOM->nTBSize) pCOM->pTBHeadOff=0;
    nDataInBuf--;
    }
   }
   outportb(pCOM->Base+COM_MCR,  //发送禁止,接收使能
   (inportb(pCOM->Base+COM_MCR)&(~COM_MCR_RTS))|COM_MCR_DTR);
   break;
  }
 }
}

应用情况
    应用过程中,首先利用自编软件对各个模块进行了测试。以EMM-8M-XT为例,试验流程分为三个步骤:单串口工作→4串口同时工作→8串口同时工作。在测试8串口同时工作时,串口工作在RS232工作模式,将串口模块直接与4台工控机共8个串口相连,运行自编软件进行长时间连续的通信测试,并进行收发计数,工控机和串口模块各自显示的收发计数是相等的,表明工作正常。同时在工控机上配接串口转换器,对RS422、RS485工作模式也进行了测试,得出的结果与RS232类似。
    在单个模块调试成功的基础上,进行了系统联试,系统的详细配置如图1。仍使用工控机或PC机模拟外围设备的方法,进行通信试验。PC/104模块的开发装置配接了显示器,屏显每个串口的工作情况,本文测试了9个串口同时工作的情况,因为串口P9用于程序更新,用户程序通过该口写入,没有用于实时通信。如果P9不用于此功能,10个串口完全可以同时进行通信。经试验发现,多串口可以长时间连续稳定进行数据传输,而且各个串口可以设置为不同波特率进行工作。
    除了大量的常温测试外,还对整个系统进行了温度试验,模块在高温+85℃工作和低温-40℃启动工作均正常。
    多项试验表明,该系统工作温度范围宽、抗干扰能力强,实时性好、可靠性高,适合用于无人机飞控系统及其他工业控制场合。

结语
    本文薪樯苡τ肞C/104模块486DX和EMM-8M-XT实现多串口通讯扩展设计的方法,已成功应用于某型无人机飞控系统的设计开发中。在后续研制工作中,稍作改动,该设计方法还将用于开发飞控系统仿真平台,替代使用台式PC机仿真的传统方案,可与飞控系统配套进行仿真试验。
    这种串口扩展设计方法易于掌握,构建的系统工作稳定,同时在功耗、体积、成本方面有很强的优势,为多串口通信的工程实现提供了重要参考。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/dianzi/2429721.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-08-02
下一篇 2022-08-02

发表评论

登录后才能评论

评论列表(0条)

保存