新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 通用USB接口模塊設(shè)計(jì)之AVR單片機(jī)

        通用USB接口模塊設(shè)計(jì)之AVR單片機(jī)

        作者: 時(shí)間:2013-12-07 來(lái)源:網(wǎng)絡(luò) 收藏

        以下給出了前臺(tái)主程序的程序代碼:以下為后臺(tái)中斷服務(wù)程序:通用USB接口模塊設(shè)計(jì)之AVR單片機(jī)

        當(dāng)前臺(tái)主程序檢測(cè)到狀態(tài)變量收到SETUP包事件bEvent_flags.bits.setup_packet為1時(shí),該標(biāo)志位清零,再調(diào)用標(biāo)準(zhǔn)設(shè)備請(qǐng)求模塊stdreq.c的control_handler()函數(shù)完成對(duì)USB設(shè)備的枚舉。

        設(shè)計(jì)標(biāo)準(zhǔn)設(shè)備請(qǐng)求模塊,首先利用結(jié)構(gòu)體定義USB枚舉所需的各種描述符,以供不同設(shè)備請(qǐng)求使用,其次編寫(xiě)11個(gè)標(biāo)準(zhǔn)的設(shè)備請(qǐng)求處理函數(shù)。本層請(qǐng)求模塊重要函數(shù)是協(xié)議控制子程序control han-dler(),它根據(jù)ControlData中標(biāo)識(shí)的不同USB設(shè)備請(qǐng)求類(lèi)型調(diào)用11個(gè)函數(shù)中的任意一個(gè)。除此之外,本層請(qǐng)示求模塊還實(shí)現(xiàn)中斷服務(wù)程序調(diào)用的控制端點(diǎn)接收與發(fā)送中斷處理函數(shù)。上述各函數(shù)及ControlData變量間關(guān)系如圖4所示。通用USB接口模塊設(shè)計(jì)之AVR單片機(jī)

        4 系統(tǒng)集成與應(yīng)用

        4.1 PC機(jī)驅(qū)動(dòng)程序與應(yīng)用程序的設(shè)計(jì)

        利用該系統(tǒng)模塊實(shí)現(xiàn)PC機(jī)通訊,需對(duì)PC機(jī)編寫(xiě)相關(guān)驅(qū)動(dòng)程序和應(yīng)用程序,可利用DriverStudio軟件生成該系統(tǒng)模塊在Windows環(huán)境下的驅(qū)動(dòng)程序。應(yīng)用程序的設(shè)計(jì)可使用諸如VB、VC、Delphi以及應(yīng)用普遍的虛擬儀器軟件開(kāi)發(fā)工具LabVIEW等軟件開(kāi)發(fā)工具,直接調(diào)用驅(qū)動(dòng)程序生成的動(dòng)態(tài)鏈接庫(kù)中的API函數(shù),可根據(jù)具體任務(wù)編寫(xiě)相關(guān)應(yīng)用程序。

        4.2 應(yīng)用于其他系統(tǒng)

        利用的多種外設(shè)接口特點(diǎn),例如UART、SPI、I2C接口等可以有效地實(shí)現(xiàn)與其他微處理器的通信,將該模塊嵌入各種系統(tǒng),實(shí)現(xiàn)與其他器件的通訊。固件程序中預(yù)留有UART、SPI、I2C等接口程序,只需通

        4.3 固件程序移植其他平臺(tái)

        由于固件程序最大限度考慮到可移植性,所以將固件程序稍加修改即可應(yīng)用于各種已擁有C語(yǔ)言編譯器的微處理器,實(shí)現(xiàn)PDIUSBD12直接與微處理器的通訊。

        移植固件程序主要工作有:根據(jù)硬件連接關(guān)系,修改硬件抽象層中的3個(gè)讀寫(xiě)函數(shù),實(shí)現(xiàn)CPU與器件之間的通信;通過(guò)調(diào)用PDIUSBD12命令接口層的讀取芯片ID函數(shù)返回值是否為0x1012,測(cè)試CPU與器件之間的通訊是否正常。

        5 在數(shù)據(jù)采集器中的應(yīng)用

        由于ATmega8片內(nèi)集成有逐次比較型ADC,具有6路的模擬輸入通道,所以只需要針對(duì)采集的物理量選用相應(yīng)傳感器,并將輸出信號(hào)調(diào)整至0~Vcc的范圍內(nèi)就可利用該模塊實(shí)現(xiàn)USB數(shù)據(jù)采集器。集成有ADC自帶采樣保持電路,具有內(nèi)部參考電壓和基于睡眠模式的噪聲抑制器,從而大大提高ADC精度,實(shí)現(xiàn)高精度的數(shù)據(jù)采集。而設(shè)計(jì)只需在相應(yīng)的固件程序巾增加獲取ADC結(jié)果的函數(shù),并設(shè)置相應(yīng)的狀態(tài)標(biāo)志位即可完成USB數(shù)據(jù)采集器的設(shè)計(jì)。

        6 結(jié)束語(yǔ)

        以ATmega8和PDIUSBD12為核心,實(shí)現(xiàn)通用的,并應(yīng)用于基于的數(shù)據(jù)采集器中。實(shí)驗(yàn)結(jié)果表明,該模塊運(yùn)行穩(wěn)定可靠,通信速度快,易于修改移植,滿(mǎn)足嵌人式系統(tǒng)對(duì)USB接口的需求,并能快速為各種微處理器增加USB接口,具有廣泛的應(yīng)用前景。

        過(guò)簡(jiǎn)單的跳線連接就可選擇相應(yīng)的接口,從而實(shí)現(xiàn)應(yīng)用系統(tǒng)增加USB接口。


        上一頁(yè) 1 2 下一頁(yè)

        評(píng)論


        相關(guān)推薦

        技術(shù)專(zhuān)區(qū)

        關(guān)閉
        主站蜘蛛池模板: 侯马市| 临澧县| 渭源县| 香河县| 涟水县| 綦江县| 英德市| 镇坪县| 嫩江县| 于都县| 招远市| 竹北市| 朔州市| 黄大仙区| 石家庄市| 晋城| 博湖县| 新平| 会理县| 南平市| 克什克腾旗| 临西县| 澄城县| 青川县| 延吉市| 栾城县| 沙坪坝区| 阳江市| 顺平县| 湖南省| 竹北市| 垫江县| 罗城| 武穴市| 海晏县| 菏泽市| 玉田县| 阳高县| 乌拉特中旗| 兴安盟| 新民市|