關(guān) 閉

新聞中心

EEPW首頁 > 工控自動(dòng)化 > 設(shè)計(jì)應(yīng)用 > 基于C8051F320的數(shù)據(jù)采集系統(tǒng)USB接口設(shè)計(jì)

基于C8051F320的數(shù)據(jù)采集系統(tǒng)USB接口設(shè)計(jì)

作者: 時(shí)間:2009-10-16 來源:網(wǎng)絡(luò) 收藏

固件分為兩個(gè)部分:前臺(tái)主程序和后臺(tái)中斷服務(wù)程序(ISR)。在 固件
程序中,最重要的工作就是 描述符的定義和 傳輸中斷的處理。
USB 描述符是USB 協(xié)議定義的一套描述設(shè)備功能和屬性的固定結(jié)構(gòu)的描述語言。
USB2.0 中的描述符包括設(shè)備描述符、配置描述符、接口描述符、端點(diǎn)描述符等8 種標(biāo)準(zhǔn)描
述符和其它一些非標(biāo)準(zhǔn)描述符。USB 主機(jī)通過USB 描述符完成設(shè)備類型的識(shí)別和配置,客
戶端驅(qū)動(dòng)程序通過這些信息來正確訪問設(shè)備并與其通信。本文在對 的配置中除
了端點(diǎn)0 外還用到了端點(diǎn)1 和端點(diǎn)2,它們的描述符如表1 所示。

本文引用地址:http://butianyuan.cn/article/202632.htm

USB 傳輸中斷的處理也是一個(gè)重要的部分。傳輸中斷的處理由ISR 和前臺(tái)主程序共同
完成。這兩部分的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實(shí)現(xiàn)[6]。當(dāng) 的USB 引
擎從主機(jī)收到一個(gè)數(shù)據(jù)包時(shí),就會(huì)產(chǎn)生一個(gè)中斷請求,C8051F320 立即響應(yīng)中斷,通過讀取
USB 功能控制器的三個(gè)中斷寄存器CMINT、IN1INT 和OUT1INT 來判斷中斷來源(USB
復(fù)位中斷、端點(diǎn)0 中斷、端點(diǎn)1 輸入中斷、端點(diǎn)2 輸出中斷),然后根據(jù)不同的中斷來源跳
入相應(yīng)的處理模塊以進(jìn)行不同的中斷處理,并在處理完畢后返回。其中,端點(diǎn)0 是每個(gè)USB
設(shè)備都必須支持的默認(rèn)控制傳輸端點(diǎn),主要用于主機(jī)對USB 設(shè)備的配置、狀態(tài)信息的獲取
和設(shè)備錯(cuò)誤的糾正等,它的中斷處理模塊由控制輸出和控制輸入兩部分組成。每次傳輸首先
由設(shè)置事務(wù)開始,然后根據(jù)設(shè)置事務(wù)數(shù)據(jù)不同的中斷來源跳入相應(yīng)的處理模塊以進(jìn)行不同的
中斷處理,并在處理完畢后返回。同時(shí)在ISR 中,固件將數(shù)據(jù)包從C8051F320 的USB 引擎
內(nèi)部緩沖區(qū)移到一個(gè)自定義的數(shù)據(jù)緩沖區(qū),并在隨后請求清零其內(nèi)部緩沖區(qū),以使其能夠繼
續(xù)接收新的數(shù)據(jù)包。然后返回到主循環(huán),檢查自定義緩沖區(qū)內(nèi)是否有新的數(shù)據(jù)并開始其它的
任務(wù)。由于這種結(jié)構(gòu),主循環(huán)只用檢查自定義緩沖區(qū)內(nèi)需要處理的新數(shù)據(jù),專注于新數(shù)據(jù)的
處理,而ISR 也能夠以最大速度進(jìn)行數(shù)據(jù)的傳輸。這樣,程序?qū)SB 的操作更加簡單,也
便于程序的維護(hù)。主程序和端點(diǎn)0 的控制傳輸程序流程分別如圖3、圖4 所示。端點(diǎn)1 和端
點(diǎn)2 的程序流程與之類似。



評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉