EM9280串口的技术特色及应用

 2012-5-31         

        EM9280是英创公司即将推出的新型工控主板产品。EM9280作为第一款板载8个独立的异步串口(UART),而有别于公司的其他主板产品。8个串口的配置,可满足在绝大多数应用场合的需求,从而帮助客户进一步降低整机成本,加快产品的入市时间。本文主要是介绍EM9280各个串口的应用特色。

 

        在Window CE6.0系统中EM9280的8个串口分别命名为“COM2:”-“COM9:”,其基本特性如下表所示:

 


EM9280串口

物理接口

简要说明

  “COM2:”  RTS/CTS流控  作为GPRS模块接口,RTS/CTS与GPIO复用
  “COM3:”  RX/TX三线制  独立串口,缺省配置为RS232电平
  “COM4:”  RX/TX三线制  独立串口,最高波特率可达3Mbps
  “COM5:”  RX/TX三线制  独立串口,最高波特率可达3Mbps
  “COM6:”  RX/TX三线制  与GPIO10–GPIO11复用管脚
  “COM7:”  RX/TX三线制

  独立低速串口,适合作RS485,

  推荐波特率 1200bps–19200bps

  “COM8:”  RX/TX三线制
  “COM9:”  RX/TX三线制


 

        在标准的EM9280中,只有COM3的接口是RS232电平(±9V),其他的都是3.3V的TTL电平信号,在无数据收发时均为高电平。EM9280为了突出串口的应用,大部分串口都采用独立管脚引出,这样同时还可提高其GPIO的利用率。在8个串口中,COM2–COM6为iMX283芯片内部的串口单元,由于DMA的支持,因此可实现高达3Mbps的波特率。在使用高波特率时,需注意接口驱动芯片的速度及传输距离的影响。

 

        COM7–COM9则属于低速串口,尽管最高波特率可达57600bps,但推荐使用的波特率为1200bps–19200bps。由此可见COM7–COM9特别适合作为RS485来使用。在EM9280的评估底板中,COM7 – COM9都配置成RS485接口,以方便用户评估。

 

        在RS485的应用中,用户还可以设置某一位GPIO作为硬件RTS方向控制,具体编程方法如下:

 

        1. 设置DCB参数块中的fRtsControl为RTS_CONTROL_TOGGLE。

 

        DCB SerDCB;
        SerDCB.DCBlength = sizeof( DCB );
        GetCommState( m_hSer, &SerDCB ); // 读取当前DCB
        SerDCB.fRtsControl = RTS_CONTROL_TOGGLE;
        SetCommState( m_hSer, &SerDCB ); // 再设置回串口驱动

 

        2. 通过DeviceIoControl来指定具体作为RTS的GPIO管脚。以GPIO24为例:

 

        #include “bsp_drivers.h”

        DWORD dwRTSPin = GPIO24;
        bRet = DeviceIoControl(m_hSer, // file handle to the driver
                IOCTL_SET_UART_RTS_PIN, // I/O control code
                &dwRTSPin, // in buffer
                sizeof(DWORD), // in buffer size
                NULL, // out buffer
                0, // out buffer size
                NULL, // pointer to number of bytes returned
                NULL); // ignored (=NULL)

 

        可用作硬件RTS方向控制的GPIO管脚有:GPIO6–GPIO7;GPIO20–GPIO31。若应用程序选择其他GPIO作为RTS,设置函数将返回FALSE。