丁香婷婷网,黄色av网站裸体无码www,亚洲午夜无码精品一级毛片,国产一区二区免费播放

現(xiàn)在位置:范文先生網(wǎng)>理工論文>電子通信論文>基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計

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

時間:2023-02-21 00:06:23 電子通信論文 我要投稿
  • 相關(guān)推薦

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

摘要:以自行開發(fā)的基于USB接口的數(shù)據(jù)采集系統(tǒng)為例,介紹了USB接口的硬件和軟件開發(fā)過程。
  關(guān)鍵詞:USB數(shù)據(jù)采集 PDIUSBD12
  
  1USB協(xié)議和芯片選擇
  
  理解好USB協(xié)議是USB系統(tǒng)開發(fā)的第一步。USB協(xié)議版本包括1.0、1.1和2.0,USBOTG是對2.0版本協(xié)議的補(bǔ)充。雖然USB協(xié)議內(nèi)容繁多且復(fù)雜,然而,對USB開發(fā)影響較大的卻只是少數(shù)部分,以下對協(xié)議版本1.1[1]中這些部分進(jìn)行介紹。
  
  1.1USB協(xié)議
  
  一般,每個USB設(shè)備由一個或多個配置(Configuration)控制其行為。使用多配置原因是對操作系統(tǒng)的支持;一個配置由接口(Interface)組成;接口則是由管道(Pipe)組成;管道與USB設(shè)備的端點(diǎn)(Endpoint)對應(yīng),一個端點(diǎn)可以配置為輸入輸出兩個管道。在固件編程中,USB設(shè)備、配置、接口和管道都用描述符報告其屬性。
  
  圖1為USB多層次通信模型。端點(diǎn)0默認(rèn)配置為控制管道,用來完成所規(guī)定的設(shè)備請求(USB協(xié)議第九章)。其它端點(diǎn)可配置為數(shù)據(jù)管道。對開發(fā)而言,主要的大數(shù)據(jù)傳輸都是通過數(shù)據(jù)管道完成的[2]。
  
 。眨樱聜鬏旑愋桶ㄅ總鬏、等時傳輸、中斷傳輸和控制傳輸,每種傳輸類型的傳輸速度、可靠性以及應(yīng)用范圍都不同[3]?刂苽鬏斂煽啃允亲罡叩,但速度最慢;等時傳輸速度快,滿足實(shí)時性,但可靠性低。在具體應(yīng)用中,端點(diǎn)傳輸類型可根據(jù)傳輸速度和可靠性選擇。
  
  在USB通信協(xié)議中,主機(jī)取得絕對主動權(quán)利,設(shè)備只能是“聽命令行事”,通過一定的命令格式(設(shè)備請求)完成通信。USB設(shè)備請求包括標(biāo)準(zhǔn)請求、廠商請求和設(shè)備類請求。設(shè)備的枚舉是標(biāo)準(zhǔn)請求命令完成的;廠商請求是用戶定義的請求;設(shè)備類請求是特定的USB設(shè)備類發(fā)出的請求,例如海量儲存類、打印機(jī)類和HID(人機(jī)接口)類。固件編程中設(shè)備請求必須遵循一定的格式,包括請求類型、設(shè)備請求、值、索引和長度。
  
 。保玻眨樱陆涌谛酒x擇
  
 。眨樱陆涌谛酒念愋陀校
  
 。ǎ保┌磦鬏斔俣鹊母叩停旱退伲ǎ保担停猓穑螅┖腿(12Mbps)可選USB1.1接口芯片,例如Philips公司的PDIUSBD12和Cypress公司的EZ-USB2100系列;高速(480Mbps)可選USB2.0接口芯片,例如Philips公司的ISP1581和Cypress公司的CY7C68013。
  
 。ǎ玻┦欠駧В停茫眨ㄎ⒖刂破鳎阂话悖校瑁椋欤椋穑蠊镜亩疾粠В停茫眨茫穑颍澹螅蠊敬蠖喽紟,例如AN2131。
  
 。ǎ常┦欠駧е骺仄鞴δ埽翰恍枰鳈C(jī)參與,主從設(shè)備間可進(jìn)行數(shù)據(jù)傳輸,芯片有Philips公司的ISP1301和Cypress公司的SL811HS等。
  
  還有專門用途USB芯片,例如閃存專用芯片IC1114。工程中用戶可根據(jù)自己的需求選擇一款性價比高的芯片。另外可用開發(fā)資源也是要考慮的重要方面,例如開發(fā)板和芯片廠商提供的網(wǎng)上資源,可大大降低開發(fā)的難度。
  
 。不冢眨樱陆涌诘臄(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é)議;實(shí)時時鐘記錄當(dāng)前測量溫度的時間;溫度傳感器和接口電路主要完成溫度采集,并讀入MCU處理;復(fù)位電路完成對MCU的上電復(fù)位和電源電壓監(jiān)視;看門狗電路用來監(jiān)視MCU是否工作;存儲電路主要存儲采集到的溫度數(shù)據(jù)以及采集的實(shí)時時間;電源電路主要為各部分提供要求的電源;外設(shè)與主機(jī)間的通信電路采用USB接口。
  
 。.2接口芯片選擇
  
  接口電路采用Philips公司的PDIUSBD12[4](以下簡稱為D12)芯片。主要因為D12芯片信息、開發(fā)資源豐富,具有較高的性價比。
  
 。模保残酒闹饕攸c(diǎn)包括:
  
  ·符合USB1.1版本規(guī)范;
  
  ·可與任何外部微控制器/微處理器實(shí)現(xiàn)高速并行接口(2MB/s);
  
  ·采用GoodLink技術(shù)的連接指示器,在通信時使LED閃爍;
  
  
  
  
  ·主端點(diǎn)的雙緩沖配置增加了數(shù)據(jù)吞吐量并輕松實(shí)現(xiàn)實(shí)時數(shù)據(jù)傳輸;
  
  ·在批量和等時模式下均可實(shí)現(xiàn)1MB/s的數(shù)據(jù)傳輸率;
  
  ·完全自治的直接內(nèi)存存。模停敛僮鳌
  
 。玻辰涌谟布O(shè)計
  
  由D12接口組成的通信電路原理如圖3所示。關(guān)于D12的各引腳說明見參考文獻(xiàn)[4]。多路地址/數(shù)據(jù)總線ALE接單片機(jī)的ALE腳,這樣使用MOVX指令可以與D12接口,對D12操作就象對RAM操作一樣,此時忽略A0(命令口和數(shù)據(jù)口地址線)的輸入。因為沒有使用DMA傳輸方式,所以沒有用到DMACK_N、EOT_N和DMREQ_NDMA引腳。INT_N是USB中斷請求腳,發(fā)出USB中斷請求;GL_N是GoodLink指示燈,在調(diào)試過程中非常有用,在通信時會不停閃爍。如果一直亮或者一直暗,表示USB接口有問題,如果D12掛起,則LED關(guān)閉。CLKOUT是D12的時鐘輸出,可以通過固件編程改變其頻率,在調(diào)試固件時,可作為參考。
  
 。玻唇涌诔绦蛟O(shè)計
  
 。眨樱陆涌诔绦蛟O(shè)計是USB開發(fā)的核心。USB接口程序設(shè)計包括三部分:單片機(jī)程序開發(fā)、USB設(shè)備驅(qū)動程序開發(fā)、主機(jī)應(yīng)用程序開發(fā)。三者互相配合,才能完成可靠、快速的數(shù)據(jù)傳輸。
  
 。玻矗眴纹瑱C(jī)程序設(shè)計
  
  單片機(jī)程序(又稱固件)采用模塊化程序設(shè)計,主要模塊包括:數(shù)據(jù)采集模塊、數(shù)據(jù)處理、監(jiān)控模塊和數(shù)據(jù)通信模塊。模塊化設(shè)計的優(yōu)點(diǎn)是可靠性高、可讀性好、升級簡單。
  
  通信模塊固件結(jié)構(gòu)如圖4所示。主循環(huán)和中斷服務(wù)程序之間的數(shù)據(jù)交換可通過事件標(biāo)志和數(shù)據(jù)緩沖實(shí)現(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ù)實(shí)際需要編寫廠商請求,例如發(fā)出啟動或停止數(shù)據(jù)采集命令。
  
  圖3USB接口連接示意圖
  
 。玻矗豺(qū)動程序設(shè)計
  
  驅(qū)動開發(fā)工具有DDK和第三方開發(fā)工具。其中DDK開發(fā)難度最大,第三方開發(fā)工具有DriverStudio和Windriver等。DriverStudio難度適中,而Windriver則屬于應(yīng)用層驅(qū)動開發(fā),難度小,但效率低,并存在發(fā)布問題。
  
 。模模蓑(qū)動程序開發(fā)工作包括:開發(fā)環(huán)境設(shè)置(VC編譯環(huán)境)[5]、驅(qū)動程序設(shè)計[6]、安裝文件(INF文件)設(shè)計。
  
  驅(qū)動程序設(shè)計采用WDM(WindowsDriveMode)。WDM設(shè)備驅(qū)動程序提供了一個參考框架,大大降低了由DDK書寫驅(qū)動程序帶來的難度。
  
 。模保豺(qū)動使用的例程包括:DriverEntry、AddDevice、DispatchPnp、DispatchRead、DispatchWrite和DispatchDeviceControl例程,以下是D12的WDM驅(qū)動程序函數(shù):
  
 。模颍椋觯澹颍希猓辏澹悖簦荆停幔辏铮颍疲酰睿悖簦椋铮頪IRP_MJ_CREATE]=D12_Create;
  
  DriverObject->MajorFunction[IRP_MJ_CLOSE]=D12_Close;
  
 。模颍椋觯澹颍希猓辏澹悖簦荆模颍椋觯澹颍眨睿欤铮幔洌剑模保玻撸眨睿欤铮幔;
  
 。模颍椋觯澹颍希猓辏澹悖簦荆停幔辏铮颍疲酰睿悖簦椋铮頪IRP_MJ_DEVICE_CONTROL;
  
 。剑模保玻撸校颍铮悖澹螅螅桑希茫裕;
  
  DriverObject->MajorFunction[IRP_MJ_WRITE]=D12_Write;
  
 。模颍椋觯澹颍希猓辏澹悖簦荆停幔辏铮颍疲酰睿悖簦椋铮頪IRP_MJ_READ]=D12_Read;
  
 。模颍椋觯澹颍希猓辏澹悖簦荆停幔辏铮颍疲酰睿悖簦椋铮頪IRP_MJ_SYSTEM_CONTROL;
  
  DriverObject->MajorFunction[IRP_MJ_PNP]=D12_Dispatch;
  
 。模颍椋觯澹颍希猓辏澹悖簦荆停幔辏铮颍疲酰睿悖簦椋铮頪IRP_MJ_POWER]=D12_Process-PowerIrp;
  
  DriverObject->DriverExtension->AddDevice=D12_PnPAddDevice;
  
  驅(qū)動程序與應(yīng)用程序和硬件之間通信都是IRP(I/O請求包)完成的。IRP_MJ_PNP主要是實(shí)現(xiàn)USB即插即用,例如設(shè)備的添加、刪除和資源的分配;IRP_MJ_POWER實(shí)現(xiàn)電源管理,例如設(shè)備的掛起和喚醒;IRP_MJ_CREATE(創(chuàng)建)、IRP_MJ_CLOSE(關(guān)閉)、IRP_MJ_
  
 。模牛郑桑茫牛撸茫希危裕遥希蹋ㄔO(shè)備控制)、IRP_MJ_WRITE(讀)和IRP_MJ_READ?穴寫?雪是主要完成數(shù)據(jù)通信的函數(shù),實(shí)現(xiàn)管道的創(chuàng)建、關(guān)閉
  
  
  
  和數(shù)據(jù)讀寫。其中設(shè)備控制具有輸入輸出緩沖區(qū),可實(shí)現(xiàn)讀和寫功能;AddDevice和DriverUnload實(shí)現(xiàn)設(shè)備管理,在設(shè)備添加和卸載時,創(chuàng)建和刪除設(shè)備,以及管理資源分配。
  
  驅(qū)動程序通過安裝文件(.inf文件)中PID(產(chǎn)品識別號)和VID(廠商識別號)識別USB設(shè)備。
  
 。玻矗硲(yīng)用程序設(shè)計
  
  主機(jī)應(yīng)用程序的編寫使用VC編譯環(huán)境中的API函數(shù)實(shí)現(xiàn)。
  
  應(yīng)用程序的編程方法與串口編程類似。首先必須查找設(shè)備,打開設(shè)備的句柄;然后進(jìn)行讀寫和控制操作;最后是關(guān)閉設(shè)備句柄。為了提高效率,可使用多線程技術(shù)實(shí)現(xiàn)讀寫。
  
  應(yīng)用程序通過GUID(注冊表驅(qū)動唯一識別號)查找驅(qū)動程序。
  
 。玻嫡{(diào)試
  
  首先是固件調(diào)試,可用仿真機(jī)完成,驅(qū)動開發(fā)工具Windriver也是很好的固件調(diào)試工具,例如測試標(biāo)準(zhǔn)請求、廠商請求和管道讀寫。其次是驅(qū)動調(diào)試,這是USB接口開發(fā)最困難的部分,調(diào)試工具可用DriverStudio中Softice工具和文獻(xiàn)[6]中DebugPrint跟蹤工具,監(jiān)視工具BusHound可監(jiān)視USB的實(shí)際數(shù)據(jù)傳輸情況。需要注意的是,驅(qū)動調(diào)試必須在應(yīng)用程序正確調(diào)用的前提下。
  
 。玻叮眨樱聜鬏斔俣
  
  主機(jī)每過1ms發(fā)出一個SOF(起始幀),四種USB傳輸類型都分布在1ms的幀內(nèi)。所以為了提高傳輸速度,可加大端點(diǎn)緩沖區(qū)的大小和使用雙緩沖(有些芯片還有四緩沖),在1ms內(nèi)盡量多傳輸數(shù)據(jù);采用DMA傳輸方式,USB設(shè)備不通過微控制器直接完成數(shù)據(jù)傳輸,當(dāng)然相應(yīng)硬件和軟件開發(fā)的難度增加;如果單片機(jī)數(shù)據(jù)加載速度較慢,則可考慮使用高速指令的單片機(jī);如果速度要求在1MB/s以上,則考慮采用USB2.0接口芯片。
  
  本文以USB接口程序在16路溫度采集系統(tǒng)中的應(yīng)用為例,介紹了USB的接口標(biāo)準(zhǔn)和程序設(shè)計。該系統(tǒng)經(jīng)過一段時間運(yùn)行,穩(wěn)定可靠,目前已廣泛應(yīng)用于航空電子設(shè)備的測溫系統(tǒng)。
  

【基于USB接口的數(shù)據(jù)采集系統(tǒng)設(shè)計】相關(guān)文章:

基于USB接口的心電信號數(shù)據(jù)采集系統(tǒng)08-06

低軾耗數(shù)據(jù)采集系統(tǒng)的USB接口設(shè)計08-06

基于USB總線的高速數(shù)據(jù)采集系統(tǒng)08-06

基于USB2.0的高速同步數(shù)據(jù)采集系統(tǒng)設(shè)計08-06

基于USB總線的實(shí)時數(shù)據(jù)采集系統(tǒng)設(shè)計與實(shí)現(xiàn)08-06

基于USB2.0總線的高速數(shù)據(jù)采集系統(tǒng)設(shè)計08-06

基于DSP的 USB 口數(shù)據(jù)采集分析系統(tǒng)08-06

基于DSP的USB口數(shù)據(jù)采集分析系統(tǒng)08-06

USB接口的高速數(shù)據(jù)采集卡的設(shè)計與實(shí)現(xiàn)08-06