基于C8051F320的數(shù)據(jù)采集系統(tǒng)USB接口方案
C8051F320固件分為兩個(gè)部分:前臺主程序和后臺中斷服務(wù)程序(ISR)。在USB固件程序中,最重要的工作就是USB描述符的定義和USB傳輸中斷的處理。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è)備類型的識別和配置,客戶端驅(qū)動(dòng)程序通過這些信息來正確訪問設(shè)備并與其通信。本文在對C8051F320的配置中除了端點(diǎn)0外還用到了端點(diǎn)1和端點(diǎn)2,它們的描述符如表1所示。
USB傳輸中斷的處理也是一個(gè)重要的部分。傳輸中斷的處理由ISR和前臺主程序共同完成。這兩部分的數(shù)據(jù)交換通過事件標(biāo)志和數(shù)據(jù)緩沖區(qū)來實(shí)現(xiàn)[6]。當(dāng)C8051F320的USB引擎從主機(jī)收到一個(gè)數(shù)據(jù)包時(shí),就會產(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的程序流程與之類似。
4數(shù)據(jù)的接收和顯示
在主機(jī)中安裝基于C8051F320USB設(shè)備的驅(qū)動(dòng)程序(可以在新華龍網(wǎng)站上下載)之后,該設(shè)備就會被默認(rèn)成該主機(jī)的一個(gè)串口,因此在主機(jī)的處理中可以將它當(dāng)作一個(gè)虛擬的串口進(jìn)行處理,讀取其數(shù)據(jù)就如讀串口數(shù)據(jù)一樣方便,很快就能夠建立快速通信平臺。主機(jī)軟件采用VC++開發(fā)的,串行通信部分采用API函數(shù)直接進(jìn)行編寫。它為應(yīng)用程序提供了通過串行接口收發(fā)數(shù)據(jù)的方法。主機(jī)軟件使用API文件函數(shù)進(jìn)行串口通信的控制。具體函數(shù)以及使用,可以查閱MSDN。將基于C8051F320的USB接口電路應(yīng)用到倉庫視頻監(jiān)控系統(tǒng)中,其系統(tǒng)結(jié)構(gòu)框圖如圖5所示。
5結(jié)束語
本文利用C8051F320速度快、處理能力強(qiáng)、結(jié)構(gòu)簡單等特點(diǎn),設(shè)計(jì)了一種基于C8051F320的數(shù)據(jù)采集系統(tǒng)USB接口方案,給出了USB接口電路具體的設(shè)計(jì)方法,并對主機(jī)的數(shù)據(jù)和顯示進(jìn)行了開發(fā)。將設(shè)計(jì)的USB接口應(yīng)用到倉庫視頻監(jiān)控系統(tǒng)中,能夠?qū)崿F(xiàn)快速、方便的數(shù)據(jù)傳輸,數(shù)據(jù)通信能達(dá)到上兆的傳輸速率,滿足了實(shí)時(shí)、快速傳遞數(shù)據(jù)的要求。
評論