基於 C8051F 的智能測量系統
| [日期:2008-11-20] |
來源:無憂電子開發網 作者:潘波,曹國榮 |
[字型:大 中 小] |
1 引言
智能測量在各行各業已得到廣泛的應用[1][2][3],測量所得到的資料可以通過串口或經外部的 USB 橋接器橋接後經 USB 口與上位機交換資料[2] [3][4]。如果單片機本身已整合了 USB通訊模組,這將大大降低系統成本,提高系統的可靠性。本系統正是基於此而選用 C8051F34x 晶片,它是 Silicon Laboratories 公司最新推出的一款可提供 USB 功能的混合訊號微控制器 的高度整合產品[1],包含了高速管線的 8051 相容微控制器核心,可以在高達 48 MIPS 的速率下工作,它提供 64 KB 的晶片內建快閃記憶體以及 5376 位元組的 RAM,其中 70%的指令可以在一個或兩個機器周期中執行,並獲得同等級中最佳的 CPU 傳輸率;USB 功能控制器具有完整的 USB 2.0 認證,支援全速與低速操作並包含 8 個端點管線;類比外設包含一個真正 10位 200 ksps 差分或單端 ADC,可以支援高達 17 個外部類比輸入;時序功能可以通過 4 個通用型 16 位定時器或一個 5 通道的可程式化計數器/定時器陣列(PCA)來實現,在此有 5 個全功 能連接埠可以提供 40 個可控制的 I/O 引腳(5 個 8 位口)。
圖 1 系統結構框圖
智能資料擷取系統包括:步進電機控制、資料擷取、資料轉送、資料處理等部分(1 所示)。為了進一步提高系統的可靠性和降低成本,本文提出了採用片上系統(SOC)的解決方案——基於 C8051F340 的智能測量模組,該模組接收上位機的指令來控制步進電機的動 作,對感應器送來的訊號進行 A/D 轉換,向上位機傳送測量資料。
2 模組的工作原理和功能
智能測量模組的核心是片上系統(SOC),即 C8051F340 單片機,它具有 USB 通訊連接埠和 A/D 轉換模組。通過應用 C8051F340 內含的數字連接埠實現對步進電機的控制,A/D 模組 對類比輸入端的訊號進行資料擷取,通過晶片中的 USB 連接埠與上位機進行資料交換。採用C8051F340 單片機後,可以充分利用晶片的內部資源,從而節約系統成本。
2.1 步進電機控制功能
步進電機的控制量為時鐘脈衝、啟、停和方向控制訊號。在實際應用中啟、停訊號和方 向控制訊號相對來說比較簡單,只要向指定的數字連接埠輸出高、低電平就能控制步進電機的啟動、停止、正向和逆向轉動。 步進電機所需的時鐘脈衝則要通過對片內定時器進行編程,使用定時中斷在指定的數字連接埠輸出脈衝訊號。C8051F340 內含的定時器 2 是一個 16 位的計數器/定時器(見圖 2),由兩個 8 位的 SFR 組成:TMR2L(低位元組)和 TMR2H(高位元組)。定時器 2 可以工作在 16 位自動 重裝載方式、8 位自動重裝載方式(兩個 8 位定時器)或 USB 幀起始(SOF)捕捉方式。當T2SPLIT =“0”且 T2SOF =“0”時,定時器 2 工作在自動重裝載的 16 位定時器方式。
圖 2 定時器 2 的 16 位方式原理圖
定時器 2 可以使用 SYSCLK、SYSCLK/12 或外部振蕩器時鐘/8 作為時鐘源。當 16 位定 時器寄存器發生溢出(從 0xFFFF 到 0x0000)時,定時器 2 重載寄存器(TMR2RLH 和 TMR2RLL) 中的 16 位計數初值被自動裝入到定時器 2 寄存器對 TMR2H:TMR2L,並將定時器 2 高位元組 溢出標誌 TF2H 置“1”。如果定時器 2 中斷被允許,每次溢出都將產生中斷。在定時器 2 的中斷服務程式中,可根據上位機下達的指令,對中斷次數進行計數。當中 斷次數達到指定數值時立即改變指定連接埠的數值(0 變 1、1 變 0),從而就能在該數字連接埠產 生一個指定脈寬的脈衝訊號。智能測量模組採用 C8051F340 片內振蕩器(12MHz)產生的 SYSCLK/12 作為定時器的時鐘源,數字連接埠設定為推挽輸出,當重載寄存器的值為 0xFF64 時能在數字連接埠輸出最高為3205Hz 的方波。由於所選用的晶片是低電壓、低功耗的高速器件,有時還存在著數字連接埠與步進電機控制電路之間訊號電平的匹配問題,為此可選用相應的電平轉移電路來解決。
2.2 資料擷取和處理功能
C8051F340 內部有一個 10 位 SAR ADC 和一個差分輸入多路選取器。該 ADC 工作在200ksps 的最大採樣速率時可提供真正 10 位的線性度。ADC 系統包含一個可程式化的類比多 路選取器,用於選擇 ADC 的正輸入和負輸入以及測量訊號源。A/D 轉換可以有 6 種啟動方式:軟體命令、定時器 0 溢出、定時器 1 溢出、定時器 2 溢出、定時器 3 溢出或外部轉換啟動訊號。這種靈活性允許用軟體事件、周期性訊號(定時器溢出)或外部硬體訊號觸發轉換。 一個狀態位用於指示轉換完成,或產生中斷(如果被允許)。轉換結束後 10 位結果資料字被鎖存到 ADC 資料寄存器,即 ADC0H 和 ADC0L 中(見圖 3)。
圖3 10位ADC電路圖
智能測量模組在資料擷取時,GND 被選擇為負輸入,則 ADC0 工作在單端方式,轉化 碼為 10 位不帶正負號的整數,所測量的輸入訊號範圍為 0 ~VREF×1023/1024。VREF 為 A/D 轉換 時的參考電壓,可用片內提供的基準電壓。轉換資料在寄存器對 ADC0H:ADC0L 中的儲存 方式可以是靠左對齊或靠右對齊,採用靠右對齊時測量結果的數值範圍為 0 ~0x3FF。向 AD0BUSY 寫“1”方式提供了用軟體控制 ADC0 轉換的能力。AD0BUSY 位在轉換期間被置“1”,轉 換結束後複“0”。在定時器 2 的中斷服務程式中,可根據步進電機的工作模式和上位機的指令,確定步進 電機運動多少步後再啟動 A/D (AD0BUSY 寫“1”)——採集資料,並將資料儲存在快閃記憶體中。 對於被測訊號電平有嚴格的要求,前置放大器的輸出級可用運放 OP07 組成電壓跟隨電路,並在輸出端加裝限壓保護電路以保證單片機類比輸入端的安全。
2.3 資料通訊功能
C8051F340 整合了 USB 功能控制器,用於實現 USB 介面的外部裝置(C8051F340 不能作 USB 主裝置),USB 功能控制器和收發器具有完整的 USB 2.0 認證,支援全速與低速操作 並包含 8 個端點管線,控制端點(端點 0)總是作為雙向 IN/OUT 端點,其它端點被作為 3 對IN/OUT 端點管線,通訊速度可通過特殊功能寄存器 USB0XCN 中的 SPEED 位選擇,要使USB0 工作在全速方式,USB0 的時鐘必須為 48 MHz。當 USB 接收資料時,串列介面引擎SIE)在接收完一個完整的資料包後中斷處理器;相應的握手訊號由 SIE 自動產生。當發送 資料時,SIE 在發送完一個完整的資料包並且收到相應的握手訊號後中斷處理器。智能測量模組採用 C8051F340 片內振蕩器(12MHz)產生的 SYSCLK,經內建的 4 倍時鐘 乘法器產生 48MHz 時鐘,使 USB0 工作在全速方式。模組設定成通過端點 1 向上位機發送資料,端點 2 接收上位機送來的資料,USB 工作在中斷方式。
3 軟體設計及系統測試
模組通訊協議的三層結構模型為:物理層、資料連結層和應用程式層。物理層和資料連結層的功能包括各種通訊幀結構的組織和收發, 是由 SOC 本身實現的, 因此系統的開發將集中在應用程式層軟體的設計。
韌體程式主要包括初始化、主控程式和 3 個中斷服務程式。模組初始化部分就是要定義SOC 的工作頻率,定義類比、數字連接埠的輸入/輸出模式,定義 USB 中斷、定時器 2 中斷和A/D 中斷的工作模式;主控程式處理前台任務,主要是響應各類中斷和利用公用資料區進行資料交換;步進電機的控制、資料的採集和資料的通訊都將利用中斷服務程式在後台實現。
圖 5 上位機程式框圖
上位機程式採用 VC 可視化開發平台,對 USB 連接埠形成的通訊管道進行標準的讀寫操作,從而實現上位機與 C8051F340 的資料通訊,即時顯示現場參數、繪製圖形,並對現場參數進行系統分析。上位機程式採用主線程和輔線程協調工作模式, 可以降低主程式處理時間, 提高通訊效率。
對圖 1 所示的系統進行測試:分別對橢圓偏振片、圓偏振片組成的光路進行光強分布測試,步進電機由 C8051F 單片機控制,每秒鐘轉一圈測 200 個資料;PC 機通過 USB 口接收資料,並對資料進行分析和擬合,根據偏振片的不同組合,可得到圓形、橢圓形、腰果形等不同類型的圖形。
4 結束語
論文提出的基於 C8051F340 的智能測量系統由於採用小體積貼裝晶片,不必外接其它A/D 轉換和 USB 通訊介面器件,減小了整機的體積,提高了整機的性價比和可靠性。測試表明,該模組在實際檢測過程中能夠準確的提取被測對象的訊號特徵,各項指標都符合測試要求。
本文作者創新點:採用 Silicon Laboratories 公司最新推出的一款微控制器 C8051F340 為 智能測量系統的核心,因其可提供 USB 功能,集測量控制、資料擷取、資料通訊為一體,便於軟體開發,並減小了整機的體積,提高了整機的性價比和可靠性。