通用USB接口模塊設計之AVR單片機
以下給出了前臺主程序的程序代碼:以下為后臺中斷服務(wù)程序:
當前臺主程序檢測到狀態(tài)變量收到SETUP包事件bEvent_flags.bits.setup_packet為1時(shí),該標志位清零,再調用標準設備請求模塊stdreq.c的control_handler()函數完成對USB設備的枚舉。
設計標準設備請求模塊,首先利用結構體定義USB枚舉所需的各種描述符,以供不同設備請求使用,其次編寫(xiě)11個(gè)標準的設備請求處理函數。本層請求模塊重要函數是協(xié)議控制子程序control han-dler(),它根據ControlData中標識的不同USB設備請求類(lèi)型調用11個(gè)函數中的任意一個(gè)。除此之外,本層請示求模塊還實(shí)現中斷服務(wù)程序調用的控制端點(diǎn)接收與發(fā)送中斷處理函數。上述各函數及ControlData變量間關(guān)系如圖4所示。
4 系統集成與應用
4.1 PC機驅動(dòng)程序與應用程序的設計
利用該系統模塊實(shí)現PC機通訊,需對PC機編寫(xiě)相關(guān)驅動(dòng)程序和應用程序,可利用DriverStudio軟件生成該系統模塊在Windows環(huán)境下的驅動(dòng)程序。應用程序的設計可使用諸如VB、VC、Delphi以及應用普遍的虛擬儀器軟件開(kāi)發(fā)工具LabVIEW等軟件開(kāi)發(fā)工具,直接調用驅動(dòng)程序生成的動(dòng)態(tài)鏈接庫中的API函數,可根據具體任務(wù)編寫(xiě)相關(guān)應用程序。
4.2 應用于其他系統
利用AVR單片機的多種外設接口特點(diǎn),例如UART、SPI、I2C接口等可以有效地實(shí)現與其他微處理器的通信,將該模塊嵌入各種系統,實(shí)現與其他器件的通訊。固件程序中預留有UART、SPI、I2C等接口程序,只需通
4.3 固件程序移植其他平臺
由于固件程序最大限度考慮到可移植性,所以將固件程序稍加修改即可應用于各種已擁有C語(yǔ)言編譯器的微處理器,實(shí)現PDIUSBD12直接與微處理器的通訊。
移植固件程序主要工作有:根據硬件連接關(guān)系,修改硬件抽象層中的3個(gè)讀寫(xiě)函數,實(shí)現CPU與器件之間的通信;通過(guò)調用PDIUSBD12命令接口層的讀取芯片ID函數返回值是否為0x1012,測試CPU與器件之間的通訊是否正常。
5 在數據采集器中的應用
由于A(yíng)Tmega8片內集成有逐次比較型ADC,具有6路的模擬輸入通道,所以只需要針對采集的物理量選用相應傳感器,并將輸出信號調整至0~Vcc的范圍內就可利用該模塊實(shí)現USB數據采集器。AVR單片機集成有ADC自帶采樣保持電路,具有內部參考電壓和基于睡眠模式的噪聲抑制器,從而大大提高ADC精度,實(shí)現高精度的數據采集。而設計只需在相應的固件程序巾增加獲取ADC結果的函數,并設置相應的狀態(tài)標志位即可完成USB數據采集器的設計。
6 結束語(yǔ)
以ATmega8和PDIUSBD12為核心,實(shí)現通用的USB接口模塊設計,并應用于基于USB接口的數據采集器中。實(shí)驗結果表明,該USB接口模塊運行穩定可靠,通信速度快,易于修改移植,滿(mǎn)足嵌人式系統對USB接口的需求,并能快速為各種微處理器增加USB接口,具有廣泛的應用前景。
過(guò)簡(jiǎn)單的跳線(xiàn)連接就可選擇相應的接口,從而實(shí)現應用系統增加USB接口。
評論