0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于USB總線實(shí)現(xiàn)主機(jī)和醫(yī)學(xué)儀器之間的通信接口設(shè)計(jì)

電子設(shè)計(jì) ? 來源:電子技術(shù)應(yīng)用 ? 作者:馬亞全 , 高小榕 ? 2020-04-09 08:04 ? 次閱讀

隨著醫(yī)學(xué)信息網(wǎng)絡(luò)化的需要,經(jīng)常需要將各種醫(yī)學(xué)儀器(如腦電圖、心電圖等)與主機(jī)相連,以便于從這些醫(yī)學(xué)儀器獲得所需的各種醫(yī)學(xué)信息。同時(shí),在需要的時(shí)侯還可以通過主機(jī)對(duì)這些醫(yī)學(xué)儀器的操作進(jìn)行控制。

傳統(tǒng)的外設(shè)與主機(jī)的通訊接口一般是基于PCI總線、ISA總線或者是RS-232C串行總線。PCI總線雖具有高的傳輸速度(132Mbps),支持“即插即用”功能,但其缺點(diǎn)是插拔麻煩,且擴(kuò)展槽有限(一般為5~6個(gè))。ISA總線顯然存在著同樣的問題。RS-232C串行總線雖然連接簡(jiǎn)單,但其缺點(diǎn)是傳輸速度慢(56kbps),且主機(jī)的串行口數(shù)目有限。

USB(Universal Serial Bus,通用串行總線)是由Intel、Microsoft、IBM及NEC等共同制定的微機(jī)總線接口規(guī)范1。由于USB具有較高的傳輸速度(USB協(xié)議1.1支持的最高傳輸速度為12Mbps,而USB協(xié)議2.0支持的最高傳輸速度更是高達(dá)480Mbps),支持即插即用和熱插拔功能,USB設(shè)備的連接電纜最長(zhǎng)可達(dá)5 m,且可通過USB集線器進(jìn)行層式星形拓?fù)溥B接(一臺(tái)主機(jī)最多可連接127個(gè)USB設(shè)備,且可實(shí)現(xiàn)最多5級(jí)的拓?fù)溥B接),因此其非常適合作為主機(jī)和醫(yī)學(xué)儀器之間的通信接口。

為便于臨床上采集病人的某些生理信號(hào)(如心電信號(hào),腦電信號(hào)等)23,設(shè)計(jì)了基于USB總線的醫(yī)學(xué)數(shù)據(jù)采集設(shè)備,其最多支持32個(gè)通道的同步數(shù)據(jù)采集,最高采樣率為1kHz,采樣精度為16bit,主機(jī)的操作系統(tǒng)為Win98。主要完成了四個(gè)方面的工作:硬件設(shè)計(jì)、firmware(固件)設(shè)計(jì)、設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)以及應(yīng)用軟件的設(shè)計(jì)。

1、硬件設(shè)計(jì)

USB數(shù)據(jù)采集設(shè)備的硬件構(gòu)成見圖1。

基于USB總線實(shí)現(xiàn)主機(jī)和醫(yī)學(xué)儀器之間的通信接口設(shè)計(jì)

從圖1可知,32路模擬輸入信號(hào)由多路模擬開關(guān)控制將其中的某一路信號(hào)接入串行A/D(選用B-B公司ADS7809),A/D轉(zhuǎn)換的結(jié)果經(jīng)光電隔離后串行輸出到移位寄存器,移位寄存器將此結(jié)果轉(zhuǎn)為并行數(shù)據(jù)并寫入FIFO存儲(chǔ)器,80C52系統(tǒng)將數(shù)據(jù)從FIFO存儲(chǔ)器中讀出并通過USB控制器送到主機(jī)。

當(dāng)前可供選擇的USB控制器很多,如朗訊公司的USS820、國家半導(dǎo)體公司的USBN9602。另外,還有將微控制器和USB控制器集成在一起的芯片,如Intel公司的8x930Hx和8x930Ax,其中8x930Hx支持USB集線器功能。在實(shí)際開發(fā)中選擇了朗訊公司的USS820,其主要特點(diǎn)是完全遵循USB協(xié)議1.1,支持12Mbps的全速傳輸,支持四種傳輸方式,提供8個(gè)端點(diǎn)(Endpoint) 且每個(gè)端點(diǎn)的傳輸類型、傳輸方向均可自由配置。另外,它還為每個(gè)端點(diǎn)提供兩套FIFO數(shù)據(jù)緩沖區(qū),總的數(shù)據(jù)緩沖區(qū)大小可達(dá)2240字節(jié)。

2、firmware設(shè)計(jì)

此處firmware(固件)是指被固化到89c52 E2PROM中的程序。firmware主要完成兩個(gè)方面的工作:控制A/D的采樣和通過USB控制器與主機(jī)通信。由于89C52系統(tǒng)控制A/D采樣的工作非常簡(jiǎn)單,此處不做介紹。詳細(xì)介紹89C52系統(tǒng)通過USB控制器與主機(jī)通信的工作。

因?yàn)?9C52系統(tǒng)對(duì)USB控制器的操作是嚴(yán)格按照USB協(xié)議1.1進(jìn)行的,因此先對(duì)USB協(xié)議1.1做一簡(jiǎn)單的介紹。按照USB協(xié)議1.1的規(guī)定,USB的傳輸方式分為4種:控制傳輸(Control transfer),塊傳輸(Bulk transactiONs),中斷傳輸(Interrupt transactions)和等時(shí)傳輸(Isochronous transactions)??刂苽鬏斨饕脕硗瓿芍鳈C(jī)對(duì)設(shè)備的各種控制操作(如獲取設(shè)備的設(shè)備描述符,設(shè)置設(shè)備的USB地址等,也可以通過控制傳輸來定義自己對(duì)設(shè)備的控制操作,如設(shè)置采樣參數(shù)、開始或停止采樣等);塊傳輸主要用來完成主機(jī)和設(shè)備之間的大批量數(shù)據(jù)傳輸,由于塊傳輸在硬件級(jí)上對(duì)傳輸數(shù)據(jù)進(jìn)行錯(cuò)誤檢測(cè)(若發(fā)生錯(cuò)誤,它支持“重傳”功能),因此它能保證數(shù)據(jù)傳輸?shù)目煽啃?,塊傳輸支持兩個(gè)方向的數(shù)據(jù)傳輸(即主機(jī)到設(shè)備和設(shè)備到主機(jī));中斷傳輸用來完成設(shè)備到主機(jī)的少量數(shù)據(jù)傳輸,它只支持設(shè)備到主機(jī)方向的數(shù)據(jù)傳輸(中斷傳輸跟實(shí)際的“中斷”概念沒有任何聯(lián)系);等時(shí)傳輸主要用來完成主機(jī)和設(shè)備之間連續(xù)、實(shí)時(shí)數(shù)據(jù)的傳輸(如語音信號(hào)),同步傳輸不對(duì)傳輸數(shù)據(jù)進(jìn)行錯(cuò)誤檢測(cè),它主要保證數(shù)據(jù)的連續(xù)傳輸。另外,需要注意的是所有的USB傳輸事務(wù)均由主機(jī)啟動(dòng),即USB總線采取主從式結(jié)構(gòu)(master to slave)。

在實(shí)際開發(fā)中使用了兩種傳輸方式:控制傳輸和塊傳輸??刂苽鬏斢脕韺?shí)現(xiàn)位于主機(jī)上的USB總線驅(qū)動(dòng)程序(USBD.SYS)以及編寫的功能驅(qū)動(dòng)程序?qū)υO(shè)備的各種控制操作,而塊傳輸用來完成將采集數(shù)據(jù)從設(shè)備傳送到主機(jī)。

USB控制器的工作原理可以簡(jiǎn)單地描述為:當(dāng)USB控制器從USB總線檢測(cè)到主機(jī)啟動(dòng)的某一傳輸請(qǐng)求時(shí),USB控制器通過中斷方式將此請(qǐng)求通知89C52系統(tǒng)。89C52系統(tǒng)通過訪問USB控制器的狀態(tài)寄存器和數(shù)據(jù)寄存器獲得與此次傳輸有關(guān)的各種參數(shù),并根據(jù)具體傳輸參數(shù),對(duì)USB控制器的控制寄存器和數(shù)據(jù)寄存器進(jìn)行相應(yīng)的操作,以完成主機(jī)的傳輸請(qǐng)求。

3、設(shè)備驅(qū)動(dòng)程序設(shè)計(jì)

USB設(shè)備驅(qū)動(dòng)程序的設(shè)計(jì)是基于WDM(Windows Driver Model,Windows驅(qū)動(dòng)程序模型)的4。WDM采用分層驅(qū)動(dòng)程序模型,對(duì)于USB設(shè)備來說,可分為USB總線驅(qū)動(dòng)程序和USB功能驅(qū)動(dòng)程序(見圖2)。

USB總線驅(qū)動(dòng)程序由操作系統(tǒng)提供,它位于USB功能驅(qū)動(dòng)程序的下面,負(fù)責(zé)與實(shí)際的硬件打交道,實(shí)現(xiàn)煩瑣的低層通信。USB功能驅(qū)動(dòng)程序由設(shè)備開發(fā)者編寫,位于USB總線驅(qū)動(dòng)程序的上面,不與實(shí)際的硬件打交道,而是通過向USB總線驅(qū)動(dòng)程序發(fā)送包含URB(USB Request Block,USB請(qǐng)求塊)的IRP(I/O Request Packet,I/O請(qǐng)求包),來實(shí)現(xiàn)對(duì)USB設(shè)備信息的發(fā)送或接收。采用這種分層驅(qū)動(dòng)程序的設(shè)計(jì)方法有兩個(gè)優(yōu)點(diǎn):(1)多個(gè)USB設(shè)備可以通過USB總線驅(qū)動(dòng)程序來協(xié)調(diào)它們的工作;(2)編寫分層驅(qū)動(dòng)程序較之編寫單一驅(qū)動(dòng)程序相對(duì)簡(jiǎn)單,且可以節(jié)省內(nèi)存和資源,不易出錯(cuò)。 USB設(shè)備驅(qū)動(dòng)程序的工作原理可以通過圖2簡(jiǎn)單描述。

若應(yīng)用程序想對(duì)設(shè)備進(jìn)行I/O操作,它便使用Windows API 函數(shù)(如DeviceloControl 函數(shù))對(duì)WIN32子系統(tǒng)進(jìn)行WIN32調(diào)用。此調(diào)用由I/O系統(tǒng)服務(wù)接收并通知I/O管理器,I/O管理器將此請(qǐng)求構(gòu)造成一個(gè)合適的I/O請(qǐng)求包(I/O Request Packet,IRP)并把它傳遞給USB功能驅(qū)動(dòng)程序。USB功能驅(qū)動(dòng)程序接收到這個(gè)IRP以后,根據(jù)IRP中包含的具體操作代碼,構(gòu)造相應(yīng)的USB請(qǐng)求塊并把此URB放到一個(gè)新的IRP中,然后把此IRP傳遞到USB總線驅(qū)動(dòng)程序,USB總線驅(qū)動(dòng)程序根據(jù)IRP中所含的URB執(zhí)行相應(yīng)的操作(如從USB設(shè)備讀取數(shù)據(jù)),并把操作結(jié)果通過IRP返還給USB功能驅(qū)動(dòng)程序。USB功能驅(qū)動(dòng)程序接收到此IRP后,將操作結(jié)果通過IRP返還給I/O管理器,最后I/O管理器將此IRP中操作結(jié)果返還給應(yīng)用程序,至此應(yīng)用程序?qū)SB設(shè)備的一次I/O操作完成。

USB功能驅(qū)動(dòng)程序除負(fù)責(zé)處理應(yīng)用程序的I/O請(qǐng)求外,還要處理PnP管理器發(fā)送給它的PnP請(qǐng)求(如設(shè)備啟動(dòng)請(qǐng)求IRP_MN_START_DEVICE,設(shè)備刪除請(qǐng)求IRP_MN_REMOVE_DEVICE等)。通過對(duì)這些PnP請(qǐng)求的處理,USB功能驅(qū)動(dòng)程序可支持設(shè)備的熱插拔和即插即用功能。

驅(qū)動(dòng)程序的入口函數(shù)是DriverEntry( ),所有對(duì)各種IRP的處理例程都在此入口函數(shù)中做出定義。

開發(fā)USB設(shè)備驅(qū)動(dòng)程序的工具有Microsoft公司的Win98DDK,Compuware公司的Numega DriverStudio等。筆者在實(shí)際開發(fā)中使用了Win98DDK。

4、 應(yīng)用軟件的設(shè)計(jì)

用戶態(tài)的軟件設(shè)計(jì)由兩個(gè)部分組成:動(dòng)態(tài)鏈接庫和應(yīng)用程序。動(dòng)態(tài)連接庫負(fù)責(zé)與內(nèi)核態(tài)的USB功能驅(qū)動(dòng)程序通信并接受應(yīng)用程序的各種操作請(qǐng)求,而應(yīng)用程序負(fù)責(zé)對(duì)所采集的數(shù)據(jù)進(jìn)行實(shí)時(shí)顯示、分析和存盤。

動(dòng)態(tài)鏈接庫的工作原理如下:當(dāng)它收到應(yīng)用程序開始采樣的請(qǐng)求后,便創(chuàng)建兩個(gè)線程:采樣線程和顯示存盤線程。采樣線程負(fù)責(zé)將采集數(shù)據(jù)寫到應(yīng)用程序提交的內(nèi)存;而顯示存盤線程由多媒體定時(shí)器控制(每隔一段時(shí)間多媒體定時(shí)器就調(diào)用一次此線程),此線程負(fù)責(zé)給應(yīng)用程序發(fā)送顯示和存盤消息。當(dāng)應(yīng)用程序接收到此消息后,便從它提交的內(nèi)存中讀取數(shù)據(jù)并顯示和存盤。此處需要注意的是采樣線程和顯示存盤線程在讀寫應(yīng)用程序提交的內(nèi)存時(shí)要保持同步(如當(dāng)采樣線程正在向內(nèi)存進(jìn)行寫操作時(shí)顯示存盤線程就不能對(duì)此段內(nèi)存進(jìn)行讀操作,否則就有可能導(dǎo)致讀寫錯(cuò)誤)。保持線程同步的方法很多,如互斥量(Mutex)、信號(hào)量(Semiphore)和事件(Event)。此處使用了互斥量。

USB總線的特點(diǎn)使其非常適合于作為醫(yī)療儀器與主機(jī)之間的通訊接口,實(shí)現(xiàn)主機(jī)和醫(yī)學(xué)儀器之間的簡(jiǎn)單、快速和可靠的連接。

基于USB總線的醫(yī)學(xué)數(shù)據(jù)采集設(shè)備,在實(shí)際應(yīng)用中取得了良好的效果。同時(shí),它也為數(shù)據(jù)采集提供了一種新穎的、方便的和可靠的解決方案

責(zé)任編輯:gt


聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • usb
    usb
    +關(guān)注

    關(guān)注

    60

    文章

    7802

    瀏覽量

    262584
  • 數(shù)據(jù)采集
    +關(guān)注

    關(guān)注

    38

    文章

    5558

    瀏覽量

    113150
  • 總線
    +關(guān)注

    關(guān)注

    10

    文章

    2827

    瀏覽量

    87735
收藏 人收藏

    評(píng)論

    相關(guān)推薦

    USB主機(jī):硬件與軟件

    )與設(shè)備的功能部件(function)之間通信而必須的主機(jī)接口(host interface)。在本章中所涉及的具體實(shí)現(xiàn)部份并不是必要的,
    發(fā)表于 06-17 10:36

    USB設(shè)備與USB主機(jī)作用構(gòu)成

    主機(jī)USB設(shè)備之間的數(shù)據(jù)流;?收集狀態(tài)和動(dòng)作信息;?給連接的USB設(shè)備供電。USB主機(jī)可以分
    發(fā)表于 11-08 09:23

    如何實(shí)現(xiàn)主機(jī)和從機(jī)之間通信?

    如何實(shí)現(xiàn)主機(jī)和從機(jī)之間通信?DHT11單總線信號(hào)特性是什么?DHT11編碼步驟是怎樣的?
    發(fā)表于 01-27 07:09

    ARM手持式儀器USB接口的簡(jiǎn)單實(shí)現(xiàn)

    為了實(shí)現(xiàn)ARM手持式儀器與PC機(jī)之間的高速通信,基于ARM存儲(chǔ)器映像技術(shù),采用CH375接口芯片,設(shè)計(jì)了
    發(fā)表于 03-17 10:48 ?16次下載

    USB主機(jī)硬件與軟件

     USB的互連支持?jǐn)?shù)據(jù)在USB主機(jī)USB設(shè)備之間的流動(dòng)。這一章主要講述為了簡(jiǎn)化主機(jī)
    發(fā)表于 11-06 11:54 ?67次下載

    基于USB總線的數(shù)據(jù)采集設(shè)備的設(shè)計(jì)與實(shí)現(xiàn)

    基于USB總線的數(shù)據(jù)采集設(shè)備的設(shè)計(jì)與實(shí)現(xiàn) 摘要:通用串行總線USB)作為一種嶄新的微機(jī)總線
    發(fā)表于 03-03 19:24 ?747次閱讀
    基于<b class='flag-5'>USB</b><b class='flag-5'>總線</b>的數(shù)據(jù)采集設(shè)備的設(shè)計(jì)與<b class='flag-5'>實(shí)現(xiàn)</b>

    ARM手持式儀器USB接口實(shí)現(xiàn)

    為了實(shí)現(xiàn)ARM手持式儀器與PC機(jī)之間的高速通信,基于ARM存儲(chǔ)器映像技術(shù),采用CH375接口芯片,設(shè)計(jì)了
    發(fā)表于 05-23 14:58 ?51次下載
    ARM手持式<b class='flag-5'>儀器</b>中<b class='flag-5'>USB</b><b class='flag-5'>接口實(shí)現(xiàn)</b>

    基于TMS320VC33與主機(jī)通信USB接口設(shè)計(jì)

    基于TMS320VC33與主機(jī)通信USB接口設(shè)計(jì)
    發(fā)表于 08-31 10:16 ?6次下載
    基于TMS320VC33與<b class='flag-5'>主機(jī)</b><b class='flag-5'>通信</b>的<b class='flag-5'>USB</b><b class='flag-5'>接口</b>設(shè)計(jì)

    采用CAN總線實(shí)現(xiàn)群控主機(jī)和各電梯之間通信設(shè)計(jì)

    ;而CAN總線在電梯群控系統(tǒng)中卻體現(xiàn)出更多的優(yōu)勢(shì):CAN總線通信與RS485通信相比抗干擾能力更好;可連接較多的通信節(jié)點(diǎn);
    的頭像 發(fā)表于 10-30 07:51 ?5538次閱讀
    采用CAN<b class='flag-5'>總線</b><b class='flag-5'>實(shí)現(xiàn)</b>群控<b class='flag-5'>主機(jī)</b>和各電梯<b class='flag-5'>之間</b>的<b class='flag-5'>通信</b>設(shè)計(jì)

    如何使用單片機(jī)實(shí)現(xiàn)USB主機(jī)接口

    。利用SCSI 傳輸命令集,通過BULK-IN和 BULK-OUT端點(diǎn)實(shí)現(xiàn)主機(jī)與U盤設(shè)備之間的數(shù)據(jù)通訊。實(shí)驗(yàn)和應(yīng)用結(jié)果表明,該方案具有控制方便、傳輸速度快、存儲(chǔ)數(shù)據(jù)穩(wěn)定可靠等優(yōu)點(diǎn)。
    發(fā)表于 07-12 17:39 ?5次下載
    如何使用單片機(jī)<b class='flag-5'>實(shí)現(xiàn)</b><b class='flag-5'>USB</b><b class='flag-5'>主機(jī)</b><b class='flag-5'>接口</b>

    主機(jī)識(shí)別USB設(shè)備原理簡(jiǎn)介

    USB(UniversalSerialBus),其中文為通用串行總線,是一個(gè)外部總線標(biāo)準(zhǔn),也是一種輸入輸出接口的技術(shù)規(guī)范,被廣泛地應(yīng)用于個(gè)人計(jì)算機(jī)和計(jì)算機(jī)周邊配套的
    的頭像 發(fā)表于 05-05 17:28 ?1.2w次閱讀
    <b class='flag-5'>主機(jī)</b>識(shí)別<b class='flag-5'>USB</b>設(shè)備原理簡(jiǎn)介

    什么是USB HOST、USB Slave和USB OTG?它們之間有什么區(qū)別?

    什么是USB HOST、USB Slave和USB OTG?它們之間有什么區(qū)別? USB(通用串行總線
    的頭像 發(fā)表于 02-02 15:32 ?9603次閱讀

    USB嵌入式主機(jī)堆棧

    USB標(biāo)準(zhǔn)下,USB設(shè)備之間不能直接通信。它們只能與控制一個(gè)或多個(gè)設(shè)備通信總線
    發(fā)表于 05-03 09:13 ?142次閱讀
    <b class='flag-5'>USB</b>嵌入式<b class='flag-5'>主機(jī)</b>堆棧

    usb主機(jī)模式和設(shè)備模式的區(qū)別

    USB(通用串行總線)是一種廣泛使用的接口技術(shù),用于連接計(jì)算機(jī)和外部設(shè)備。USB主機(jī)模式和設(shè)備模式是US
    的頭像 發(fā)表于 09-25 09:06 ?70次閱讀

    usb主機(jī)控制器位于ahp總線上嗎

    關(guān)于“USB主機(jī)控制器是否位于AHP總線上”的問題,首先需要明確幾個(gè)概念: USB主機(jī)控制器 :在USB
    的頭像 發(fā)表于 09-25 09:20 ?77次閱讀