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