串行接口设备凭借其控制灵活、接口简单、占用系统资源少等优点,被广泛应用于工业控制、家庭安防、GPS卫星定位导航以及水、电、气表的抄表等领域。在这些嵌入式系统中CONTROL ENGINEERING China版权所有,可能会有很多从设备都通过串行接口与主机进行通信,如GPRS MODEM、红外发送和接收模块、RS485总线接口等。这使得开发人员常常面临嵌入式系统中主机串行通信接口不足的问题,针对此问题,本文介绍了几种常见的解决方法。
软件模拟法
软件模拟法可根据串行通讯的传送格式,利用定时器和主机的I/O口来模拟串行通讯的时序,以达到扩展串口的目的。接收过程中需要检测起始位,这可以使用查询方式,或者,在端口具有中断功能的主机中也可以使用端口的中断进行处理。接收和发送过程中,对定时的处理既可以使用查询方式也可以使用定时器中断方式。为了确保数据的正确性,在接收过程中可以在检测异步传输的起始信号处加上一些防干扰处理,如果是无线传输系统,在接收每个位时可以采用多次采样。对于有线系统来说,1次采样就够了,你看IIC,SPI等,谁去进行了多次采样。
如今软件模拟以其价格低廉,使用方便,已经成为一种潮流.但是不是所有的单片机都适合用来进行串口的软件模拟的.软件模拟的方法一般有两种,一种是读写I/O,另外一种是读写端口.很容易想到采用读写端口的方式模拟的方式,各串口的波特率必须保持一致.而且当各路数据的输入时间差只有那么几十微秒时,很容易造成数据丢失,虽然看上去这种方式也可以承受输入数据端短路的高数据量压力测试CONTROL ENGINEERING China版权所有,但这种测试方法是刚好落在了该方案的最佳输入点上.所以真正的使用中是有几率出错的.而采用我们PDK80CXX系列在进行8路以下(4路全双工通讯)的串口模拟时,完全可以采用读写I/O口方式来完成,这样,我们可以非常轻松完成个子口的波特率不等的设置.而且可以达到非常高的速率,当外接8MHz的晶体时,3路子口的最高速度可以达到38400以上.我想就是38400的波特率一般的单片机也就足够了.俗话说,"打铁还需墩子硬",而我们PDK80CXX都是工业规格设计,超强的抗干扰性,超宽的高低温工作范围.不知道各位看官目前有没有用过可以在-40~+120摄氏度工作的单片机.所以采用PDK80CXX模拟串口扩展无疑是目前性价比最高的一种解决方案.
利用并口转串口扩展串行口
基于Intel8251的串行口扩展
Intel8251是一种通用的同步/异步发送器(USART),它的工作方式可以通过编程设置,并具有独立的接收/发送器。能以同步或异步串行通信方式工作,自动完成帧格式,具有奇、偶校验和错误检测电路。
基于TL16C554的串行口扩展
TL16C554是TI公司生产的4通道异步收发器集成芯片。对TL16C554串行通道的控制,是通过对控制寄存器LCR、IER、DLL、DLM、MCR和FCR编程来实现的。这些控制字决定字符长度、停止位的个数、奇偶校验、波特率以及调制解调器接口。控制寄存器可以任意顺序写入,但是IER必须最后一个写入,因为它控制中断使能。串行通道内的波特率发生器(BRG)允许时钟除以1至65535之间的任意数,BRG根据其不同的三种通用频率中的一种来决定标准波特率。
16C55x系列芯片还包括16C550、16C552,分别可以扩展1个和2个串行口。
利用串行口扩展串行口
基于GM8123/25系列芯片的串行口扩展
GM8123/25系列串口扩展芯片可以全硬件实现串口扩展,通讯格式可设置,并与标准串口通讯格式兼容。
GM8125可扩展5个标准串口,通过外部引脚选择串口扩展模式:单通道工作模式和多通道工作模式。单通道模式下,无需设置芯片的通讯格式,子串口和母串口以相同的波特率工作CONTROL ENGINEERING China版权所有,同一时刻只允许一组子串口和母串口通讯,工作子串口由地址线选择。单通道工作模式适用于所有从机不需要同时通讯,并且通讯过程完全由主机控制的系统。多通道模式下,各子串口波特率相同,允许所有子串口同时与母串口通讯CONTROL ENGINEERING China版权所有,母串口以子串口波特率的6倍工作。发送时由地址线选择用来发送数据的子串口;接收时子串口能主动响应从机发送的数据,再由母串口发送给主机,同时由地址线返回接收到数据的子串口地址,主机在接收到子串口送来的数据后,可以根据地址线的状态判断数据是由哪一个从机发送的。
多通道工作模式下,在进行数据通讯前要对芯片进行工作方式设置,包括串口帧格式设置和通讯波特率设置。
通过串行口和控制引脚相互配合可对芯片进行工作方式设置,引脚MS为0、且STADD2~STADD0为000时写命令字CONTROL ENGINEERING China版权所有,引脚MS为1、STADD2~STADD0为000时读命令字。进行工作方式设置时,芯片的帧格式和母串口工作波特率与上一次进行数据通讯时一致;而复位后的帧格式为11bit