日本黄色一级经典视频|伊人久久精品视频|亚洲黄色色周成人视频九九九|av免费网址黄色小短片|黄色Av无码亚洲成年人|亚洲1区2区3区无码|真人黄片免费观看|无码一级小说欧美日免费三级|日韩中文字幕91在线看|精品久久久无码中文字幕边打电话

當前位置:首頁 > 智能硬件 > 智能硬件
[導讀]介紹PDIUSBD12帶并行總線的USB接口器件以及基于多線程思想設計應用程序的方法。

摘要:說明基于USB技術的實時數(shù)據(jù)采集系統(tǒng)的硬件、軟件實現(xiàn);重點介紹PDIUSBD12帶并行總線的USB接口器件以及基于多線程思想設計應用程序的方法。

    關鍵詞:USB PDIUSBD12 多線程 實時數(shù)據(jù)采集

1 問題的提出

隨著信息技術的飛速發(fā)展,各種數(shù)據(jù)的實時采集和處理在現(xiàn)代工業(yè)控制中已成為必不可少的。這就為我們的設計提出了兩個方面的要求:一方面,要求接口簡單靈活且有較高的數(shù)據(jù)傳輸率;另一方面,由于數(shù)據(jù)量通常都較大,要求主機能夠對實時數(shù)據(jù)做出快速響應,并及時進行分析和處理。

傳統(tǒng)的外設與主機的通信接口難以滿足上述第一個方面的要求。這些接口一般采用PCI部線或RS-232串行總線。PCI總線雖然有很高的傳輸率(可達132Mbps),還能“即插即用”,但是它們的擴充槽相當有限,且插拔并不方便。RS-232串行總線雖然連接方便,可是它的帶寬非常有限,傳輸速度太慢,而且1條RS-232串口通信電纜只能連接1個物理設備。USB技術正是順序這一要求提出的,它集PCI和RS-232的優(yōu)點于一身:具有較高的傳輸速率(USB協(xié)議1.1支持最高傳輸速度達12Mbps,USB協(xié)議2.0支持最高傳輸速度可達148Mbps),實現(xiàn)了真正意義上的“即插即用”(Plug & Play),同時USB上最多可以連接127個外設。因此,將USB技術應用于數(shù)據(jù)的實時采集是非常適合的。

實時系統(tǒng)對多任務的要求比較普遍。往往在后臺采集數(shù)據(jù)、進行數(shù)據(jù)顯示的同時,還要在前臺界面對用戶的操作做出響應。在實時系統(tǒng)中,對實時數(shù)據(jù)做出及時而準確的反應是十分重要的。由于受A/D采集速度等因素的限制,從硬件上采用USB接口技術的確可以提高速度,但畢竟?jié)摿τ邢?,因此在現(xiàn)有硬件設計基礎上充分發(fā)揮軟件的作用就能進一步提升速度。使用傳統(tǒng)的單線程編程技術效率較低,無法及時處理,必須充分利用Windows的多任務處理功能,采用多線程編程技術來處理數(shù)據(jù)。

在這個實時采集系統(tǒng)的設計上,我們將這兩種技術結合起來:在硬件上采用USB技術;軟件用VC++進行開發(fā),采用多線程編程,使系統(tǒng)的效率從這兩方面都得到提升。

2 系統(tǒng)體系結構

2.1 硬件結構

整個系統(tǒng)硬件結構如圖1所示。

實時數(shù)據(jù)采集系統(tǒng)主要由多路選擇開關、A/D轉換、單片機系統(tǒng)、PDIUSBD12、微機組成。多路選擇開關對多路信號進行選擇,使其分時輸入;A/D轉換實現(xiàn)模擬信號的數(shù)字化;單片機系統(tǒng)主要完成信號采集、數(shù)據(jù)通信;PDIUSBD12實現(xiàn)USB接口;微機完成數(shù)據(jù)接收、存入數(shù)據(jù)庫、數(shù)據(jù)處理、計算、顯示等功能。

其中PDIUSBD12是系統(tǒng)USB技術得以實現(xiàn)的關鍵。它是Philips公司的一個帶并行總線的USB接口器件,支持本地的DMA傳輸。它完全符合USB1.1版的規(guī)范,同時集成了SIE(串行接口引擎)、FIFO存儲器、收發(fā)器以及電壓調(diào)整器。其主端點的雙緩沖配置增加了數(shù)據(jù)吞吐量并輕松實現(xiàn)實時數(shù)據(jù)傳輸,功能框圖如圖2所示。

    在這個系統(tǒng)中,單片機采用的是80C52。PDIUSBD12與80C52的接口有2種方式:多路地址/數(shù)據(jù)總線方式、單地址/數(shù)據(jù)總線方式。我們采用的是前一種方式:使用了80C52的INT0、ALE、WR、RD和P0口,當PDIUSBD12接收到主機的有效信息時,會產(chǎn)生一個中斷通知80C52進行處理。在此種方式下,PDIUSBD12在ALE下降沿的時候,對單片機的輸出地址進行鎖存。若輸出地址為奇數(shù),則表示對PDIUSBD12發(fā)送指令;若輸出地址為偶數(shù),則表示對PDIUSBD12進行數(shù)據(jù)傳輸。接口電路如圖3所示。

80C52將A/D采集的數(shù)據(jù)經(jīng)PDIUSBD12的并行接口送入FIFO存儲器。當USB的傳輸速率達到12Mbps時,MMU(存儲器管理單元)和集成RAM作為USB之間速度差異的緩沖區(qū),這就允許單片機以它自己的速率對USB信息包進行讀寫。若FIFO中數(shù)據(jù)已滿,SIE會立即對數(shù)據(jù)做處理:同步模式的識別、并行/串行轉換、位填充/解除填充、CRC校驗/產(chǎn)生、PID校驗/產(chǎn)生、地址識別和握手評估/產(chǎn)生。SIE實現(xiàn)了全部的USB協(xié)議層,完全由硬件實現(xiàn)而不需要固件的參與。數(shù)據(jù)經(jīng)處理后由收發(fā)器通過數(shù)據(jù)線D+、D-傳送到主機。對一個單片機而言,PDIUSBD12看起來就像1個帶8位數(shù)據(jù)總線和1個地址位的存儲器件。

2.2 軟件結構

USB的軟件系統(tǒng)包括三部分:客戶應用軟件、設備固件以及USB設備驅動程序。其中,設備固件和USB設備驅動程序又被稱為主機軟件。軟件層次如圖4所示。

2.2.1 固件設備

設備固件(firmware)是儲存在程序內(nèi)存中的代碼。它使得USB接口芯片與主機和外設中其它電路能夠通信。固件由USB驅動程序(USBD)、主控制器驅動程序(HCD)兩部分組成。USBD的功能可以概括為:配置管理、總線管理、數(shù)據(jù)傳輸管理、提供客戶服務。USBD把IRP劃分為USB和設備需要大小的塊,確保每一個設備能分配到它所要求的USB資源,這樣它就可以支持USB設備配置。USBD提供了一個編程接口USBDI(USB驅動程序接口),給客戶驅動程序一種方式,用于傳輸請求,傳輸?shù)姆较蚩梢允莵碜曰虬l(fā)往USB的功能單元。大量的客戶服務是由USB的驅動程序提供的,它幫助USB的客戶控制和訪問它們的功能單元。HCD提供了對USB的低級支持,通過把IRP轉換成為單獨的事務處理后在USB上執(zhí)行。

    本系統(tǒng)固件設計的目標是使PDIUSBD12達到最高的傳輸速度。微處理器主要忙于多路數(shù)據(jù)的采集及處理,PDIUSBD12的固件設計成完全的中斷驅動。USB的傳輸可在后臺進行,這確保了最佳的傳輸速率和更好的軟件結構,同時簡化了編程和調(diào)試。它的基本思想是:后臺ISR(中斷服務程序)和前臺主程序循環(huán)之間的數(shù)據(jù)交換通過事件標志和數(shù)據(jù)緩沖區(qū)來實現(xiàn)。當PDIUSBD12從USB收到一個數(shù)據(jù)包時,就對單片機產(chǎn)生一個中斷請求,單片機立即響應中斷。在ISR中,固件將數(shù)據(jù)包從FDIUSBD12內(nèi)部緩沖區(qū)移到循環(huán)數(shù)據(jù)緩沖區(qū),并在隨后請求清零PDIUSBD12的內(nèi)部緩沖區(qū),以使其能接收新的數(shù)據(jù)包。然后返回到主循環(huán),檢查循環(huán)緩沖區(qū)內(nèi)是否有新的數(shù)據(jù)并開始其它的前臺任務。

基于這種結構,主循環(huán)不關心數(shù)據(jù)是來自USB、串口還是并口,只檢查循環(huán)緩沖區(qū)內(nèi)需要處理的新數(shù)據(jù)。這樣,主循環(huán)程序專注于數(shù)據(jù)的處理而ISR能夠以盡可能高的可能高的速度進行數(shù)據(jù)的傳輸。

這部分程序結構可包括:

主循環(huán)程序——發(fā)送USB請求,處理USB總線事件和用戶功能處理等;

硬件提以層——對單片機的I/O口、數(shù)據(jù)總線等硬件接口進行操作;

PDIUSBD12命令接口——對PDIUSBD12器件進行操作的模塊子程序集;

請求處理程序——對USB的標準設備請求進行處理和對用戶添加的廠商請求進行處理;

中斷服務程序——當PDIUSBD12向單片機發(fā)出中斷請求時,讀取PDIUSBD12的中斷傳輸來的數(shù)據(jù),并設定事件標志和Setup包數(shù)據(jù)緩沖區(qū),傳輸給主循環(huán)。

2.2.2 USB設備驅動設計

在Windows下,與USB外設的任何通信必須通過USB設備驅動,這個驅動知道如何與系統(tǒng)的USB驅動和訪問設備的應用程序通信。設備驅動是保證應用程序訪問硬件設備的軟件組件,使得應用程序不必知道物理連接、信號和與一個設備通信需要的協(xié)議等的細節(jié),可以保證應用程序代碼只通過外設名字訪問外設或端口目的地。應用程序不需要知道外設連接端口的物理地址,不需要精確監(jiān)視和控制外設需要的交換信號。

設備驅動通過在應用層和硬件專用代碼之間的轉化來完成它的任務。應用層代碼一般使用一套操作系統(tǒng)支持的函數(shù),硬件代碼則處理那些訪問外設電路的必要協(xié)議。設備驅動能與應用程序之間相互通信是通過Windows提供的API函數(shù),這些函數(shù)使應用程序能夠控制顯示器、處理信息、訪問存儲器、讀寫磁盤和其它設備。對于一些標準設備,Windows提供通用驅動;不過,這個實時數(shù)據(jù)采集系統(tǒng)是自定義的設備,對此Windows并不提供通用的驅動,需要對設備編寫自定義的驅動,并且必須遵循微軟在Windows98和更新版本中為用戶定義的Win32驅動模式。Windows98和Windows2000中,USB總線驅動是WDM驅動,擴展名為.sys。編寫USB設備驅動需要使用Visual C++,此外還需要Windows 98或2000設備開發(fā)包(98DDK/NTDDK)。USB設備驅動的編寫通常不是一項簡單的任務,驅動開發(fā)包就提供一種途徑,通過做盡可能多的工作為跳過驅動開發(fā),這些開發(fā)庫有Blue Water Systems的WinDK和Compuware NuMega的DriverWorks。這些工具包能夠集成到Visual C++編程環(huán)境中。運用這些工具包只需很少的時間就能生成一個高效的驅動程序。

這一部分可以包括4個模塊:初始化模塊、即插即用管理模塊、電源管理模塊和I/O功能模塊。初始化模塊提供一個DriverEntery入口點來執(zhí)行大量的初始化函數(shù)。即插用模塊實現(xiàn)USB設備的動態(tài)插拔及配置。當硬件檢測到USB設備接入時,Windows查找相應的驅動程序,并且調(diào)用它的DriverEntery例程,PnP(即插即用)管理器調(diào)用驅動程序的AddDevice例程,通知它添加了一個設備。驅動程序會收到一個包含有設備分配資源信息的啟動設備的IRP,在對設備進行正確配置后,開始與硬件的對話。在運行過程中,如果設備被拔除,PnP會發(fā)出相應的IRP,驅動程序會進行盯應處理。USB設備的掛起和喚醒是由電源管理模塊進行管理的。I/O功能模塊完成I/O請求的工作。

2.2.3 應用程序設計

固件程序和USB設備驅動程序的設計是USB設備開發(fā)者的工作,對于廣大用戶而言,與系統(tǒng)的交互是通過應用程序實現(xiàn),而且整個實時采集系統(tǒng)的主要數(shù)據(jù)處理都是在這里完成的。因此,運行效率高、界面友好、具有強大數(shù)據(jù)分析和處理的應用程序的設計,也是系統(tǒng)設計上一個不容忽視的關鍵因素。應用程序的主要功能有:啟動/關閉USB設備,檢測USB設備,設置USB數(shù)據(jù)傳輸管道/端口,設置A/D,采集數(shù)據(jù),顯示/分析數(shù)據(jù)。這里,我們采用Visual C++6.0作為程序的開發(fā)環(huán)境,并且充分運用了多線程的編程思想。

在這個設備中,設置4個線程:首先是1個主線程,負責用戶界面,并保持中樞地位。它的生存周期也就是整個用戶程序的主存期,用戶的動作(例如鼠標事件、鍵盤事件)都會觸發(fā)主線程的消息機制,從而完成對用戶的響應;而3個分離的輔助線程分別負責數(shù)據(jù)的采集、數(shù)據(jù)的分析處理以及數(shù)據(jù)的顯示這3個不同的任務。輔助線程是在主線程運行過程中產(chǎn)生的,它的生命就是線程函數(shù)本身,函數(shù)一旦return,線程就結束了。因此,輔助線程的生存周期只是整個程序生存期的一部分。

MFC程序只會有一個CwinApp對象,而CwinApp派生自CwinThread,即產(chǎn)生了應用程序的主線程。每當需要一個額外的線程時,應先產(chǎn)生一個CwinThread對象,再調(diào)用全局函數(shù)AfxBeginThread(),將線程產(chǎn)生出來。

對于輔助線程(worker thread),要為它準備一個線程函數(shù),然后調(diào)用AfxBeginThread()。例如:CWinThread* pThread=AfxBeginThread(ThreadFunc,&param);

UINT ThreadFunc(LPVOID pParam); //線程函數(shù)

對于用戶界面線程(UI thread),不能夠光由一個線程函數(shù)來代表,因為它要處理消息,它需要一個消息循環(huán)。應該先從CWinThread派生一個自己的類,再調(diào)用AfxBeginThread()產(chǎn)生一個CWinThread對象。具體程序見本刊網(wǎng)站(http://www.dpj.com.cn)。

結語

基于USB技術的實時數(shù)據(jù)采集系統(tǒng),在編程上運用了多線程思想;從硬件和軟件兩方面錄求較佳的解決途徑,并將二者結合起來,在實際中取得了良好的運行效果。

本站聲明: 本文章由作者或相關機構授權發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

2025年8月13日 – 提供超豐富半導體和電子元器件?的業(yè)界知名新品引入 (NPI) 代理商貿(mào)澤電子 (Mouser Electronics) 即日起開售Asahi Kasei Microdevices (AKM) 的...

關鍵字: 數(shù)模轉換器 USB 無線揚聲器

物聯(lián)網(wǎng)與智能化設備快速普及,供電方式的選擇直接影響設備部署的靈活性、成本與可靠性。PoE(以太網(wǎng)供電)與USB供電作為兩大主流技術,分別在工業(yè)網(wǎng)絡、智能家居、消費電子等領域占據(jù)關鍵地位。本文將從設備適配性、傳輸距離、功率...

關鍵字: PoE USB

在無線技術的發(fā)展歷程中,部署的簡便性往往是成功的關鍵。像Wi-Fi、藍牙和早期的蜂窩技術,只有在集成變得簡單、無縫且實惠時,才能實現(xiàn)大規(guī)模的應用。而如今,Wi-Fi HaLow——一種專為物聯(lián)網(wǎng)(IoT)設計的遠距離、低...

關鍵字: 物聯(lián)網(wǎng) Wi-Fi USB

2025年8月5日 – 專注于引入新品的全球電子元器件和工業(yè)自動化產(chǎn)品授權代理商貿(mào)澤電子 (Mouser Electronics)即日起開售Microchip Technology的新款AVR? SD 8位MCU。AVR...

關鍵字: MCU 工業(yè)自動化 USB

隨著高解析度音頻應用的不斷發(fā)展和廣泛部署,諸如USB與I2S之間等不同專業(yè)接口之間的高品質音頻轉換需求日益增長,由此帶來了實現(xiàn)高性能、高實時性與高靈活性的新挑戰(zhàn)。為此,邊緣AI和智能音頻專家XMOS攜手其全球首家增值分銷...

關鍵字: SoC USB 處理器

【2025年7月24日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領域的半導體領導者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)近日推出新型英飛凌ID Key系列,進一步擴展其通用串行總線(USB)...

關鍵字: 控制器 USB 非易失性存儲器

其他電腦(比如安卓手機/平板電腦)的屏幕壞了,你可能想在安排維修之前緊急訪問一些東西。你可以使用android的USB OTG功能(是的,幾乎每個android都支持這個功能,你可以將鼠標和鍵盤連接到它)。

關鍵字: USB 鼠標 Android 樹莓派

M5Stack Cardputer非常適合作為硬件密碼管理器。它很小巧,有一個內(nèi)置鍵盤,一個SD卡插槽,運行在帶有本地USB支持的ESP32-S3上。屏幕使其易于使用,并且由于USB HID,它可以直接在登錄字段中鍵入密...

關鍵字: 密碼管理器 M5Stack Cardputer USB

【2025年7月10日, 德國慕尼黑訊】全球功率系統(tǒng)和物聯(lián)網(wǎng)領域的半導體領導者英飛凌科技股份公司(FSE代碼:IFX / OTCQX代碼:IFNNY)為CIS的新款USB 5 Gbit/s和10 Gbit/s攝像頭提供E...

關鍵字: 控制器 USB 圖像信號處理器

Holtek 針對USB應用推出HT82B45R低速USB OTP MCU,符合USB 2.0低速規(guī)范,支持鍵盤用的高阻抗碳膜技術(Carbon Membrane)。HT82B45R結合低功耗設計、彈性I/O配置、內(nèi)建L...

關鍵字: MCU USB 看門狗定時器
關閉