王靜 鄭暉暉
摘 要:該文設(shè)計的頻率測量儀選用通用的集成前端處理電路,從超低功耗高精度著手,其核心控制模塊為當(dāng)前最新推出的微功耗ARM Cortex M0+處理器,主要是利用其多路高速定時器/計數(shù)器功能完成在單位時間內(nèi)頻率的計算工作,并利用信號整形和放大電路完成對待測信號的處理。測量得到的值,采用動態(tài)顯示的方式通過LED顯示器顯示出來。
關(guān)鍵詞:高精度 微功耗 頻率測量儀 ARM Cortex M0+
中圖分類號:TN 915.6 文獻(xiàn)標(biāo)識碼:A 文章編號:1672-3791(2015)09(c)-0055-02
隨著科學(xué)技術(shù)和計算機技術(shù)的快速發(fā)展,頻率的測量顯得越來越重要,測量頻率的方法也日趨多樣,在測量性能提升的同時,設(shè)計的成本與復(fù)雜度也不斷提高。而頻率測量儀器功能也從單一的頻率測量,變得更豐富。
該文所設(shè)計的頻率測量儀選用通用的集成前端處理電路,從超低功耗高精度著手,其核心控制模塊為當(dāng)前最新推出的微功耗ARM Cortex M0+處理器,主要是利用其多路高速定時器/計數(shù)器功能完成在單位時間內(nèi)頻率的計算工作,并利用信號整形和放大電路完成對待測信號的處理。測量得到的值,采用動態(tài)顯示的方式通過LED顯示器顯示出來。
1 基于Cortex M0+的功能模塊電路設(shè)計
Cortex M0+控制模塊、LED數(shù)碼管顯示器模塊、信號發(fā)生與調(diào)理模塊、計數(shù)模塊、電源模塊等構(gòu)成了數(shù)字顯示的頻率測量儀。
高精度頻率測量儀,需要自制信號源,并能夠正常輸出正弦波、方波、三角波,故選用精密函數(shù)發(fā)生器ICL8038。
該設(shè)計使用LED顯示電路,頻率計數(shù)顯示要精確到小數(shù)點后面2位,因此需要有4個LED顯示器,又綜合考慮CPU的處理速度和電源的使用效率等其它因素,該設(shè)計的頻率測量儀采用動態(tài)顯示方式,該設(shè)計的計數(shù)電路由74LS290構(gòu)成。
信號的放大、整形電路是將其他信號如正弦波、三角波信號轉(zhuǎn)換成脈沖信號,這個功能是靠施密特觸發(fā)器或者單穩(wěn)態(tài)觸發(fā)器來完成的。
該電路使用集成芯片LTC3638、CN302實現(xiàn)電源充放電的管理,對鋰電池進(jìn)行充電,鋰電池的飽和電壓為4.2 V。通過設(shè)置LTC3638的外圍電路將LTC3638的輸出電壓設(shè)置為4.2 V。
2 基于UC/OS II的嵌入式軟件設(shè)計
2.1 軟件設(shè)計規(guī)劃
2.1.1系統(tǒng)移植
該設(shè)計將在MCU中移植UC/OS II(Micro Control Operation System Two),進(jìn)行任務(wù)調(diào)度,實現(xiàn)實時2路頻率的測量、顯示。
2.1.2信號處理
頻率計開始工作以及頻率測量的過程,需要對程序進(jìn)行初始化操作。除了包含中斷控制初始化和定時器/計數(shù)器控制模式初始化過程外,還包括初始化堆棧指針(SP)和通用工作寄存器。
2.1.3中斷控制
中斷控制是當(dāng)CPU執(zhí)行相應(yīng)的程序,Cortex M0+接收到中斷源的中斷響應(yīng)信號,使Cortex M0+停止當(dāng)前任務(wù),執(zhí)行能夠引起響應(yīng)的中斷服務(wù)程序,當(dāng)中斷服務(wù)程序執(zhí)行完畢后,回到剛才暫停程序的位置,繼續(xù)執(zhí)行相應(yīng)的程序。
2.2 系統(tǒng)資源
Cortex M0+處理器采用了三級流水線的馮·諾伊曼結(jié)構(gòu)(Von Neumann architecture)。它是基于一個32位處理器的內(nèi)核,特點是集成度高、而且功耗非常低。
2.3 系統(tǒng)移植
2.3.1 Cortex M0+的啟動代碼
啟動代碼包括:初始化堆棧,初始化異常向量表,定義異常入口函數(shù)及復(fù)位異常響應(yīng)代碼。
2.3.2 Systick啟動
在移植系統(tǒng)之前,我們需要先啟動Systick異常,啟動的目的是為系統(tǒng)提供一個可以使系統(tǒng)能夠處理延時或者超時等與時間有關(guān)的事件的周期性的信號源。
(1)Systick使能與優(yōu)先級分配。
在內(nèi)核啟動之后,可進(jìn)行Systick異常的使能和優(yōu)先級分配。
(2)Systick異常處理函數(shù)。
Systick異常處理函數(shù)每次響應(yīng)時都調(diào)用了OSTimeTick。OSTimeTick做了兩件事情:一是給OSTime加1,二是將等待任務(wù)的剩余時間值減1,并將等待時間為0的任務(wù)進(jìn)入就緒狀態(tài),運行其最高優(yōu)先級任務(wù)。
2.3.3 OS初始化和啟動
在OS啟動時,需要根據(jù)內(nèi)核的不同進(jìn)行任務(wù)堆棧的初始化,多任務(wù)的啟動。
(1)任務(wù)堆棧初始化。
(2)多任務(wù)的啟動。
(3)MSP與PSP切換。
2.3.4 任務(wù)切換
(1)任務(wù)切換函數(shù)OSCtxSw。
任務(wù)切換函數(shù)OSCtxSw作用就是保存被中止運行任務(wù)的斷點和恢復(fù)待運行任務(wù)的斷點并啟動它。因此這個函數(shù)中主要是一系列的壓棧和出棧操作。
(2)中斷任務(wù)切換函數(shù)OSIntCtxSw。
OS在完成中斷服務(wù)程序后,并不一定回到被中斷的任務(wù),而是進(jìn)行一次中斷調(diào)度來決定是返回被中斷任務(wù)還是調(diào)用一個更高優(yōu)先級任務(wù)。而此刻函數(shù)OSIntCtxSw是用來完成任務(wù)切換工作。該函數(shù)一般用在中斷服務(wù)程序的末尾,它的作用是用來保護(hù)被中止運行程序的斷點,如果已經(jīng)在中斷服務(wù)程序的前段完成了此工作的話,那么它的工作只是恢復(fù)待運行任務(wù)的斷點。
2.4 多中斷處理
(1)優(yōu)先級定義。
(2)中斷編號定義與中斷使能。
(3)優(yōu)先級分配。
(4)多中斷響應(yīng)程序編寫。
(5)多中斷響應(yīng)問題小結(jié)。
①中斷響應(yīng)啟動HardFault_Handler異常。
②中斷嵌套后并未返回運行系統(tǒng)。
2.5 應(yīng)用層總體設(shè)計
本設(shè)計其主程序流程圖如圖1所示。
2.6 部分關(guān)鍵子程序算法
2.6.1 中斷檢測
可采用同步法測量。
2.6.2 數(shù)碼轉(zhuǎn)化
因為Cortex M0+測量頻率的結(jié)果是以10進(jìn)制的形式顯示出來的,但是測量的數(shù)據(jù)是以2進(jìn)制的形式計算,并以16進(jìn)制的形式存儲在RAM里的,所以在顯示之前還需要將數(shù)據(jù)進(jìn)行轉(zhuǎn)換。
2.6.3 數(shù)碼顯示
顯示程序分為7種模式,分別對應(yīng)6組不同數(shù)據(jù)范圍的高位或低位消隱,以及一種錯誤模式顯示。display00子函數(shù)為小數(shù)點后兩位顯示程序,當(dāng)測量數(shù)據(jù)小于1 000時,對小數(shù)顯示程序進(jìn)行調(diào)用,使測量結(jié)果顯示兩位小數(shù)。
為了確保系統(tǒng)能工作正常,就要對電路重要部分仿真,即我們把波形整形電路、分頻電路進(jìn)行了仿真,Proteus軟件是非常好的Cortex M0+的仿真軟件。我們采用安捷倫33 500B任意波形發(fā)生器作為標(biāo)準(zhǔn)信號輸入,進(jìn)行系統(tǒng)測量精度的測試,最后我們還要進(jìn)行誤差分析、系統(tǒng)噪聲控制、系統(tǒng)功耗分析。
參考文獻(xiàn)
[1] 史坡,廉德宇,沈昱明,等.一種精確頻率測量儀設(shè)計[J].儀器儀表學(xué)報,2006,27(S2):1532-1533.
[2] 何錚,周娜.智能家居基于 Cortex M3/M0的感知與控制子網(wǎng)設(shè)計[J].單片機與嵌入式系統(tǒng)應(yīng)用,2014(12):25-27.
[3] 朱錦明.基于Cortex-M0+內(nèi)核的KE02微控制器的應(yīng)用研究[D].蘇州大學(xué),2014.
[4] 張如芹.Cortex-M0單片機二—十進(jìn)制整數(shù)轉(zhuǎn)換的快速算法[J].單片機與嵌入式系統(tǒng)應(yīng)用,2013,13(7):32-33.