基于凌陽SPCE061A的頻率測量計
1 引言
頻率是反映信號特性的基本參量之一,頻率測量在應(yīng)用電子技術(shù)領(lǐng)域有著重要的地位。測量的數(shù)字化、智能化是當(dāng)前測量技術(shù)發(fā)展的趨勢。數(shù)字化處理技術(shù)使得測量儀器設(shè)備功能完美,但數(shù)字處理的實(shí)時性受到處理速度的限制,實(shí)時測量對電路的處理速度要求越來越高,目前的微控處理芯片發(fā)展速度,出現(xiàn)諸如DSP,F(xiàn)PJA等不同領(lǐng)域的應(yīng)用芯片。作為主要應(yīng)用于數(shù)字語音領(lǐng)域的凌陽SP-CEA061A,有著豐富的硬件資源、可低于3V的工作電壓、較低的功耗和高達(dá)約50MHz的時鐘工作頻率,相對于通用的51系列、96系列等單片機(jī),無疑有更佳的性能。特別是SPCE061A內(nèi)置32k字FLASH存儲器、多時基選擇定時器、兩路D/A轉(zhuǎn)換器和一路A/D轉(zhuǎn)換器,使他在便攜式測量儀器中應(yīng)用更有前景。
2 硬件資源配置
該頻率計能測量1Hz-20MHz以上頻率的脈沖信號,具有較寬的測量范圍,最高輸出4位有效顯示值,采用4位BCD七段顯示碼動態(tài)掃描輸出。其工作框圖見圖1。圖中顯示部分采用數(shù)碼管需增加驅(qū)動電路擴(kuò)大驅(qū)動電流,用以保護(hù)SPCEA061A。
設(shè)置SPCEA061A的工作時鐘頻率fCPU=fOC=24.576MHz為。利用定時器B(TimerB)定時時間作為頻率測量的時基,定時1S,100ms,10ms,1ms,0.1ms五檔的脈沖計數(shù)時間,定時器B的時鐘源和預(yù)置寄存器載入數(shù)據(jù)見標(biāo)表1,考慮程序工作存在延時存在計數(shù)誤差,高檔位的預(yù)置寄存器數(shù)據(jù)應(yīng)根據(jù)實(shí)際情況適當(dāng)調(diào)整校準(zhǔn)。定時器A(TimerA)10ms、作為頻率測量計數(shù)器,被測信號從SPCEA061A的I/O端口B口的IOB2輸入。TimerA和TimerB采用FIQ中斷工作模式。
設(shè)置I/O端口A口的低7位IOA0-IOA6輸出BCD七段顯示碼,IOA7輸出小數(shù)點(diǎn)。IOA8-IOA10分別輸出Hz,kHz,MHz測量單位指示。IOA12-IOA15為動態(tài)掃描輸出端口,循環(huán)選擇4位數(shù)碼管,此時A口的低8位IOA0-IOA7輸出對應(yīng)數(shù)字的BCD七段顯示碼。顯示碼輸出采用中斷
3 測量處理流程
頻率測量的控制和數(shù)據(jù)處理由SPCE061A通過程序完成,圖2為主程序的流程圖。
對單片機(jī)進(jìn)行初始化開始頻率測量,首先對測量結(jié)果進(jìn)行判斷當(dāng)前的測量量程是否合適;4位顯示數(shù)據(jù)范圍是1000-9999,大于9999判斷為超量程,而小于1000為欠量程;根據(jù)測量結(jié)果的判斷依次增加(超量程)和減少(欠量程)測量時間檔位,并設(shè)置數(shù)據(jù)相應(yīng)的小數(shù)點(diǎn)位置和單位。對量程合適(1000-9999范圍)的結(jié)果進(jìn)行二進(jìn)制到十進(jìn)制的轉(zhuǎn)換并譯碼成七段顯示碼,加入小數(shù)點(diǎn)顯示位和單位指示位形成顯示碼。
顯示數(shù)據(jù)刷新時間是顯示結(jié)果更新的時間間隔。為了能較好地觀測到穩(wěn)定的顯示數(shù)據(jù),一般設(shè)為0.5s左右更新顯示數(shù)據(jù)。通過對IRQ4的1024Hz中斷響應(yīng)進(jìn)行計數(shù)5000次可獲得約0.5s的顯示數(shù)據(jù)刷新時間。在內(nèi)部RAM中開辟兩個顯示碼存儲緩沖區(qū),一個用于存儲當(dāng)前正在譯碼的顯示碼,一個用于存儲正在輸出的顯示碼。查詢顯示數(shù)據(jù)刷新時間寄存計數(shù)器,當(dāng)刷新時間到時,只要互換2個顯示碼存儲緩沖區(qū)的首地址就能達(dá)到1個指令就能更換多個數(shù)據(jù)的目的,避免由于中斷而造成顯示數(shù)據(jù)出現(xiàn)不一致的狀況。更換完顯示數(shù)據(jù)后接著啟動計數(shù)器TimerA和TimerB進(jìn)行下一次的測量,頻率計每約0.5s測量一次,避免在高頻測量時由于測量時間短而造成TimerA和TimerB頻率中斷占用系統(tǒng)資源。TimerA和TimerB在FIQ中斷處理程序中,自動設(shè)置停止計數(shù),等待啟動狀態(tài)。
SPCE061A有豐富的中斷源,本系統(tǒng)使用了3個中斷源:FIQ_TMA,F(xiàn)IQ_TMB和_IRQ4。FIQ用于頻率測量,_IRQ4用于動態(tài)掃描顯示。
圖3所示為頻率計數(shù)測量FIQ中斷處理程序流程圖。
FIQ有3個中斷源,除FIQ_TMA和FIQ_TMB外,還有FIQ_PWM,若產(chǎn)生中斷,壓棧后采用查詢的方式確定中斷源。為FIQ_TMA中斷,表明計數(shù)值大于216-1,肯定超量程,設(shè)置1個超量程值50000作為計數(shù)結(jié)果,并停止計數(shù)器計數(shù)。為FIQ_TMB中斷,為頻率測量定時時間到,停止計數(shù)器計數(shù)。最后讀出測量結(jié)果,解除中斷出棧返回。圖4為動態(tài)掃描顯示IRQ4中斷處理程序流程圖。
IRQ4有3個4實(shí)時時基中斷源:4069Hz,2048Hz和1024Hz,選用1024Hz作為動態(tài)掃描頻率。中斷響應(yīng)后,首先壓棧保護(hù),再判斷是否為1024Hz時基中斷,否則,清除中斷出棧返回。若為1024Hz時基中斷,先對顯示數(shù)據(jù)刷新計數(shù)寄存器累加1,完成0.5s的定時計數(shù)。取出當(dāng)前顯示碼輸出緩沖區(qū)首地址,修改循環(huán)顯示位計數(shù)器。輸出顯示碼和顯示位碼。為了數(shù)碼顯示清晰,IOA口數(shù)據(jù)修改分三步完成:先清除IOA口數(shù)據(jù),使數(shù)碼管熄滅,再輸出顯示碼,最后輸出顯示位碼。
4 結(jié) 語
該頻率計的硬件電路簡單,容易制作。對SPCE061A加上必要的典型外圍電路就可工作,需要接入的電路有:32768的晶體振蕩電路、鎖相環(huán)濾波電路、復(fù)位電路和必要的濾波電路。電路可用3V供電。在對SPCE061A進(jìn)行初始化時,把不用的端口設(shè)置為懸浮輸入方式,并注意屏蔽其功能。SPCE061A內(nèi)含看門狗計數(shù)器(Watch Dog),WatchDog的清除時間為0.75s,在主程序的循環(huán)內(nèi)必須清除。