《電子技術(shù)應(yīng)用》
您所在的位置:首頁 > 其他 > 業(yè)界動態(tài) > 基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計

基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計

2008-09-22
作者:蘭文武 付桂翠 高澤溪 高

??? 摘? 要: 以自行開發(fā)的基于USB接口的數(shù)據(jù)采集系統(tǒng)為例,介紹了USB接口的硬件和軟件開發(fā)過程。?

????關(guān)鍵詞: USB? 數(shù)據(jù)采集? PDIUSBD12

?

1? USB協(xié)議和芯片選擇?

??? 理解好USB協(xié)議是USB系統(tǒng)開發(fā)的第一步。USB協(xié)議版本包括1.0、1.1和2.0,USB OTG是對2.0版本協(xié)議的補充。雖然USB協(xié)議內(nèi)容繁多且復(fù)雜,然而,對USB開發(fā)影響較大的卻只是少數(shù)部分,以下對協(xié)議版本1.1[1]中這些部分進(jìn)行介紹。?

1.1 USB協(xié)議?

??? 一般,每個USB設(shè)備由一個或多個配置(Configuration)控制其行為。使用多配置原因是對操作系統(tǒng)的支持;一個配置由接口(Interface)組成;接口則是由管道(Pipe)組成;管道與USB設(shè)備的端點(Endpoint)對應(yīng),一個端點可以配置為輸入輸出兩個管道。在固件" title="固件">固件編程中,USB設(shè)備、配置、接口和管道都用描述符報告其屬性。?

??? 圖1為USB多層次通信模型。端點0默認(rèn)配置為控制管道,用來完成所規(guī)定的設(shè)備請求(USB協(xié)議第九章)。其它端點可配置為數(shù)據(jù)管道。對開發(fā)而言,主要的大數(shù)據(jù)傳輸都是通過數(shù)據(jù)管道完成的[2]。?

?

?

??? USB傳輸類型包括批量傳輸、等時傳輸、中斷傳輸和控制傳輸,每種傳輸類型的傳輸速度" title="傳輸速度">傳輸速度、可靠性以及應(yīng)用范圍都不同[3]。控制傳輸可靠性是最高的,但速度最慢;等時傳輸速度快,滿足實時性,但可靠性低。在具體應(yīng)用中,端點傳輸類型可根據(jù)傳輸速度和可靠性選擇。?

??? 在USB通信協(xié)議中,主機取得絕對主動權(quán)利,設(shè)備只能是“聽命令行事”,通過一定的命令格式(設(shè)備請求)完成通信。USB設(shè)備請求包括標(biāo)準(zhǔn)請求、廠商請求和設(shè)備類請求。設(shè)備的枚舉是標(biāo)準(zhǔn)請求命令完成的;廠商請求是用戶定義的請求;設(shè)備類請求是特定的USB設(shè)備類發(fā)出的請求,例如海量儲存類、打印機類和HID(人機接口)類。固件編程中設(shè)備請求必須遵循一定的格式,包括請求類型、設(shè)備請求、值、索引和長度。?

1.2 USB接口芯片" title="接口芯片">接口芯片選擇?

??? USB接口芯片的類型有:?

??? (1)按傳輸速度的高低:低速(1.5Mbps)和全速(12Mbps)可選USB1.1接口芯片,例如Philips公司的PDIUSBD12和Cypress公司的EZ-USB2100系列;高速(480Mbps)可選USB2.0接口芯片,例如Philips公司的ISP1581和Cypress公司的CY7C68013。?

??? (2)是否帶MCU(微控制器):一般Philips公司的都不帶MCU,Cypress公司大多都帶,例如AN2131。?

??? (3)是否帶主控器功能:不需要主機參與,主從設(shè)備間可進(jìn)行數(shù)據(jù)傳輸,芯片有Philips公司的ISP1301和Cypress公司的SL811HS等。?

??? 還有專門用途USB芯片,例如閃存專用芯片IC1114。工程中用戶可根據(jù)自己的需求選擇一款性價比高的芯片。另外可用開發(fā)資源也是要考慮的重要方面,例如開發(fā)板和芯片廠商提供的網(wǎng)上資源,可大大降低開發(fā)的難度。?

2 基于USB接口的數(shù)據(jù)采集系統(tǒng)的設(shè)計?

2.1 系統(tǒng)簡介?

??? 該系統(tǒng)能夠?qū)崿F(xiàn)16路溫度數(shù)據(jù)自動采集,系統(tǒng)的組成框圖如圖2所示。主要包括8個組成部分:中央處理器選用AT89C52芯片,完成各部分控制功能和USB傳輸協(xié)議;實時時鐘記錄當(dāng)前測量溫度的時間;溫度傳感器和接口電路主要完成溫度采集,并讀入MCU處理;復(fù)位電路完成對MCU的上電復(fù)位和電源電壓監(jiān)視;看門狗電路用來監(jiān)視MCU是否工作;存儲電路主要存儲采集到的溫度數(shù)據(jù)以及采集的實時時間;電源電路主要為各部分提供要求的電源;外設(shè)與主機間的通信電路采用USB接口。?

?

?

2.2 接口芯片選擇?

??? 接口電路采用Philips公司的PDIUSBD12[4](以下簡稱為D12)芯片。主要因為D12芯片信息、開發(fā)資源豐富,具有較高的性價比。?

??? D12芯片的主要特點包括:?

??? ·符合USB1.1版本規(guī)范;?

??? ·可與任何外部微控制器/微處理器實現(xiàn)高速并行接口(2MB/s);?

??? ·采用GoodLink技術(shù)的連接指示器,在通信時使LED閃爍;?

??? ·主端點的雙緩沖配置增加了數(shù)據(jù)吞吐量并輕松實現(xiàn)實時數(shù)據(jù)傳輸;?

??? ·在批量和等時模式下均可實現(xiàn)1MB/s的數(shù)據(jù)傳輸率;?

??? ·完全自治的直接內(nèi)存存取DMA操作。?

2.3 接口硬件設(shè)計?

??? 由D12接口組成的通信電路原理如圖3所示。關(guān)于D12的各引腳說明見參考文獻(xiàn)[4]。多路地址/數(shù)據(jù)總線ALE接單片機的ALE腳,這樣使用MOVX指令可以與D12接口,對D12操作就象對RAM操作一樣,此時忽略A0(命令口和數(shù)據(jù)口地址線)的輸入。因為沒有使用DMA傳輸方式,所以沒有用到DMACK_N、 EOT_N和DMREQ_N DMA引腳。INT_N是USB中斷請求腳,發(fā)出USB中斷請求;GL_N是GoodLink指示燈,在調(diào)試過程中非常有用,在通信時會不停閃爍。如果一直亮或者一直暗,表示USB接口有問題,如果D12掛起,則LED關(guān)閉。CLKOUT是D12的時鐘輸出,可以通過固件編程改變其頻率,在調(diào)試固件時,可作為參考。?

?

?

2.4 接口程序設(shè)計?

??? USB接口程序設(shè)計" title="程序設(shè)計">程序設(shè)計是USB開發(fā)的核心。USB接口程序設(shè)計包括三部分:單片機程序開發(fā)、USB設(shè)備驅(qū)動程序開發(fā)、主機應(yīng)用程序" title="應(yīng)用程序">應(yīng)用程序開發(fā)。三者互相配合,才能完成可靠、快速的數(shù)據(jù)傳輸。?

2.4.1 單片機程序設(shè)計?

??? 單片機程序(又稱固件)采用模塊化程序設(shè)計,主要模塊包括:數(shù)據(jù)采集模塊、數(shù)據(jù)處理、監(jiān)控模塊和數(shù)據(jù)通信模塊。模塊化設(shè)計的優(yōu)點是可靠性高、可讀性好、升級簡單。?

??? 通信模塊固件結(jié)構(gòu)如圖4所示。主循環(huán)和中斷服務(wù)程序之間的數(shù)據(jù)交換可通過事件標(biāo)志和數(shù)據(jù)緩沖實現(xiàn)。圖3中USB中斷引腳INT_N發(fā)出中斷請求,中斷服務(wù)程序根據(jù)中斷請求類型操作,設(shè)置事件和填充數(shù)據(jù)緩沖區(qū)再傳輸給主循環(huán);標(biāo)準(zhǔn)設(shè)備請求程序是對標(biāo)準(zhǔn)請求進(jìn)行處理;用戶可以根據(jù)實際需要編寫廠商請求,例如發(fā)出啟動或停止數(shù)據(jù)采集命令。?

?

?

2.4.2 驅(qū)動程序設(shè)計?

??? 驅(qū)動開發(fā)工具有DDK和第三方開發(fā)工具。其中DDK開發(fā)難度最大,第三方開發(fā)工具有DriverStudio和Windriver等。DriverStudio難度適中,而Windriver則屬于應(yīng)用層驅(qū)動開發(fā),難度小,但效率低,并存在發(fā)布問題。?

??? DDK驅(qū)動程序開發(fā)工作包括:開發(fā)環(huán)境設(shè)置(VC編譯環(huán)境)[5]、驅(qū)動程序設(shè)計[6]、安裝文件(INF文件)設(shè)計。?

??? 驅(qū)動程序設(shè)計采用WDM(Windows Drive Mode)。WDM設(shè)備驅(qū)動程序提供了一個參考框架,大大降低了由DDK書寫驅(qū)動程序帶來的難度。?

??? D12驅(qū)動使用的例程包括:DriverEntry、AddDevice、DispatchPnp、DispatchRead、DispatchWrite和DispatchDeviceControl例程, 以下是D12的WDM驅(qū)動程序函數(shù):?

??? DriverObject->MajorFunction[IRP_MJ_CREATE] = D12_Create;?

??? DriverObject->MajorFunction[IRP_MJ_CLOSE] = D12_Close;?

??? DriverObject->DriverUnload = D12_Unload;?

??? DriverObject->MajorFunction[IRP_MJ_DEVICE_CONTROL] =D12_ProcessIOCTL;?

??? DriverObject->MajorFunction[IRP_MJ_WRITE] = D12_Write;?

??? DriverObject->MajorFunction[IRP_MJ_READ] = D12_Read;?

??? DriverObject->MajorFunction[IRP_MJ_SYSTEM_CONTROL]=?

??? DriverObject->MajorFunction[IRP_MJ_PNP]=D12_Dispatch;?

??? DriverObject->MajorFunction[IRP_MJ_POWER]=D12_ProcessPowerIrp;?

??? DriverObject->DriverExtension->AddDevice=D12_PnPAddDevice;?

??? 驅(qū)動程序與應(yīng)用程序和硬件之間通信都是IRP(I/O請求包)完成的。IRP_MJ_PNP主要是實現(xiàn)USB即插即用,例如設(shè)備的添加、刪除和資源的分配;IRP_MJ_POWER實現(xiàn)電源管理,例如設(shè)備的掛起和喚醒;IRP_MJ_CREATE(創(chuàng)建)、IRP_MJ_CLOSE(關(guān)閉)、IRP_MJ_DEVICE_CONTROL(設(shè)備控制)、IRP_MJ_WRITE(讀)和IRP_MJ_READ(寫)是主要完成數(shù)據(jù)通信的函數(shù),實現(xiàn)管道的創(chuàng)建、關(guān)閉和數(shù)據(jù)讀寫。其中設(shè)備控制具有輸入輸出緩沖區(qū),可實現(xiàn)讀和寫功能;AddDevice和DriverUnload實現(xiàn)設(shè)備管理,在設(shè)備添加和卸載時,創(chuàng)建和刪除設(shè)備,以及管理資源分配。

??? 驅(qū)動程序通過安裝文件(.inf文件)中PID(產(chǎn)品識別號)和VID(廠商識別號)識別USB設(shè)備。?

2.4.3 應(yīng)用程序設(shè)計?

??? 主機應(yīng)用程序的編寫使用VC編譯環(huán)境中的API函數(shù)實現(xiàn)。 ?

??? 應(yīng)用程序的編程方法與串口編程類似。首先必須查找設(shè)備,打開設(shè)備的句柄;然后進(jìn)行讀寫和控制操作;最后是關(guān)閉設(shè)備句柄。為了提高效率,可使用多線程技術(shù)實現(xiàn)讀寫。?

??? 應(yīng)用程序通過GUID(注冊表驅(qū)動唯一識別號)查找驅(qū)動程序。?

2.5 調(diào) 試?

??? 首先是固件調(diào)試,可用仿真機完成,驅(qū)動開發(fā)工具Windriver也是很好的固件調(diào)試工具,例如測試標(biāo)準(zhǔn)請求、廠商請求和管道讀寫。其次是驅(qū)動調(diào)試,這是USB接口開發(fā)最困難的部分,調(diào)試工具可用DriverStudio中Softice工具和文獻(xiàn)[6]中DebugPrint跟蹤工具,監(jiān)視工具Bus Hound可監(jiān)視USB的實際數(shù)據(jù)傳輸情況。需要注意的是,驅(qū)動調(diào)試必須在應(yīng)用程序正確調(diào)用的前提下。?

2.6 USB傳輸速度?

??? 主機每過1ms發(fā)出一個SOF(起始幀),四種USB傳輸類型都分布在1ms的幀內(nèi)。所以為了提高傳輸速度,可加大端點緩沖區(qū)的大小和使用雙緩沖(有些芯片還有四緩沖),在1ms內(nèi)盡量多傳輸數(shù)據(jù);采用DMA傳輸方式,USB設(shè)備不通過微控制器直接完成數(shù)據(jù)傳輸,當(dāng)然相應(yīng)硬件和軟件開發(fā)的難度增加;如果單片機數(shù)據(jù)加載速度較慢,則可考慮使用高速指令的單片機;如果速度要求在1MB/s以上,則考慮采用USB2.0接口芯片。?

??? 本文以USB接口程序在16路溫度采集系統(tǒng)中的應(yīng)用為例,介紹了USB的接口標(biāo)準(zhǔn)和程序設(shè)計。該系統(tǒng)經(jīng)過一段時間運行,穩(wěn)定可靠,目前已廣泛應(yīng)用于航空電子設(shè)備的測溫系統(tǒng)。?

參考文獻(xiàn)?

1 Universal Serial Bus Specification Reversion 1.1[S]. www.usb.org,1998?

2 周立功. PDIUSBD12 USB固件編程與驅(qū)動開發(fā)[M].北京:?北京航空航天大學(xué)出版社,2003?

3 許永和. EZ-USB FX系列單片機 USB外圍設(shè)計和應(yīng)用[M]. 北京:北京航空航天大學(xué)出版社,2002?

4 PHILIPS. PDIUSBD12 Product Data[DB/OL]. www.philips.com,1999?

5 Christ Cant,孫 義譯.Windows WDM設(shè)備驅(qū)動程序開發(fā)指南[M]. 北京:機械工業(yè)出版社,2000?

6 Water Only. Programming the Microsoft Windows Driver?Mode[M]. Microsoft Press,1999

本站內(nèi)容除特別聲明的原創(chuàng)文章之外,轉(zhuǎn)載內(nèi)容只為傳遞更多信息,并不代表本網(wǎng)站贊同其觀點。轉(zhuǎn)載的所有的文章、圖片、音/視頻文件等資料的版權(quán)歸版權(quán)所有權(quán)人所有。本站采用的非本站原創(chuàng)文章及圖片等內(nèi)容無法一一聯(lián)系確認(rèn)版權(quán)者。如涉及作品內(nèi)容、版權(quán)和其它問題,請及時通過電子郵件或電話通知我們,以便迅速采取適當(dāng)措施,避免給雙方造成不必要的經(jīng)濟損失。聯(lián)系電話:010-82306118;郵箱:aet@chinaaet.com。
亚洲一区二区欧美_亚洲丝袜一区_99re亚洲国产精品_日韩亚洲一区二区
午夜在线视频一区二区区别| 亚洲私人影院在线观看| 亚洲精品午夜| 亚洲国产日韩欧美在线动漫| 激情欧美一区二区三区| 国产亚洲aⅴaaaaaa毛片| 国产精品日本欧美一区二区三区| 欧美国产一区视频在线观看 | 国产区日韩欧美| 国产精品捆绑调教| 欧美视频在线免费看| 欧美日韩一区二区在线播放| 欧美日韩成人综合| 欧美日本高清| 欧美三级在线视频| 久久免费视频网站| 玖玖综合伊人| 欧美激情一区二区三区在线视频观看| 欧美成人中文字幕| 欧美另类综合| 欧美午夜视频在线| 国产精品人人爽人人做我的可爱| 国产精品一二三四| 国产日韩亚洲欧美| 韩国成人福利片在线播放| 精品999网站| 亚洲欧洲日韩在线| 99精品国产热久久91蜜凸| 99riav1国产精品视频| 国产精品日日摸夜夜摸av| 国产精品推荐精品| 国产视频精品网| 在线观看日韩av先锋影音电影院| 亚洲成色777777在线观看影院| 亚洲高清自拍| 夜夜爽99久久国产综合精品女不卡 | 亚洲国产免费| 亚洲欧洲精品一区二区三区 | 久久综合中文色婷婷| 欧美成人午夜激情视频| 欧美日韩国产一级| 国产精品日产欧美久久久久| 国产午夜亚洲精品不卡| 亚洲成色www久久网站| 日韩一级大片| 午夜精品久久久久久久久久久久 | 欧美一区二区三区四区高清| 久久久999国产| 美女久久网站| 欧美日韩在线播放一区| 国产欧美亚洲日本| 亚洲国产精品久久久久秋霞蜜臀| 制服丝袜激情欧洲亚洲| 久久精品导航| 亚洲视频日本| 久久在线免费观看视频| 欧美日韩三区| 狠狠色狠狠色综合日日小说| 亚洲精品日韩久久| 欧美在线高清| 亚洲社区在线观看| 老司机精品久久| 国产精品国产三级国产aⅴ无密码| 国产一区二区三区久久久| 亚洲精选久久| 亚洲二区三区四区| 亚洲欧美日本国产专区一区| 久久综合九色99| 国产精品久久久久久久久婷婷| 激情欧美丁香| 亚洲网在线观看| 亚洲精品在线看| 久久性色av| 国产精品毛片| 亚洲精品国精品久久99热| 欧美一区二区在线| 在线天堂一区av电影| 久久亚洲精品网站| 国产伦精品一区二区三区照片91 | 亚洲日本va在线观看| 性欧美激情精品| 亚洲一级二级| 欧美α欧美αv大片| 国产日韩欧美三区| 一本久久综合亚洲鲁鲁五月天| 亚洲激情社区| 久久精品国产免费| 国产精品久久久久久影院8一贰佰| 亚洲激情av在线| 亚洲国产成人不卡| 欧美一区二区视频免费观看| 亚洲一区二区免费视频| 美女诱惑黄网站一区| 国产欧美亚洲视频| 亚洲手机视频| 中日韩视频在线观看| 你懂的一区二区| 国内自拍一区| 亚洲欧美一区二区精品久久久| 亚洲视频一区二区| 欧美福利一区二区| 在线播放一区| 亚洲大黄网站| 久久久久久婷| 国产日韩欧美一二三区| 亚洲字幕一区二区| 亚洲综合日韩在线| 欧美日韩另类综合| 亚洲三级电影全部在线观看高清| 最近看过的日韩成人| 久久久天天操| 国产精品视频最多的网站| 亚洲免费大片| 一本一本a久久| 欧美国产三区| 亚洲国产欧美在线| 亚洲国产一区二区精品专区| 久久婷婷影院| 伊人精品久久久久7777| 亚洲电影专区| 蜜臀久久99精品久久久画质超高清 | 久久国产一区二区| 国产日本欧美视频| 亚洲欧美国产高清| 欧美一级久久久久久久大片| 国产精品久久久久久久午夜| 亚洲一区二区高清| 午夜久久99| 国产日韩欧美制服另类| 欧美中文字幕视频| 久久影院午夜论| 亚洲国产mv| 99re8这里有精品热视频免费| 欧美精品国产一区二区| 亚洲激情网站| 国产精品99久久99久久久二8| 欧美色区777第一页| 亚洲视频国产视频| 欧美一区二区视频97| 国产在线精品成人一区二区三区| 欧美在线一二三四区| 麻豆成人在线播放| 亚洲精品国产精品国自产观看浪潮 | 亚洲精品视频在线播放| 欧美日本一区| 亚洲天堂成人在线观看| 午夜精品视频网站| 国产一区二区三区成人欧美日韩在线观看 | 在线欧美福利| 99精品99久久久久久宅男| 欧美视频在线一区二区三区| 亚洲一区二区三区影院| 久久精品99无色码中文字幕| 极品少妇一区二区| 亚洲免费播放| 国产精品免费看| 久久国产精品久久精品国产| 欧美国产日产韩国视频| 一区二区三区视频在线观看| 久久av老司机精品网站导航| 在线免费一区三区| 亚洲一区制服诱惑| 狠狠入ady亚洲精品| 99pao成人国产永久免费视频| 国产精品萝li| 亚洲国产综合91精品麻豆| 欧美日韩一级大片网址| 小处雏高清一区二区三区| 欧美顶级艳妇交换群宴| 一区二区三区四区国产精品| 久久全国免费视频| 99精品国产99久久久久久福利| 欧美伊人久久大香线蕉综合69| 在线观看三级视频欧美| 亚洲一区二区精品视频| 狠狠做深爱婷婷久久综合一区 | 国产精品毛片| 亚洲人成人99网站| 国产精品日日摸夜夜添夜夜av| 亚洲国产精彩中文乱码av在线播放| 欧美日韩成人在线播放| 欧美呦呦网站| 国产精品白丝av嫩草影院| 亚洲观看高清完整版在线观看| 欧美三日本三级少妇三2023 | 一本一本大道香蕉久在线精品| 国产亚洲在线| 亚洲一区精彩视频| 精品动漫3d一区二区三区免费版 | 欧美一区二区三区久久精品茉莉花| 亚洲丰满在线| 久久成人羞羞网站| 一区二区成人精品| 欧美1区2区3区| 午夜精品久久久久久久99热浪潮| 欧美日韩午夜激情| 91久久香蕉国产日韩欧美9色| 国产精品影音先锋| 一区二区三区视频观看| 亚洲第一视频网站|