基於USB總線和89C51單片機的數據採集系統設計

2020-12-06 電子產品世界

摘要:本文介紹了基於USB總線的數據採集設備的開發方法,包括硬體設計、firmware(固件)設計、基於windows驅動程序模型(WDM)的設備驅動程序設計以及應用軟體的設計,同時也介紹了基於USB的遠程數據採集系統。

關鍵詞:通用串行總線數據採集單片機

在工業生產和科學技術研究過程的各行業中,常常要對各種數據進行採集,現在常用的採集方式是在PC機或工控機內安裝數據採集卡,如A/D卡及RS-422卡、RS-485卡。採集卡不僅安裝麻煩,易受機箱內環境的影響,而且由於受計算機插槽數量和地址、中斷資源的限制,不可能掛接很多設備。而通用串行總線(Universal Serial Bus,簡稱USB)的出現能很好地解決以上這些衝突。我們利用89C51單片機設計了基於USB總線的數據採集設備,並可與MAX485結合起來實現數據的遠程採集。

系統硬體設計
USB數據採集系統硬體模塊主要由串行A/D轉換器、89C51晶片、USB接口晶片和多路模擬開關等組成。硬體總體結構框圖如圖1所示。
USB接口晶片採用National Semiconductor公司的一種專用晶片USBN9602。該晶片內部集成微處理器接口、 FIFO存儲器、時鐘發生器、串行接口引擎(SIE)、收發器、電壓轉換器,支持DMA、微波接口。
多路模擬輸入信號經多路模擬開關控制將其中的一路接入串行A/D轉換器,A/D轉換器經光電隔離後串行輸出到移位寄存器,移位寄存器將此結果轉為8位並行數據,89C51系統通過8位的並行接口傳送A/D轉換器採集的數據,存儲在FIFO存儲器中;一旦FIFO存滿,SIE立刻對數據進行處理,然後89C51系統將數據從FIFO存儲器中讀出,由收發器通過數據線(D+、D-)送至主機。 USBN9602與89C51的具體接口電路如圖2所示。圖中USBN9602的CLKOUT與89C51的XTAL1相連,即USBN9602的時鐘輸出為89C51提供時鐘輸入。USBN9602的復位端接RC電路以保證復位電路可靠地工作。由於晶振頻率較高,結合USBN9602內部網絡,在XOUT端串接100mF電容及470mH電感,起穩定內部振蕩頻率的作用。

圖1 硬體總體結構框圖

系統軟體設計
系統軟體包括設備固件、 USB設備驅動程序和應用程式。
設備固件(firmware)設計
此處固件是指固化到89C51E2PROM中的程序,其主要功能是: (1)控制A/D轉換器的採樣。(2)控制晶片USBN9602接受並處理USB驅動程序的請求及應用程式的控制指令。現主要介紹89C51系統如何控制USB控制器(USBN9602)與主機的通信。
89C51系統對USB控制器的操作是嚴格按照USB協議1.1進行的,按照USB協議1.1的規定,USB傳輸方式分為4種:控制傳輸,塊傳輸,同步傳輸和中斷傳輸。在實際開發中使用了控制傳輸和塊傳輸。控制傳輸主要用來完成主機對設備的各種控制操作,也就是用來實現位於主機上的USB總線驅動程序(USBD.SYS)以及編寫的功能驅動程序對設備的各種控制操作。塊傳輸主要用來完成主機和設備間的大批量數據傳輸以及對傳輸數據進行錯誤檢測(若發生錯誤,它支持「重傳」功能)。
89C51系統控制USB控制器的工作過程可以簡單地概括為:當USB控制器從USB總線檢測到主機啟動的某一傳輸請求後,通過中斷方式將此請求通知89C51系統,89C51系統通過訪問USB控制器的狀態寄存器和數據寄存器獲得與此次傳輸有關的各種參數,並根據具體的傳輸參數,對USB控制器的控制寄存器和數據寄存器進行相應的操作,以完成主機的傳輸請求。
USB設備驅動程序設計
USB系統驅動程序的設計是基於WDM(Windows driver model 驅動程序模型)的。WDM採用分層驅動程序模型(見圖3所示),分為較高級的USB設備驅動程序和較低級的USB函數層。其中USB函數層由兩部分組成:較高級的通用串行總線模塊(USBD)和較低級的主控制器驅動程序模塊(HCD)。
在上述USB分層模塊中,USB函數層由Windows98提供,負責管理USB設備驅動程序和USB控制器之間的通信,加載及卸載USB驅動程序,與USB設備通用端點(endpoint)建立通信來執行設備配置、數據與USB協議框架和打包格式的雙向轉換任務。
目前Windows98提供了多種 USB設備驅動程序,但並不針對數據採集設備,因此需用DDK開發工具設計專用的USB設備驅動程序。在本設計中由四個模塊實現:初始化模塊、即插即用管理模塊、電源管理模塊以及I/O功能實現模塊。

圖2 USBN9602與89C51接口電路

圖3 USB系統驅動程序層次關係

圖4 應用程式主流程圖

初始化模塊提供一個入口函數DriverEntry(),所有對各種IRP(I/O Request Packet,IRP請求包)的處理例程都在此入口函數中做出定義。
即插即用管理模塊實現USB設備的熱拔插及動態配置。當硬體檢測到USB設備接入時,Windows98查找響應的驅動程序,並調用它的DriverEntry例程,PnP(即插即用)管理器調用驅動程序的AddDevice例程,告訴它添加了一個設備;在此處理過程中,驅動程序收到一個設備啟動請求(IRP_MN_START_DEVICE)的IRP。同理,當要拔除時,PnP管理器會發出一個設備刪除請求(IRP_MN_REMOVE_DEVICE)的IRP,由驅動程序進行處理。通過對這些PnP請求的處理,可支持設備的熱插拔和即插即用功能。
電源管理模塊負責設備的掛起與喚醒。
I/O功能實現模塊完成I/O請求的大部分工作。若應用程式想對設備進行I/O操作,它便使用Windows API函數,對WIN32子系統進行WIN32調用。此調用由I/O系統服務接收並通知I/O管理器,I/O管理器將此請求構造成一個合適的I/O請求包(IRP)並把它傳遞給USB設備驅動程序,USB設備驅動程序接收到這個IRP以後,根據IRP中包含的具體操作代碼,構造相應的USB請求塊並把此URB(USB請求塊)放到一個新的IRP中,然後把此IRP傳遞到USB總線驅動程序,USB總線驅動程序根據IRP中所含的URB執行相應的操作(如從USB設備讀取數據等),並把操作結果通過IRP返還給USB設備驅動程序。USB設備驅動程序接收到此IRP後,將操作結果通過IRP返還給I/O管理器,最後I/O管理器將此IRP中操作結果返還給應用程式,至此應用程式對USB設備的一次I/O操作完成。
應用程式設計
用戶態的應用程式是數據採集系統的中心,其主要功能為:開啟或關閉USB設備、檢測USB設備、設置USB數據傳輸管道、設置A/D狀態和數據採集埠、實時從USB接口採集數據、顯示並分析數據。應用程式主流程圖如圖4所示。
由於USBN9602提供的FIFO不超過64位元組,當它存滿後,USBN9602自動將數據打包即時請求讀入數據,由SIE自動發送數據包。另外,當系統啟動A/D模塊後,便會創建兩個線程:採樣線程和顯示存檔線程。採樣線程負責將採集數據寫到應用程式提交的內存;而顯示存檔線程負責給應用程式發送顯示和存檔消息。當應用程式接收到此消息後,便從它提交的內存中讀取數據並顯示和存檔。此處需要注意的是採樣線程和顯示存檔線程在讀寫應用程式提交的內存時要保持同步。

遠程數據採集系統設計
傳輸距離是限制USB在工業現場應用的一個障礙,即使增加了中繼或Hub,USB傳輸距離通常也不超過幾十米,這對工業現場而言顯然太短了。現在工業現場有大量採用RS-485傳輸數據的採集設備,其優點主要為傳輸距離可達到1200米以上,並且可以掛接多個設備,但傳輸速度慢,且需要板卡支持,安裝麻煩。但將RS-485與USB結合起來就可以優勢互補,產生一種快速、可靠、低成本的遠程數據採集系統。
設計這樣一個系統的關鍵設備是RS-485~USB轉換器,可以採用USBN9602+89C51+ MAX485實現這一功能,整個系統的基本思想是:將傳感器採集到的模擬量數位化以後,利用RS-485協議將數據上傳,上述RS-485~USB轉換器在主機端接收485的數據並通過USB接口傳輸至主機進行處理,而主機向USB發送數據時,數據通過RS—485~USB轉換口轉換為485協議向遠端輸送,從而能夠實現遠程數據的雙向傳輸。如圖5所示。
軟體方面的設計跟前所述類似。

圖5 採用USB和485實現遠距離數據傳輸
結語
基於USB外設的應用目前在國內外處於高速發展階段,利用USB進行數據採集和工業控制已得到成功應用,特別是隨著USB協議2.0的推出,數據傳輸速率高達480Mbps,如此高的傳輸速率必將使USB在數據採集中的優勢更加體現出來,同時會使其在更廣闊的領域得到更深層次的應用。

參考文獻
1 張念淮,江浩.USB總線接口開發指南.北京:國防工業出版社.2002
2 李朝青.PC機及單片機數據通信技術.北京:北京航空航天出版社.2000
3 原嵩,林滸.通用串行總線的原理及實現. 小型微行計算機系統.1999(5)
4 徐有青,餘勝生.通用串行總線設備接口的設計.電子計算機與外部設備.1998(5)


相關焦點

  • 基於CPLD和ISA總線的數據採集系統設計
    摘要:介紹一種基於複雜可編程邏輯器件(CPLD)的數據採集系統,並給出詳細的設計方案。計算機通過ISA總線實現與數據採集系統的指令和數據傳輸。通過VHDL編程實現CPLD對12位串行模數轉換器ADS7816的控制。最後,給出該系統設計的仿真波形和測試結果。
  • 基於RS485總線的溫溼度監控系統設計
    下位單片機通過TTL/RS-485通訊接口電路與總線網絡相連接構成半雙工主從式串行通訊網絡,實現下位機通過串行口與上位機交換數據。下位機是一個相對獨立的智能型區域數據丈量與控制子系統,當監控主機與下位單片機之間的通訊發生故障時,各下位機仍可獨立完成相關區域的數據採集、告警和控制功能。
  • 總線式原油盤庫數據採集子系統的設計
    摘要:目前勝利油田濱南採油廠原油盤庫系統的自動化程度較低。為大力提高其自動化水平,本文根據該採油廠各聯合站分散採集、集中監視的特點,設計了基於RS-485總線和主從單片機結構的數據採集子系統方案。本文就是以濱南採油廠為背景,在其實際應用盤庫系統的基礎上,參考了國內外一些油田聯合站的盤庫方案,設計開發了一套基於RS-485總線和主從單片機結構的原油自動化盤庫數據採集子系統。1 研究背景濱南採油廠現有的原油盤庫系統是以基於瀏覽器和客戶端軟體的方式進行原油生產數據的採集、傳輸及處理。
  • 基於C167單片機和CAN總線實現數位化電梯控制系統的設計
    基於C167單片機和CAN總線實現數位化電梯控制系統的設計 李炳宇,梁正峰,趙 發表於 2020-12-04 09:55:04 1 引言 國民經濟的飛速發展
  • 基於C8051F040單片機的CAN總線和RS-232串口通信設計
    為了實現對CAN總線和RS-232串口雙向通信需求,提出了一種基於C8051F040單片機的數據通信方案,並完成系統設計。分析了CAN總線和RS-232串口的通信特點,介紹了單片機硬體,並對軟體的設計思路與流程做了詳盡描述,完成功能檢測。實驗結果表明,該設計達到了要求。
  • 基於單片機和CPLD的PLC背板總線協議接口晶片設計(一)
    摘要:設計了一組基於CPLD的PLC背板總線協議接口晶片,協議晶片可以區分PLC的背板總線的周期性數據和非周期性數據。詳細介紹了通過Verilog HDL語言設計狀態機、協議幀控制器、FIFO控制器的過程,25MHz下背板總線工作穩定的試驗結果驗證了協議晶片設計的可行性。  可編程邏輯控制器(PLC)主機是通過背板總線支持擴展模塊的連接, 背板總線是PLC 主機同I/O擴展模塊之間的高速數據通路,支持主機和擴展模塊之間的I/O 數據刷新。
  • 基於USB總線的多路電話錄音系統的設計
    設計一種基於USB接口技術的電話錄音系統,不僅充分利用USB規範的各種優越條件,很好地解決了上述問題,而且具有支持即插即用、使用方便的功能,市場前景廣闊。  本文闡述一種基於USB總線的多路電話錄音系統的實現方法,錄音系統採用高性能的混合信號微控制器晶片C8051F320作為控制器內核。
  • 嵌入式系統USB接口的虛擬示波器設計
    嵌入式系統的發展使得基於嵌入式微處理器和實時作業系統的嵌入式虛擬儀器能夠滿足惡劣工作環境下的便攜虛擬儀器的需要。同時,基於USB總線的儀器設備克服了現有PC總線虛擬儀器的不足,可滿足自動化工業測量的要求,特別適合現場信號的測試。
  • 基於單片機和CAN總線技術實現雙電源雙風機保護系統的設計
    基於單片機和CAN總線技術實現雙電源雙風機保護系統的設計 李澤焱,牟龍華, 發表於 2020-03-24 07:44:00 引 言
  • 採用複雜可編程邏輯器件與ISA總線相結合實現數據採集系統設計
    採用複雜可編程邏輯器件與ISA總線相結合實現數據採集系統設計 電子設計 發表於 2018-12-30 09:33:00 數據採集是工業測量和控制系統中的重要部分
  • 基於單片機的氣壓式高度計設計
    摘要:採用集成度高的壓阻式矽氣壓傳感器,運用模塊化設計方法完成了基於C8051F353單片機的數字式氣壓高度傳統的氣壓傳感器信號調理電路校準和補償電路複雜,穩定性差,不能直接用於計算機數位化處理,也不便於在可攜式設備中集成。本氣壓式高度測量系統使用微型壓阻式傳感器,通過對靜壓的測量,經過模/數變換後由單片機進行數字濾波,函數解算出載體當前的絕對高度,具有較高精度和抗幹擾能力。
  • 基於單片機的大型LED顯示系統設計
    基於單片機的大型LED顯示系統設計 佚名 發表於 2020-03-08 13:38:00 隨著平板顯示技術的不斷更新,大型LED顯示系統利用發光二極體構成的點陣模塊或像素單元組成大面積顯示屏
  • 基於PROFIBUS總線的渦輪增壓器生產線數據採集系統介紹
    該標準為供應商和用戶的投資提供了最佳的保護並確保供應商的獨立自主性。PROFIBUS具體規定了串行現場總線的技術和功能特性,它可使分散式數位化控制器從現場底層到車間及網絡化。PROFIBUS分為主設備(主站)和從設備(從站)。主站決定總線上的數據通信。當主站得到總線控制權時,不用外界請求就可以主動發送信息。從站為外圍設備,典型的從站包括:輸入/輸出裝置、閥門、驅動器和測量變送器。
  • 一種應用於虛擬示波器的雙通道數據採集系統設計
    虛擬儀器最大的特點在於其功能的可重構性和應用的靈活性,使用者可以通過修改軟體來方便地修改、增減儀器的功能,提高了儀器的使用效率,降低了成本。利用虛擬儀器技術只需配備必要的數據採集硬體,不僅可以實現傳統示波器的各項功能,而且還具有存儲、回放等特點。 鑑於虛擬示波器的各種優點和廣泛用途,研製出性能優越的虛擬示波器具有重要的實際應用價值。
  • 單片機應用系統的可靠性設計
    單片機應用系統的設計包括功能性設計、可靠性設計和產品化設計。其中,功能性是基礎,可靠性是保障,產品化是前途。因此,從事單片機應用系統開發工作的設計人員必須掌握可靠性設計。單片機應用系統是當前最典型、最廣泛的現代電子系統。 現代電子系統的可靠性表現為,在規定條件下,系統準確無誤運行的能力.突出了可靠性的軟體和運行中的失誤概率。 可靠性設計則是在產品開發過程中,保證運行可靠的全部設計手段,甚至包括了產品出廠後軟體升級中的可靠性設計。
  • 基於TMS320F2812和USB100的CAN-USB總線通信系統設計[圖]
    摘要:介紹了一種基於DSP的CAN控制器和USB晶片的USB總線和CAN總線的通信模塊的設計,提出了一種使用USB接口實現CAN總線網絡與計算機連接的方案。利用USB100晶片可在不了解任何USB協議的情況下,完成計算機RS 232串口升級為USB接口,同時CAN接口採用DSP片上CAN控制器,硬體設計極為簡單。
  • 用TMS320C6711DSK構成的多通道數據採集系統
    摘要 基於TI公司的TMS320C6711DSK開發一種多路高速數據採集系統,可用於電力系統中對三相電壓、三相電流進行的高速同步採樣
  • AT89C51單片機數字電子鐘的設計
    一、 設計目的與要求設計目的:通過設計,培養運用已學知識解決實際問題的能力、查閱資料的能力、自學能力和獨立分析問題、解決問題的能力和能通過獨立思考。設計要求:設計一個時、分可調的數字電子鐘、斷電後將數據保存,開啟後時間將從斷電後時間繼續行走。二、 設計內容與方案制定具有校時功能,按鍵控制電路其中時鍵、分鍵六個鍵分別控制時、分時間的調整。
  • 基於51單片機的TFT液晶顯示設計
    用51單片機驅動液晶模塊通常都使用1602和12864等極為簡單的液晶模塊, 這裡介紹用51單片機驅動QVGA解析度的TFT液晶模塊, 以實現彩色和更為複雜的內容顯示的方法。同時, 本文還將使用DS1302晶片和DS18B20晶片來實現在液晶屏上顯示實時時鐘和溫度。
  • 基於LIN總線的電動車窗控制器設計
    根據美國SAE(汽車工程師協會)劃分的汽車數據傳輸分類,汽車車窗控制系統屬於A類的面向傳感器/執行器控制的低速網絡。數據傳輸位速率通常只有1 b/s~10 kb/s。而在這種速率上採用LIN總線方式的網絡控制,正好可以滿足其要求,並且LIN總線能節省大量的線束、便於維護和實現汽車診斷功能。本文提出了一種將LIN總線運用到車窗控制系統中的設計方案,並給出系統硬體及軟體的實現方法。