基于USB的便攜式硬度計數據通信的實現方法
便攜式硬度計USB數據通信系統結構如圖1所示。本文引用地址:http://www.104case.com/article/202479.htm
本方案選用微處理器ATmega128作為數據通信系統的控制器。
ATmega128為Atmel公司推出的8位AVR微處理器,具有很高的信價比,工作時最高速度可以達到16MIPS,128 KB的FLASH、4 KB的E2PROM,足夠滿足方案中數據暫存的需要,另外,ATmega128具有53個可編程輸入/輸出口,可擴展64 KB的外部存儲器,便于實現多點硬度值數據采集的硬件擴展。
在該系統中,MCU ATmega128承擔著數據采集和USB數據通信的雙重任務,主要完成采集多路數字量輸入、配合PC機控制USB通信電路完成硬件檢測、枚舉連接及數據的雙向傳輸;控制存儲電路完成數據的存取等控制功能。
本方案選用的USB芯片PDIUSBD12是Philips公司成熟且價格低廉的產品。片內集成了高性能USB接口器件、FIFO存儲器、收發器以及電壓調整器等,支持USB 2.O的全速模式。
為保證USB數據傳輸的效率,本方案采用離線測量,定量傳送的實現方式。按工藝流程將一組產品硬度測量值臨時存入MCU的存儲器中,再將MCU存儲器中的臨時數據打包通過USB發給PC機并存入主機數據庫,主機應用程序需要時對數據進行處理。
2 軟件系統實現
本方案要解決以下三個方面的工作:一是在MCU上設計USB固件程序;二是編寫上位機的USB驅動程序;三是實現上位機數據處理應用程序。
2.1 USB固件程序
固件設計主要完成設備枚舉、主機與設備的數據交換、設備端的數據處理和控制等工作,固件程序設計成前后臺模式,把設備端數據處理和控制作為MCU的前臺任務,枚舉及枚舉成功之后的USB數據交換放在后臺進行。實現設備與主機以最大的傳輸速率通信。
設計時將USB端口1和端口2定義為普通輸入/輸出類型,對應于PDIUSBD12的模式0。控制端口0完成響應USB標準請求的功能,輸入端口用于把數據采集電路采集并打包的硬度值數據送給USB主機,輸出端口接收USB主機發送的包。
PDIUSBD12從USB收到一個數據包,就對MCU產生一個中斷請求,MCU立即響應中斷,中斷服務子程序用來處理由PDIUSBD12引發的中斷,它將數據從PDIUSBD12的FIFO中取回到MCU存儲器中。各端點中斷處理程序如下:
在各端點的中斷處理程序中,MCU主要是通過對PDIUSBD12端點緩沖區寫入或讀取數據包來完成處理過程的,其流程如圖2和圖3所示。
評論