历史上的今天
返回首页

历史上的今天

今天是:2025年04月10日(星期四)

正在发生

2018年04月10日 | 单片机系统多串行口设计方法

2018-04-10 来源:eefocus

    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所示。

23.gif?imageView2/2/w/550
图1 可编程通讯控制器16C550与单片机系统的接口电路图


推荐阅读

史海拾趣

Crowd_Supply__Inc.公司的发展小趣事

随着电子行业的快速发展和市场竞争的加剧,Crowd Supply Inc.也面临着诸多挑战。为了保持竞争优势,公司不断调整战略方向,加大在新技术领域的投入。例如,公司近期开始关注物联网和人工智能等前沿技术的应用,通过整合社区资源和技术优势,成功开发出了一系列具有市场潜力的新产品。

BETA Transformer Technology Corp公司的发展小趣事

为了进一步扩大市场份额,BETA Transformer Technology Corp公司开始实施国际化战略。公司积极参加国际电子展览,与国际同行进行深入交流与合作。同时,BETA公司还在海外设立了研发中心和生产基地,以便更好地服务全球客户。通过不断拓展国际市场,BETA公司的品牌影响力和市场竞争力得到了显著提升。

FOSLINK公司的发展小趣事

面对全球气候变化的严峻挑战,FOSLINK公司积极响应国家关于绿色发展的号召,将绿色转型作为企业发展的重要方向。公司致力于研发和生产低能耗、环保型的电子产品,并不断优化生产工艺流程,减少资源消耗和环境污染。同时,FOSLINK还积极推广绿色供应链管理,与供应商和客户共同构建绿色、低碳的产业链生态。这一系列的绿色转型举措,不仅彰显了FOSLINK的社会责任感,也为其赢得了更多消费者的青睐和支持。

A-BRIGHT公司的发展小趣事

在快速发展的同时,A-BRIGHT公司深知品质的重要性。公司加大了对品质管理的投入,引入了先进的生产线和检测设备,并建立了严格的质量管理体系。通过持续改进和优化生产流程,A-BRIGHT的产品质量得到了显著提升,赢得了客户的信任和好评。

AVX公司的发展小趣事

XXXX年,AVX公司迎来了一个重要的转折点,它与日本Kyocera公司达成了战略合作。这次合作使AVX在技术上获得了强大的支持,并在市场上获得了更广阔的发展空间。通过整合双方的优势资源,AVX在贴片陶瓷电容、连接器等领域取得了显著的成绩,进一步巩固了其在电子元件市场的地位。

Crystal Clear Technology公司的发展小趣事

随着公司业务的不断扩张和盈利能力的提升,Crystal Clear Technology逐渐吸引了资本市场的关注。公司通过发行股票和债券等方式筹集资金,为公司的研发、生产和市场拓展提供了强有力的资金支持。资本市场的助力使得Crystal Clear Technology能够更快地实现规模扩张和产业升级,成为电子行业的一颗璀璨明星。

以上五个故事虽然是根据一般情况和行业趋势虚构的,但它们反映了一个电子企业在发展过程中可能遇到的挑战和机遇,以及如何通过技术创新、战略合作、国际化布局、环保理念和资本市场支持等方式实现快速成长。当然,每个企业的发展历程都是独特的,Crystal Clear Technology公司的发展故事也必然有其独特之处。

问答坊 | AI 解惑

求内核

谁有OMAP3530 MINI板的wince6.0内核 给我发个吧(NK.BIN  MLO  EBOOTSD) xiexie~ shadoubuhui@sina.com…

查看全部问答>

程序崩溃问题

今天偶然发现我写的应用程序崩溃了, 记下崩溃地址是:3FD0938, 查看相应的MAP文件,程序的最大地址才62b0ac, 请问,我如何定位到问题源代码行或函数?…

查看全部问答>

服务程序加载问题ActivateService

我用EVC建了一个DLL程序,定义如下: extern \"C\" DWORD PASCAL EXPORT GSM_Init (ULONG Identifier) {         RETAILMSG(1, (TEXT(\"aaaaaaaaaaaaaaa\\n\")));         return TRUE; } extern \" ...…

查看全部问答>

关于EVC中StretchBlt()的问题

程序如下,将位图贴到客户区:         CBitmap bitmap;         bitmap.LoadBitmap(IDB_BACKGROUND);         BITMAP bmp;         bitmap.GetBitmap(&bmp) ...…

查看全部问答>

求助,vxworks下USB驱动开发

我看了Tornado提供的说明文档,里面讲了USBD的模板和TCD的东西,但是没有讲明白他们的关系(主要是层次上的关系没讲明白). 但是对HCD驱动栈没有说,特别是他的interface. 哪位做过USB驱动的开发,给指点一下他们的关系和开发的模板说明! 主要是想弄 ...…

查看全部问答>

【新手提问】ST_LINK与STM8S103F连接疑问

本人刚刚接触微处理器,问题也许很幼稚,还请多多帮忙。 我现在想利用ST_LINK连接STM8s103F,现请教各位: 1、该芯片最少要接那些脚,还要接其他元器件吗?(最好能贴张接线图) 2、5v电源是否直接接到芯片的VDD和VSS之间? 3、ST_LINK用 ...…

查看全部问答>

STM32超值型系列再添新品——Flash容量扩展至512KB

意法半导体(ST)提升入门级32位微控制器的性能和价值 STM32超值大容量系列微控制器为用户提供高达512 KB闪存和 144引脚封装,支持成本敏感型终端产品升级换代 中国,2010年10月21日 —— 随着设备制造商寻求产品差异化,为产品增加新的 ...…

查看全部问答>

请大家帮忙看看

请问大家一个问题,我现在刚把单片机弄熟了,但我还想学学其他的知识,我是读电子信息工程专业的,为了以后工作需要,想往单片机和嵌入式发展,请问接下来该学习哪些芯片?我现在学习一下stm32,作为从单片机到嵌入式的过渡,觉得怎么样?谢谢!…

查看全部问答>

模块PCB设计时的地线策略

在设计模块的时候,通常会遇到地线策略的问题,这通常又与EMC有关,一般的来说,地线是信号电流流回信号源的地阻抗路径。 我们在设计模块的时候通常是根据整体的设计而确定的,由于汽车系统的线束设计的问题。不可避免的会存在地环路干扰的现象。 ...…

查看全部问答>