1 引言
隨著現(xiàn)代工業(yè)生產(chǎn)和科學研究對數(shù)據(jù)采集系統(tǒng)的要求日益提高,,傳輸速度,、糾錯能力和操作安裝的簡易性是人們進行采集數(shù)據(jù)時一直關(guān)注的問題,這使得數(shù)據(jù)通訊技術(shù)不可避免地成為了其中的關(guān)鍵技術(shù),,而數(shù)據(jù)采集系統(tǒng)采用何種接口進行數(shù)據(jù)通訊是影響系統(tǒng)整體效率的重要因素之一,。USB(通用串行總線)總線接口技術(shù)由于具有速度快、設備安裝和配置容易,、易于擴展,、能夠采用總線供電及使用靈活等優(yōu)點,,已逐漸成為現(xiàn)代數(shù)據(jù)傳輸?shù)陌l(fā)展趨勢[1-5]。本文給出了一種基于C8051F320的數(shù)據(jù)采集系統(tǒng)USB 接口設計方案,,完成了USB 接口硬件電路設計和軟件程序開發(fā),,并將其應用到倉庫視頻監(jiān)控系統(tǒng)中,實現(xiàn)了快速,、方便的數(shù)據(jù)采集和傳輸,。
2 C8051F320 單片機原理
2.1 C8051F320 的主要特點
C8051F320 是由美國Cygnal 公司推出的C8051F 系列單片機中的一款用于USB 設備的小型單片機。該器件內(nèi)部集成有2304 Byte RAM 和16K Byte 的Flash 存儲器,。由于利用該芯片進行設計時可以不需要任何外部元件(包括電阻和晶振),,因而是小型USB 應用的理想選擇。與其它同類USB 產(chǎn)品相比,,C8051F320 主要具有如下一些特點:
① 滿足 USB2.0 協(xié)議,;
② 可在全速(12 Mbps)或低速(1.5 Mbps)下運行;
③ 集成有一個時鐘源,,對于全速或低速傳輸均可不用外部晶振,;
④ 支持 8 個靈活通用的USB 端點;
⑤ 內(nèi)置一個 1K 的USB 專用緩沖存儲器,;
⑥ 集成了一個 USB 接收器,,不需要外部電阻。
⑦ 具有高速增強型 8051 MCU 內(nèi)核,,該MCU 內(nèi)核采用流水線式指令結(jié)構(gòu),,70%的指
令執(zhí)行時間為一個或兩個系統(tǒng)時鐘周期,處理速度可達25MIPS(時鐘頻率為25MHz 時),。此外,,C8051F320 還有許多其它特性,如支持在系統(tǒng)編程(ISP),,帶有可編程的數(shù)字I/O 和數(shù)字交叉開關(guān),,可提供全速、非侵入式的在系統(tǒng)片內(nèi)調(diào)試電路等,。
2.2 C8051F320 的引腳及封裝
C8051F320 的引腳排列如圖1 所示,,封裝為TQFP-32。其中VDD 為數(shù)字電源,;GND為模擬地,;REGIN 為5V 校準器的輸入端,;RST/C2CK 為設備的復位引腳或EC2 調(diào)試接口的時鐘信號,;P3.0/C2D 為端口P3.0 或EC2 調(diào)試接口的雙向信號引腳;VBUS 為USB 總線輸入腳,;D+為USB 的D+,;D-為USB 的D-,;P0.2/XTAL1 為端口0.2 或外部晶振輸入;
P0.3/XTAL2 為端口P0.3 或外部晶振輸出,;P0.6/CNVSTR 為端口P0.6 或ADC0 外部轉(zhuǎn)換開始輸入腳,;P0.7/VRFF 為端口P0.7 或外部參考電源的輸入端或輸出端;P0.0,、P0.1,、P0.4, P0.5、P1.0~P1.7,、P2.0~P2.7 均為相應的端口引腳,。
3 USB 接口電路設計
3.1 USB 接口硬件電路設計
由于 C8051F320 微控制器內(nèi)部集成了一個USB 接收器,簡單易用,,因此,,用它進行USB 接口的硬件設計也顯得比較簡單。主要包括兩部分的內(nèi)容,,一是接口轉(zhuǎn)換模塊供電方式的選擇,,二是USB 引腳的連接。圖2 是其USB 接口電路圖,。模塊選擇自供電模式,,圖2
所示的整個模塊的供電電源都來自外部5V 電源。C8051F320 中的USB 收發(fā)器內(nèi)部已經(jīng)集成了上拉電阻,,不需要任何外部器件就可直接與USB 接口相連,。
![]() |
3.2 USB 設備固件程序設計
USB 設備固件程序是USB 設備必須實現(xiàn)的部分,它的主要目的是:當USB 設備連接到主機上時,,主機可以發(fā)現(xiàn)新設備,,然后建立連接并完成數(shù)據(jù)傳輸任務,也就是能夠讓上位機能夠正常檢測和識別USB 設備,。因此,,本固件設計的目的是使主機能夠識別C8051F320 設備,以及正確的與它進行通信,。同時為了在USB 上達到最大的傳輸速度,,C8051F320 固件設計成中斷驅(qū)動。
![]() |
圖 2 USB 接口連接電路圖 |
C8051F320 固件分為兩個部分:前臺主程序和后臺中斷服務程序(ISR),。在USB 固件程序中,,最重要的工作就是USB 描述符的定義和USB 傳輸中斷的處理。 USB 描述符是USB 協(xié)議定義的一套描述設備功能和屬性的固定結(jié)構(gòu)的描述語言,。USB2.0 中的描述符包括設備描述符,、配置描述符、接口描述符,、端點描述符等8 種標準描述符和其它一些非標準描述符,。USB 主機通過USB 描述符完成設備類型的識別和配置,,客 戶端驅(qū)動程序通過這些信息來正確訪問設備并與其通信。本文在對C8051F320 的配置中除了端點0 外還用到了端點1 和端點2,。
USB 傳輸中斷的處理也是一個重要的部分,。傳輸中斷的處理由ISR 和前臺主程序共同完成。這兩部分的數(shù)據(jù)交換通過事件標志和數(shù)據(jù)緩沖區(qū)來實現(xiàn)[6],。當C8051F320 的USB 引擎從主機收到一個數(shù)據(jù)包時,,就會產(chǎn)生一個中斷請求,C8051F320 立即響應中斷,,通過讀取 USB 功能控制器的三個中斷寄存器CMINT,、IN1INT 和OUT1INT 來判斷中斷來源(USB 復位中斷、端點0 中斷,、端點1 輸入中斷,、端點2 輸出中斷),然后根據(jù)不同的中斷來源跳 入相應的處理模塊以進行不同的中斷處理,,并在處理完畢后返回,。其中,端點0 是每個USB 設備都必須支持的默認控制傳輸端點,,主要用于主機對USB 設備的配置,、狀態(tài)信息的獲取和設備錯誤的糾正等,它的中斷處理模塊由控制輸出和控制輸入兩部分組成,。每次傳輸首先由設置事務開始,,然后根據(jù)設置事務數(shù)據(jù)不同的中斷來源跳入相應的處理模塊以進行不同的中斷處理,并在處理完畢后返回,。同時在ISR 中,,固件將數(shù)據(jù)包從C8051F320 的USB 引擎內(nèi)部緩沖區(qū)移到一個定義的數(shù)據(jù)緩沖區(qū),并在隨后請求清零其內(nèi)部緩沖區(qū),,以使其能夠繼續(xù)接收新的數(shù)據(jù)包,。然后返回到主循環(huán),檢查自定義緩沖區(qū)內(nèi)是否有新的數(shù)據(jù)并開始其它的任務,。由于這種結(jié)構(gòu),,主循環(huán)只用檢查自定義緩沖區(qū)內(nèi)需要處理的新數(shù)據(jù),專注于新數(shù)據(jù)的 處理,,而ISR 也能夠以最大速度進行數(shù)據(jù)的傳輸,。這樣,程序?qū)SB 的操作更加簡單,,也便于程序的維護,。主程序和端點0 的控制傳輸程序流程分別如圖3、圖4 所示。端點1 和端點2 的程序流程與之類似,。
4 數(shù)據(jù)的接收和顯示
在主機中安裝基于 C8051F320 USB 設備的驅(qū)動程序(可以在新華龍網(wǎng)站上下載)之后,該設備就會被默認成該主機的一個串口,,因此在主機的處理中可以將它當作一個虛擬的串口進行處理,,讀取其數(shù)據(jù)就如讀串口數(shù)據(jù)一樣方便,很快就能夠建立快速通信平臺,。主機軟件采用 VC++開發(fā)的,,串行通信部分采用API 函數(shù)直接進行編寫。它為應用程序提供了通過串行接口收發(fā)數(shù)據(jù)的方法,。主機軟件使用API 文件函數(shù)進行串口通信的控制,。具體函數(shù)以及使用,可以查閱MSDN,。將基于 C8051F320 的USB 接口電路應用到倉庫視頻監(jiān)控系統(tǒng)中,,其系統(tǒng)結(jié)構(gòu)框圖如圖5 所示。
![]() |
5 結(jié)束語
本文利用C8051F320 速度快,、處理能力強,、結(jié)構(gòu)簡單等特點,設計了一種基于C8051F320 的數(shù)據(jù)采集系統(tǒng)USB 接口方案,,給出了USB 接口電路具體的設計方法,,并對主機的數(shù)據(jù)和顯示進行了開發(fā)。將設計的USB 接口應用到倉庫視頻監(jiān)控系統(tǒng)中,,能夠?qū)崿F(xiàn)快速,、方便的數(shù)據(jù)傳輸,數(shù)據(jù)通信能達到上兆的傳輸速率,,滿足了實時,、快速傳遞數(shù)據(jù)的要求。