基于单片机的双向透明的串口扩展设计方案

嵌入式多参数监护仪系统中一般包括多个独立的硬件采集模块,每个硬件采集模块分别完成对人体的心电、呼吸率、体温、血压和血氧饱和度等生理参数的采集,并通过其串口接收host端的控制信息,定时向host端发送采集数据。
本嵌入式多参数监护仪host端使用at91rm9200处理器,该处理器具有4个通用同步/异步接收/发送器(usart),其中一个是debug串口,但它们都是分时复用的。为了使host端更好地与各采集模块进行通信,必须解决其串口扩展的问题。
目前比较通用的串口扩展方案主要有2种。一种通过硬件实现,使用多串口arm/mcu或专用串口扩展芯片,可供选择的串口扩展芯片有ti公司开发的 16c55x系列串口扩展芯片和国腾公司开发的gm812x系列串口扩展芯片等。ti公司的16c55x系列芯片通过并行口扩展串行口,功能比较强大、通信速度高,但控制复杂,同时价格较高,主要应用于pc机串口扩展。另一种串口扩展方案通过软件实现,但用软件模拟串口存在缺点:(1)采样次数低,一般只能做到2次/bit,这样,数据的正确性就难以保证;(2)不能实现高波特率通信,软件模拟串口一般不能实现高于4 800 b/s的波特率。
不管是采用硬件还是软件方案,大多数串口扩展产品几乎都是单向传输,不够透明化。本文根据参与的多参数监护仪项目的需要,提出一种双向透明的串口扩展设计方案,并通过了实验验证。
1硬件设计
1.1串口扩展模块拓扑图
在设计中,串口扩展模块可以外接4个用户设备,每个用户设备都可以在与host端进行双向数据传输,采用分时复用技术,即在任一时刻,最多仅有一个串口与host端连接,串口扩展模块负责4个通道的切换/选择。双方通过硬件和软件机制进行仲裁。如图1所示。
1.2硬件设计方案
串口扩展模块主要由2部分组成:单片机at89c2051及模拟开关cd4052、双4通道模拟开关。
串口扩展模块拓扑结构图如图2所示,其中虚线框内为串口扩展模块的主要部分。
2 通信协议设计
2.1数据由用户设备发送到host端
由于各模块是分时复用的,为了避免用户设备之间发生竞争,需要at89c2051对4个用户设备通道进行仲裁,本文采用以下方案。
4个用户设备各用一根i/o口线分别与at89c2051的p1.0~p1.3引脚相连,同时还与一个4输入或非门相连,将某根或某几根i/o口线置高电平并经过该4输入或非门来触发中断,通知at89c2051有用户设备请求向host终端发送数据,同时at89c2051进行用户设备号查询。at89c2051收到请求信号后,首先判断 host端与其他用户设备之间的数据发送是否结束,若结束,则根据仲裁机制通过与各用户设备相连的p1.4~p1.7引脚置高给出应答响应信号,同时 at89c2051根据中断查询到的用户设备号对p3.4和p3.5引脚进行设置来控制cd4052模拟开关选通对应通道,用户设备收到应答响应信号后就开始发送数据;若未结束,则屏蔽此次中断,直到数据发送结束才开中断。用户设备数据发送结束时则将通过一个4输入或非门来触发中断,通知at89c2051此次数据发送结束。在响应数据发送请求时会涉及到多个用户设备请求,从而需要at89c2051进行仲裁。仲裁机制如下:心电和血氧模块是50 ms定时发送数据,而血压模块需要host端发来启动测量命令后才向host端发送血压数据,因此需要将血压模块发送数据的请求设置为较高优先级,才能保证血压数据正确及时地发送到host端,而心电和血氧模块设置为低优先级轮流发送。
2.2数据由host端发送到用户设备
为了使host端的数据能够及时准确地发送到各个用户设备,就需要和at89c2051之间定义好通信协议。其协议如下。
at89c2051始终监视host终端发出的信息,一旦收到host终端发出的串口选择命令,如表1所示,立即对p3.4和p3.5引脚进行设置来控制 cd4052模拟开关选通对应通道并控制相应的led灯以作指示。串口选择后, host终端需要根据at89c2051指令执行和模拟开关切换时间延迟一定时间后再开始向对应用户设备发送数据/命令。host端数据发送结束则由接收端的用户设备向at89c2051发送中断结束信号,其结束处理与数据由用户设备发送到host端的结束处理相同。如果同时有用户设备向 at89c2051请求发送数据到host端,则优先响应host端的发送数据/命令请求,即host端的发送数据/命令请求的优先级最高。
本文在设计中将host端的txd引脚连接到at89c2051的rxd引脚,这样就可以通过at89c2051的串口接收中断和host端通信, host端发送数据/命令时首先发送串口选择命令字,其次再发送数据/命令去控制用户设备的数据采集,例如增益大小、是否启动血压测量等命令。
3软件设计
软件设计分为主函数、串口中断服务程序、外部中断0和1服务程序4个部分,如图3所示。
在很多场合需要进行串口扩展以满足系统集成多个串口设备,扩展方法很多,各有优缺点。本文提出的用单片机at89c2051为at91rm9200扩展串口的方案是基于单片机价格低廉、体积小,完全可以替代一般的专用接口芯片,作为真正意义上的可编程接口,实现双向通信,使串口扩展模块变得透明。这种方案使用灵活,与一般接口芯片相比对外部用户设备具有更好的适用性,经实验验证达到了设计目标。将单片机等同于普通接口芯片使用,是一种新思路,具有一定的启迪作用和实际参考价值。

雷军预热今晚小米11发布会 全新MIUI12.5即将首发
锂电池分选机电气控制系统方案
Linux内核模块间通讯方法
详解矢量信号分析的操作理论和测量概念
功耗优化已经成为SoC设计成功与否的关键因素了吗?
基于单片机的双向透明的串口扩展设计方案
如果光刻机是中国芯片的心脏,那么工业软件是大脑
CoWoS产能不足 传台积电启动第三波设备追单
ANADIGICS推出新型功率放大器(PA)AWB7230
电源适配器测试系统设计方案
dfrobotRGB LED模块 5050简介
三相感应电动机的启动与调速
Intel:32nm六核心Xeon已出货10万
传联电、日月光CoWoS封装中介层订单将涨价
linux系统中裸机按键中断的驱动​方法
盘点2018年PCB行业的11大并购案
iphone7或配置A10处理器 采用最新PoP工艺
at89c52引脚图及管脚功能
移动互联网给前端工程师带来了什么
ARM CEO:上网本将占PC市场90%份额