0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

基于USB总线实现主机和医学仪器之间的通信接口设计

电子设计 来源:电子技术应用 作者:马亚全 , 高小榕 2020-04-09 08:04 次阅读

随着医学信息网络化的需要,经常需要将各种医学仪器(如脑电图、心电图等)与主机相连,以便于从这些医学仪器获得所需的各种医学信息。同时,在需要的时侯还可以通过主机对这些医学仪器的操作进行控制。

传统的外设与主机的通讯接口一般是基于PCI总线、ISA总线或者是RS-232C串行总线。PCI总线虽具有高的传输速度(132Mbps),支持“即插即用”功能,但其缺点是插拔麻烦,且扩展槽有限(一般为5~6个)。ISA总线显然存在着同样的问题。RS-232C串行总线虽然连接简单,但其缺点是传输速度慢(56kbps),且主机的串行口数目有限。

USB(Universal Serial Bus,通用串行总线)是由Intel、Microsoft、IBM及NEC等共同制定的微机总线接口规范1。由于USB具有较高的传输速度(USB协议1.1支持的最高传输速度为12Mbps,而USB协议2.0支持的最高传输速度更是高达480Mbps),支持即插即用和热插拔功能,USB设备的连接电缆最长可达5 m,且可通过USB集线器进行层式星形拓扑连接(一台主机最多可连接127个USB设备,且可实现最多5级的拓扑连接),因此其非常适合作为主机和医学仪器之间的通信接口

为便于临床上采集病人的某些生理信号(如心电信号,脑电信号等)23,设计了基于USB总线的医学数据采集设备,其最多支持32个通道的同步数据采集,最高采样率为1kHz,采样精度为16bit,主机的操作系统为Win98。主要完成了四个方面的工作:硬件设计、firmware(固件)设计、设备驱动程序设计以及应用软件的设计。

1、硬件设计

USB数据采集设备的硬件构成见图1。

基于USB总线实现主机和医学仪器之间的通信接口设计

从图1可知,32路模拟输入信号由多路模拟开关控制将其中的某一路信号接入串行A/D(选用B-B公司ADS7809),A/D转换的结果经光电隔离后串行输出到移位寄存器,移位寄存器将此结果转为并行数据并写入FIFO存储器,80C52系统将数据从FIFO存储器中读出并通过USB控制器送到主机。

当前可供选择的USB控制器很多,如朗讯公司的USS820、国家半导体公司的USBN9602。另外,还有将微控制器和USB控制器集成在一起的芯片,如Intel公司的8x930Hx和8x930Ax,其中8x930Hx支持USB集线器功能。在实际开发中选择了朗讯公司的USS820,其主要特点是完全遵循USB协议1.1,支持12Mbps的全速传输,支持四种传输方式,提供8个端点(Endpoint) 且每个端点的传输类型、传输方向均可自由配置。另外,它还为每个端点提供两套FIFO数据缓冲区,总的数据缓冲区大小可达2240字节。

2、firmware设计

此处firmware(固件)是指被固化到89c52 E2PROM中的程序。firmware主要完成两个方面的工作:控制A/D的采样和通过USB控制器与主机通信。由于89C52系统控制A/D采样的工作非常简单,此处不做介绍。详细介绍89C52系统通过USB控制器与主机通信的工作。

因为89C52系统对USB控制器的操作是严格按照USB协议1.1进行的,因此先对USB协议1.1做一简单的介绍。按照USB协议1.1的规定,USB的传输方式分为4种:控制传输(Control transfer),块传输(Bulk transactiONs),中断传输(Interrupt transactions)和等时传输(Isochronous transactions)。控制传输主要用来完成主机对设备的各种控制操作(如获取设备的设备描述符,设置设备的USB地址等,也可以通过控制传输来定义自己对设备的控制操作,如设置采样参数、开始或停止采样等);块传输主要用来完成主机和设备之间的大批量数据传输,由于块传输在硬件级上对传输数据进行错误检测(若发生错误,它支持“重传”功能),因此它能保证数据传输的可靠性,块传输支持两个方向的数据传输(即主机到设备和设备到主机);中断传输用来完成设备到主机的少量数据传输,它只支持设备到主机方向的数据传输(中断传输跟实际的“中断”概念没有任何联系);等时传输主要用来完成主机和设备之间连续、实时数据的传输(如语音信号),同步传输不对传输数据进行错误检测,它主要保证数据的连续传输。另外,需要注意的是所有的USB传输事务均由主机启动,即USB总线采取主从式结构(master to slave)。

在实际开发中使用了两种传输方式:控制传输和块传输。控制传输用来实现位于主机上的USB总线驱动程序(USBD.SYS)以及编写的功能驱动程序对设备的各种控制操作,而块传输用来完成将采集数据从设备传送到主机。

USB控制器的工作原理可以简单地描述为:当USB控制器从USB总线检测到主机启动的某一传输请求时,USB控制器通过中断方式将此请求通知89C52系统。89C52系统通过访问USB控制器的状态寄存器和数据寄存器获得与此次传输有关的各种参数,并根据具体传输参数,对USB控制器的控制寄存器和数据寄存器进行相应的操作,以完成主机的传输请求。

3、设备驱动程序设计

USB设备驱动程序的设计是基于WDM(Windows Driver Model,Windows驱动程序模型)的4。WDM采用分层驱动程序模型,对于USB设备来说,可分为USB总线驱动程序和USB功能驱动程序(见图2)。

USB总线驱动程序由操作系统提供,它位于USB功能驱动程序的下面,负责与实际的硬件打交道,实现烦琐的低层通信。USB功能驱动程序由设备开发者编写,位于USB总线驱动程序的上面,不与实际的硬件打交道,而是通过向USB总线驱动程序发送包含URB(USB Request Block,USB请求块)的IRP(I/O Request Packet,I/O请求包),来实现对USB设备信息的发送或接收。采用这种分层驱动程序的设计方法有两个优点:(1)多个USB设备可以通过USB总线驱动程序来协调它们的工作;(2)编写分层驱动程序较之编写单一驱动程序相对简单,且可以节省内存和资源,不易出错。 USB设备驱动程序的工作原理可以通过图2简单描述。

若应用程序想对设备进行I/O操作,它便使用Windows API 函数(如DeviceloControl 函数)对WIN32子系统进行WIN32调用。此调用由I/O系统服务接收并通知I/O管理器,I/O管理器将此请求构造成一个合适的I/O请求包(I/O Request Packet,IRP)并把它传递给USB功能驱动程序。USB功能驱动程序接收到这个IRP以后,根据IRP中包含的具体操作代码,构造相应的USB请求块并把此URB放到一个新的IRP中,然后把此IRP传递到USB总线驱动程序,USB总线驱动程序根据IRP中所含的URB执行相应的操作(如从USB设备读取数据),并把操作结果通过IRP返还给USB功能驱动程序。USB功能驱动程序接收到此IRP后,将操作结果通过IRP返还给I/O管理器,最后I/O管理器将此IRP中操作结果返还给应用程序,至此应用程序对USB设备的一次I/O操作完成。

USB功能驱动程序除负责处理应用程序的I/O请求外,还要处理PnP管理器发送给它的PnP请求(如设备启动请求IRP_MN_START_DEVICE,设备删除请求IRP_MN_REMOVE_DEVICE等)。通过对这些PnP请求的处理,USB功能驱动程序可支持设备的热插拔和即插即用功能。

驱动程序的入口函数是DriverEntry( ),所有对各种IRP的处理例程都在此入口函数中做出定义。

开发USB设备驱动程序的工具有Microsoft公司的Win98DDK,Compuware公司的Numega DriverStudio等。笔者在实际开发中使用了Win98DDK。

4、 应用软件的设计

用户态的软件设计由两个部分组成:动态链接库和应用程序。动态连接库负责与内核态的USB功能驱动程序通信并接受应用程序的各种操作请求,而应用程序负责对所采集的数据进行实时显示、分析和存盘。

动态链接库的工作原理如下:当它收到应用程序开始采样的请求后,便创建两个线程:采样线程和显示存盘线程。采样线程负责将采集数据写到应用程序提交的内存;而显示存盘线程由多媒体定时器控制(每隔一段时间多媒体定时器就调用一次此线程),此线程负责给应用程序发送显示和存盘消息。当应用程序接收到此消息后,便从它提交的内存中读取数据并显示和存盘。此处需要注意的是采样线程和显示存盘线程在读写应用程序提交的内存时要保持同步(如当采样线程正在向内存进行写操作时显示存盘线程就不能对此段内存进行读操作,否则就有可能导致读写错误)。保持线程同步的方法很多,如互斥量(Mutex)、信号量(Semiphore)和事件(Event)。此处使用了互斥量。

USB总线的特点使其非常适合于作为医疗仪器与主机之间的通讯接口,实现主机和医学仪器之间的简单、快速和可靠的连接。

基于USB总线的医学数据采集设备,在实际应用中取得了良好的效果。同时,它也为数据采集提供了一种新颖的、方便的和可靠的解决方案

责任编辑:gt


声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • usb
    usb
    +关注

    关注

    60

    文章

    7945

    浏览量

    264593
  • 数据采集
    +关注

    关注

    38

    文章

    6090

    浏览量

    113641
  • 总线
    +关注

    关注

    10

    文章

    2881

    浏览量

    88075
收藏 人收藏

    评论

    相关推荐

    USB主机:硬件与软件

    )与设备的功能部件(function)之间通信而必须的主机接口(host interface)。在本章中所涉及的具体实现部份并不是必要的,
    发表于 06-17 10:36

    USB设备与USB主机作用构成

    主机USB设备之间的数据流;•收集状态和动作信息;•给连接的USB设备供电。USB主机可以分
    发表于 11-08 09:23

    如何实现主机和从机之间通信

    如何实现主机和从机之间通信?DHT11单总线信号特性是什么?DHT11编码步骤是怎样的?
    发表于 01-27 07:09

    ARM手持式仪器USB接口的简单实现

    为了实现ARM手持式仪器与PC机之间的高速通信,基于ARM存储器映像技术,采用CH375接口芯片,设计了
    发表于 03-17 10:48 16次下载

    USB主机硬件与软件

     USB的互连支持数据在USB主机USB设备之间的流动。这一章主要讲述为了简化主机
    发表于 11-06 11:54 67次下载

    基于USB总线的数据采集设备的设计与实现

    基于USB总线的数据采集设备的设计与实现 摘要:通用串行总线USB)作为一种崭新的微机总线
    发表于 03-03 19:24 781次阅读
    基于<b class='flag-5'>USB</b><b class='flag-5'>总线</b>的数据采集设备的设计与<b class='flag-5'>实现</b>

    ARM手持式仪器USB接口实现

    为了实现ARM手持式仪器与PC机之间的高速通信,基于ARM存储器映像技术,采用CH375接口芯片,设计了
    发表于 05-23 14:58 51次下载
    ARM手持式<b class='flag-5'>仪器</b>中<b class='flag-5'>USB</b><b class='flag-5'>接口实现</b>

    基于TMS320VC33与主机通信USB接口设计

    基于TMS320VC33与主机通信USB接口设计
    发表于 08-31 10:16 6次下载
    基于TMS320VC33与<b class='flag-5'>主机</b><b class='flag-5'>通信</b>的<b class='flag-5'>USB</b><b class='flag-5'>接口</b>设计

    采用CAN总线实现群控主机和各电梯之间通信设计

    ;而CAN总线在电梯群控系统中却体现出更多的优势:CAN总线通信与RS485通信相比抗干扰能力更好;可连接较多的通信节点;
    的头像 发表于 10-30 07:51 5896次阅读
    采用CAN<b class='flag-5'>总线</b><b class='flag-5'>实现</b>群控<b class='flag-5'>主机</b>和各电梯<b class='flag-5'>之间</b>的<b class='flag-5'>通信</b>设计

    如何使用单片机实现USB主机接口

    。利用SCSI 传输命令集,通过BULK-IN和 BULK-OUT端点实现主机与U盘设备之间的数据通讯。实验和应用结果表明,该方案具有控制方便、传输速度快、存储数据稳定可靠等优点。
    发表于 07-12 17:39 5次下载
    如何使用单片机<b class='flag-5'>实现</b><b class='flag-5'>USB</b><b class='flag-5'>主机</b><b class='flag-5'>接口</b>

    主机识别USB设备原理简介

    USB(UniversalSerialBus),其中文为通用串行总线,是一个外部总线标准,也是一种输入输出接口的技术规范,被广泛地应用于个人计算机和计算机周边配套的
    的头像 发表于 05-05 17:28 1.3w次阅读
    <b class='flag-5'>主机</b>识别<b class='flag-5'>USB</b>设备原理简介

    什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别?

    什么是USB HOST、USB Slave和USB OTG?它们之间有什么区别? USB(通用串行总线
    的头像 发表于 02-02 15:32 1.3w次阅读

    USB嵌入式主机堆栈

    USB标准下,USB设备之间不能直接通信。它们只能与控制一个或多个设备通信总线
    发表于 05-03 09:13 188次阅读
    <b class='flag-5'>USB</b>嵌入式<b class='flag-5'>主机</b>堆栈

    usb主机模式和设备模式的区别

    USB(通用串行总线)是一种广泛使用的接口技术,用于连接计算机和外部设备。USB主机模式和设备模式是US
    的头像 发表于 09-25 09:06 821次阅读

    usb主机控制器位于ahp总线上吗

    关于“USB主机控制器是否位于AHP总线上”的问题,首先需要明确几个概念: USB主机控制器 :在USB
    的头像 发表于 09-25 09:20 302次阅读