嵌入式系统中扩展串行口的几种方法

2008-02-23 05:28:04来源:互联网 阅读 ()

新老客户大回馈,云服务器低至5折

引言
串行接口设备凭借其控制灵活、接口简单、占用系统资源少等长处,被广泛应用于工业控制、家庭安防、GPS卫星定位导航连同水、电、气表的抄表等领域。在这些嵌入式系统中,可能会有很多从设备都通过串行接口和主机进行通信,如GPRS MODEM、红外发送和接收模块、RS485总线接口等。这使得研发人员常常面临嵌入式系统中主机串行通信接口不足的问题,针对此问题,本文介绍了几种常见的解决方法。

软件模拟法
软件模拟法可根据串行通讯的传送格式,利用定时器和主机的I/O口来模拟串行通讯的时序,以达到扩展串口的目的。

接收过程中需要检测起始位,这能够使用查询方式,或,在端口具备中断功能的主机中也能够使用端口的中断进行处理。接收和发送过程中,对定时的处理既能够使用查询方式也能够使用定时器中断方式。为了确保数据的正确性,在接收过程中能够在检测异步传输的起始信号处加上一些防干扰处理,在接收每个位时能够采用多次采样。
  
利用并口转串口扩展串行口
基于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个标准串口,通过外部引脚选择串口扩展模式:单通道工作模式和多通道工作模式。单通道模式下,无需配置芯片的通讯格式,子串口和母串口以相同的波特率工作,同一时刻只允许一组子串口和母串口通讯,工作子串口由地址线选择。单通道工作模式适用于任何从机无需同时通讯,并且通讯过程完全由主机控制的系统。多通道模式下,各子串口波特率相同,允许任何子串口同时和母串口通讯,母串口以子串口波特率的6倍工作。发送时由地址线选择用来发送数据的子串口;接收时子串口能主动响应从机发送的数据,再由母串口发送给主机,同时由地址线返回接收到数据的子串口地址,主机在接收到子串口送来的数据后,能够根据地址线的状态判断数据是由哪一个从机发送的。

多通道工作模式下,在进行数据通讯前要对芯片进行工作方式配置,包括串口帧格式配置和通讯波特率配置。

通过串行口和控制引脚相互配合可对芯片进行工作方式配置,引脚MS为0、且STADD2~STADD0为000时写命令字,引脚MS为1、STADD2~STADD0为000时读命令字。进行工作方式配置时,芯片的帧格式和母串口工作波特率和上一次进行数据通讯时一致;而复位后的帧格式为11bit,母串口波特率为7200bps。

基于SP2338的串行口扩展
SP2338是采用低功耗CMOS 工艺设计的通用异步串行口扩展芯片,他可轻松将主机原有的1个串行口扩展成3 个全新的全双工串行口。

SP2338适用于1个起始位、8个数据位、1个停止位的多串口系统,也就是说其帧格式是不可编程的。主机通过改变ADRI1、ADRI0地址线状态的方式选择3个子串口中的任意一个,3个子串口的地址分别为00、01、10。地址11用于执行SP2338 芯片本身的复位指令0x35 或0xB5、睡眠指令0x55或0xD5、延时指令0x00。向RX0~RX3中的任意一个接收端口写任意数据即可将SP2338唤醒,但由于SP2338的唤醒时间需要25ms左右,故用于芯片唤醒的数据将不会被主机接收。因此,能够先发送一个字节数据用于唤醒芯片,延时25ms后即可进行正常的数据传输。

未使用的输入端口,如RX0、RX1、RX2等必须连接到VCC;未使用的输出端口,如TX0、TX1、TX2等必须悬空;未使用的ADRI0、ADRI1必须连接到GND。

主机收发数据时序为:主机TX3接收到一个字节后应立即读取SP2338的输出地址ADRO0、ADRO1的状态,判断接收到的数据来自哪个子串口;主机发送数据时,首先通过ADRI0、ADRI1选择某一个子串口,再向TX3写将发送的数据。


图1 本文设计的扩展串行口方法示意图


本文设计的扩展方法
在电路设计的过程中,本文设计出一种适合自己系统需要、将1个串口扩展为3个串口的方案,如图1所示。

其中,4001是四2输入端或非门,40106是六施密特触发器。4001的4脚和9脚分别为主机的RXD和TXD,40106的2脚和9脚为子串口的TXD0和RXD0,6脚和11脚为子串口的TXD1和RXD1,4脚和13脚为子串口的TXD2和RXD2。

根据图的连接方式和逻辑代数的推导可得:RXD的状态等于40106的9脚、11脚、13脚的状态相和。当40106的9脚、11脚、13脚中的任意一个有数据信号时,由于在异步串行通讯中,无数据传输时的引脚状态为高,因此RXD上就能接收到有数据信号的那个引脚上的数据状态。40106的2脚、4脚、6脚的状态等于TXD的状态,所以能够利用40106的2脚、4脚、6脚做为子串口的TXD。

这种设计方案适用于主机同时向多个串行设备发送数据,而从设备不同时向主机发送数据的情况。再增加几个信号线,就能够区分出向哪一个从设备发送数据连同接收到的数据是来自哪一个从设备。在本文的系统中,主机是通信的发起者,接收到的数据来自哪个从设备是能够预知的,因此,只需再增加3个控制从设备使能的信号线即可。

几种方法的比较
在需要扩展系统的串行口时,使用多串行口单片机的方法是最容易想到的。由于串口集成在单片机内部,因此设备体积较小,抗干扰能力较高,但多串口单片机通常价格较高,而且,假如是研发人员所不熟悉的型号,还需要研发人员重新学习并购买和之配套的研发工具,这延长了产品的研发周期,也增加了产品的研发成本。

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇: 嵌入式数字多媒体终端硬件平台的设计和实现

下一篇: 使用ARM标准C库进行嵌入式应用程式研发