当前位置:首页 > 单片机 > 单片机
[导读]1 引言在以单片机为核心的测控系统中.微控制器往往需要两个或两个以上的串行口与其他主机或外设进行通讯,如何使系统具备多个串行接口,是一个具有普遍性的问题。尤其在航空航天领域,由于GPS、大气数据系统、

1 引言

在以单片机为核心的测控系统中.微控制器往往需要两个或两个以上的串行口与其他主机或外设进行通讯,如何使系统具备多个串行接口,是一个具有普遍性的问题。尤其在航空航天领域,由于GPS、大气数据系统、数字罗盘、无线电高度表、甚至陀螺等航空电子设备普遍采用串行通讯方式,单片计算机系统就更需要有多个串行口以满足与外界信息交换的需要。

2 常用的多串行口设计方法

①选用多串行口单片机

直接选用多串行口单片机作为系统的CPU,显然是最直接有效的方法。现在有许多新型CPU配备两个或两个以上串行口,如W77E58、DS80C320、MSP430F149、C8051F020单片机和数字信号处理器TMS320C30有两个串行口,而cygnal的C8051F系列单片机有4-5个全双工的异步串行口。

②用CPU的I/O模拟串行口

当串行口的波特率设为9600波特时,传送一个bit需要100us左右,对于一般的单片机而言,软件定时器完全有能力按异步串行通讯协议模拟出串行口的时序。所以,用CPU的两个I/O口和一个软件定时器,就可以纯粹用软件模拟出一个串行口来。文献介绍了一种具体的实现方法,发送时,只需按时序一位一位输出数据即可,接收时,首先利用外部中断检测到I/O接收口上的起始电平,然后利用定时器按半个bit的时间长度延时接收第一个bit的数据,再按一个bit的时间长度延时依此读取其他位的信号。

③基于高速输入输出的软件串行口

80C196系列单片机配备了高速输入HSI和高速输出HSO接口.可以利用HSI和HSO来模拟串行口。数据的输出利用HSO,只要在HSO的定时器里写入与波特率对应的延迟时间,HSO每中断一次,输出一个数据位,直到停止位输出完毕。接收时,利用HSI自身的信号跳变检测功能检测起始位,并产生中断通知CPU开始接收数据,后续的数据位由软件定时器按波特率定时读取。文献详细介绍了实现方法,并给出了完整的程序代码;本方法在80C196MC/MD单片机中。则表现为事件处理阵列EPA和外设事物服务器PTS的应用,其优点是EPA的每个模块与CPU的指定引脚对应,减少了软件开销和程序设计的复杂度。

④16C550系列可编程通讯控制器

利用并行口扩展串行口的接口芯片种类较多,其中16C550系列通讯控制器普遍应用于计算机控制系统和通讯设备,以实现CPU与串行口和MODEM的通讯。16C550配备一个串行口,16C552配备两个串行口,而16C554配备四个串行口。16C550系列器件的实质是实现串行口与CPU并行口的转换,其自身有较强的数字逻辑功能。16C550系列器件的串行口工作方式均可编程,有的还带有开关量输入输出接口,可以作为CPU的开关量扩展接口用。

⑤用分立器件将并行口转换为串行口

文献提供了一种利用555定时器、D触发器和移位寄存器等分立元件实现串、并口互相转换的电路。该电路用定时器产生与波特率一直的同步时钟信号,把接收到的数据移位寄存到并口供CPU读取,或把并行口的数据移位发出,其实质是用若干个分立元件模拟16C550的功能。

⑥串行口扩展芯片

现在有一种专门的SP系列串行口扩展芯片,可以将一路高速的全双工串行口扩展为多路的低速全双工串行口,串口的波特率通过晶振统一确定。如SP2328和SP2338可以将一路母串口扩展为三路子串口,SP2538可以将一路母串口扩展为五路子串口。该系列芯片有输入地址线和输出地址线,在通过母串口向子串口发送数据时要给输出地址线上加选择电平,确定从哪一路子串口输出,在通过母串口从子串口读取数据时要检测输入地址线的电平,以确定是哪一路子串口的信号。该系列芯片应该是采用分时机制,通过内部的逻辑电路将一路数据分解为多路或将多路数据合成为一路。如SP2328母串口的波特率是子串口波特率的四倍,SP2538母串口的波特率是子串口波特率的六倍。

⑦用多路复用器扩展串行口

文献提供了一种利用多路复用器MAX353将一路串行口扩展为两路的方法。在发送信号的时候,CPU先给出MAX353的端口选择地址,串行信号经多路复用器的切换,从指定通道发送出去。在接受信号的时候,将多路复用器默认为第一通道,第二路串行口的RXD2同时接到(2PU的外部中断引脚上。如果第一通道有数据,则直接接收。如果第二通道有数据.RXD2的起始位将产生一个外部中断,CPU进入中断响应程序,将复用器切换到第二通道,接受RXD2的数据。一个字节接收完毕后,将复用器切换回第一通道。

文献的方法占用了一个外部中断,且只能将一路串口扩展为两路。基于同样的思路,可以利用四选一多路复用器将一路串行口扩展为两路以上。发送

数据的操作过程同上。为了实现数据的接收,需要用可编程逻辑器件或锁存器及编码器设计一个通道选择电路,哪一路先有起始位,将多路复用器选通到哪一路。CPU根据通道选择电路的输出确定所收数据的通道编号。

⑧运用FPGA/CPLD设计串行口

FPGA/CPLD具有强大的电路模拟功能。利用FPGA/CPLD可以设计并行口转串行口的时序逻辑电路,该电路一般由四部分组成:总线接口与控制逻辑部分、波特率发生部分、移位输出与锁存部分、移位输入与锁存部分。该电路波特率可以调节,有片选线和读写线。CPU通过并行口对电路进行访问。从实质上说,该电路模拟了可编程控制器16C550的串行接口功能。事实上,FPGA/CPLD有很大的灵活性。可根据实际需要和系统资源对电路进行适当裁剪,也可把多路复用技术或时分复用技术运用于串行口的模拟。

3 多串行口设计方法的比较研究与选择原则

以上8种方法,各有利弊。显然,选用多串口CPU是最为直接有效的方法,但是选用一种新型号的CPU,对于开发者来说,有一定的开发风险,有时还有受到供货渠道和开发条件的限制。选用专用芯片是一种可靠性最高的串口外部扩展法,有技术成熟、软件工作量小等诸多优势。不足之处是硬件成本增加、体积增加,有时还要占用外部中断源。选用多路复用器。其好处是可以实现CPU一点对多点的通讯、软硬件成本低、可靠性高,致命缺点是CPU不能同时接收多路输入数据。选用FPGA/CPLD既可以设计串行接口本身,又可以用来实现多路串口切换,或管理多个串行接口芯片的中断源。优点是可靠性高、CPU软件开销小,不足是开发成本稍大、硬件成本高。用分立元件实现串行口的转换,优点是软件工作量小,不足是电路复杂、可靠性差、要占用外部中断源。利用软件模拟串行接口,其优点不言而喻.既不增加任何硬件,又不占用外部中断源。缺点是软件复杂度高、CPU开销大、要占用软件定时器。

以上八种多串口的设计方法可以归纳为五种设计思想:

①直接从CPU上下手,选择多串行口单片机;

②挖掘器件本身的资源,在CPU I/O口线上用软件模拟串行口;

③使用功能电路实现串、并转换;

④使用功能电路将一路高速串行口分解为多路低速串行口;

⑤通过分时复用实现一路到多路的切换。

针对这几种不同的设计思想和其具体的实现方法,在应用时该如何选择,不但要依据以上几种方法的软硬件复杂度、CPU时间开销、实时性和可靠性,还要依据应用系统中所需串行接口的总路数、各个串口之间的独立性和波特率,以及现有的开发条件和综合成本指标。选择时要根据各种因素进行综合权衡。要在能实现所要求功能的基础上,充分利用现有资源、降低系统的复杂度、提高可靠性,力求使设计代价最小、总体成本最低。当然,这些方法的选择应该灵活多样,不必拘泥于一种方法,也可以因地制宜地选择几种方法的组合。

4 应用举例

在某型无人机飞行控制器设计中,CPU选用的是80C196KC。CPU上原有的一路串口用于遥控遥测。为了测量飞机的航向角。系统中应用了数字罗盘HMR3000。该传感器为串口接口,波特率为19200,输出数据为NMEAC183格式,每秒20帧,每帧35字节,为此需要给控制器增加一路全双工异步串行接口。

基于对以上8种设计方法的比较与分析,在权衡系统的软硬件复杂度之后,选用了第四种方法,即利用16C550可编程通讯控制器扩展出一路串行口。专门与该传感器通讯。16C550使用了FIFO功能,在接收14个字节后向CPU提出一次中断请求。这样CPU最多中断4次就可以全部接收一帧姿态测量数据。控制器的软件对HMR3000一帧输出数据的解码时间仅为1.187ms,CPU的负担并不大。CPU、16C550和HMR3000的连接电路如图1所示。


图1 可编程通讯控制器16C550与单片机系统的接口电路图

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

1-Wire网络最初设计用于与单条1-Wire总线上的单个1-Wire主机和多个1-Wire节点进行通信。对于1-Wire网络,理想的拓扑是包含不重要分支线的线性拓扑。然而,包含长分支线的星形拓扑常常是不可避免的,导致确...

关键字: 多路复用器 1-Wire通道

MCS-51单片机有两个外部中断源INT0和INT1,它们分别在P3.2和P3.3引脚出现低电平或下降沿信号时向单片机发出中断请求。外部中断可用于检测单片机外部发生的事件,如键盘敲击和特定脉冲发生的次数等。

关键字: 51单片机 外部中断

评估模拟开关、多路复用器、运算放大器和其他 IC 对 IC 测试工程师提出了挑战。典型的测试场景需要对设备的输入施加测试或强制电压,并测量任何产生的泄漏电流和偏移电流,通常为 1 pA 或更低。与缓慢且昂贵的商用自动测试...

关键字: 模拟开关 多路复用器 运算放大器

外部中断是单片机实时地处理外部事件的一种机制。具体指的是,当某种外部事件发生时,单片机的中断系统迫使CPU暂停正在执行的程序,转而去进行中断事件的处理;中断处理完毕后,又返回被中断的程序处,继续执行下去。这里我们以Nuc...

关键字: MCU 外部中断 ST

从事快速切换数据采集系统的设计人员经常抱怨模拟输入通道上出现随机尖峰、波动、过度噪声或其他类型的意外电压。这些问题的常见原因是阻抗不匹配。当驱动多路复用系统的源阻抗高于控制系统的输入阻抗时,我们可能会看到一个扫描通道的电...

关键字: 电荷注入 多路复用器

Diodes 公司今天宣布推出 PS508 和 PS509 模拟多路复用器,能在工业环境中切换高达 36V 的讯号电压。

关键字: diodes 多路复用器 工业物联网

STM32CubeMX是官方推荐的配置软件,而HAL库也是取代之前的库函数的通用库,所以STM32CubeMX+HAL库是当前主流的工程创建方式,HAL库的可移植性也高于被取代的库函数。 之前在[程序员小哈]的公众号中写...

关键字: LED 外部中断

在测试测量相关应用中,模拟开关和多路复用器有着非常广泛的应用,例如运放的增益调节、ADC分时采集多路传感器信号等等。虽然它的功能很简单,但是仍然有很多细节,需要大家在使用的过程中注意。所以,在这里为大家介绍一下模拟开关和...

关键字: 模拟开关 多路复用器

I3C多路复用器和IO扩展器以较小的占板面积,为基础架构控制平面应用带来更大灵活性及12.5MHz速率

关键字: i3c 多路复用器 扩展器

1.ARM中一些常见英文缩写解释 MSB:最高有效位; LSB:最低有效位; AHB:先进的高性能总线; VPB:连接片内外设功能的VLSI外设总线; EMC:外部存储器控制器; MAM:存储器加速模块; VIC:向量中...

关键字: ARM THUMB I2C 外部中断
关闭
关闭