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