介紹一種基于凌陽公司SPCE061A單片機的多功能信號發生器,并對其信號產生原理,以及生成信號的數據計算進行了詳細介紹.該信號發生器結構簡單,成本低,具有較高實用價值.
關鍵詞:信號發生器;單片機;SPCE061A
Design and Implement of Multifunctional Signal Generator Based SPCE061A
ZHANG Licai
(College of Information and Control, Xian University of Architecture and Technology, Xian, 710055, China )
Abstract: In this paper, a kind of multifunctional signal generator based SPCE061A of Sunplus company is introduced in detail. Its work principle and the data calculation of signal is detailed introduction. The construction of the generator is simple, the cost is low, and have the higher and practical value.
Key words: signal generator; single-chip computer; SPCE061A
1 引言
信號發生器是科研及工程實踐中最重要的儀器之一,以往多用硬件組成,系統結構比較復雜,可維護性和可操作性不佳.隨著計算機技術的發展,信號發生器的設計制作越來越多的是用計算機技術,種類繁多,價格,性能差異很大.本位介紹一種基于凌陽公司SPCE061A單片機設計的信號發生器,其特點是系統結構簡單,成本低,使用方便,實用價值高.基本性能如下:
①可以產生正弦波,方波,三角波,鋸齒波等幾種周期性信號;
②可以用鍵盤編輯生成正弦波,方波,三角波這三種信號的線性組合.
③增加外部存儲器后可以方便的是現信號存儲功能,即有記憶功能系統可以實現的功能;
④信號存儲功能可存儲掉電前用戶編輯的信號和設置;
⑤可實現用鍵盤編輯產生任意信號.
2 硬件電路設計
2.1 SPCE061A[1]單片機簡介
SPCE061A的結構框圖如圖1所示.
SPCE061A的CPU為16位微處理器,其內部含有8個寄存器,4個通用寄存器Rl~R4,1個程序計數器PC,1個堆棧指針SP,1個基址指針BP,1個段寄存器SR,通用寄存器R3和R4結合組成一個32位寄存器MR,MR可以作為乘法運算和內積運算的目標寄存器.
內嵌2kB的SRAM和32kB閃存FLASH ROM.系統時鐘由鎖相環(PLL)振蕩器為系統提供一個實時時鐘的基頻(32768Hz),然后將基基頻進行倍頻,調整至49.152MH2,40.96MHz,32.768MHz,24.576MHz或20.480MHz.系統默認的PLL自激振蕩頻率為24.576MHz.系統時鐘頻率(Fosc)和CPU時鐘頻率(CPUCLK)可通過編程來控制.默認的Fosc,CPUCLK分別為24.576MHz和Fosc/8.通過對32768Hz實時時鐘源分頻而提供了多種實時時鐘中斷源.
低電壓監測和低電壓復位低電壓監測功能可以提供系統內電源電壓的使用情況.可通過編程來控制,系統默認的電壓監測低限為2.4V.4級電壓監測低限:2.4V,2.8V,3.2V和3.6V.
SPCE061A具有2種中斷方式:快速中斷請求FIQ中斷和中斷請求IRQ中斷.中斷控制器可處理3種FIQ中斷和14種IRQ中斷,以及1個由指令BREAK控制的軟中斷.
系統具有2個可編程口:A口和B口.A口既是具有可編程喚醒功能的普通I/O口,又可與ADC的多路LINE IN輸入共用,B口除了具有普通I/O口的功能外,在特定的管腳上還可以完成一些特殊的功能.I/O口兼容5VTTL邏輯電平.
SPCE06lA提供2個16位的定時器/計數器:TimerA和TimerB.TimerA為通用計數器;TimerB為多功能計數器.時基信號,來自于32768Hz實時時鐘,通過頻率選擇組合而成.此外,時基信號發生器還可以直接生成2Hz,4Hz,1024Hz,2048Hz以及4096Hz的時基信號,為中斷系統提供各種實時中斷源信號.
SPCE06lA有8個10位模數轉換通道,其中7個通道用于將模擬量信號轉換為數字量信號,可直接通過引線(IOA[0~6])輸入.另外有一個通道只作為語音輸入通道,通過內置有自動增益控制放大器的麥克風通道(MIC IN)輸入.SPCE06lA為音頻輸出提供了2個10位的數模轉換器(輸出為電流型),即DACl和DAC2.DACl,DAC2轉換輸出的模擬量電流信號分別通過AUDl和AUD2管腳輸出.
串行設備接口串行輸入輸出端口SIO提供了1個1位的串行接口,用于與其他設備進行數據通訊.在SPCE061A內通過IOB0和IOBl這2個端口實現與設備進行串行數據交換功能.
更為可貴的是,廠家提供的開發環境支持C語言和匯編語言程序設計,以及C語言和匯編語言的混合編程,大大方便了用戶的程序設計,提高了系統開發效率,降低了開發成本.
3 信號發生的原理
3.1 信號發生電路原理
信號發生電路原理框圖如圖2所示.該信號發生器采用SPCE06lA芯片作為系統的CPU,配以少量的外圍接口芯片,構成單片機的最小控制系統.5V電源經二極管降壓后得到3.6V電壓用作單片機電源.人機對話部分用A口組成鍵盤及數碼管顯示(圖中略去未畫);信號輸出部分用SPCE06lA提供的2個10位的數模轉換器,即DACl和DAC2,以及外部運放電路組成.
①多功能信號發生器可產生正弦波,方波,三角波和由用戶編輯的特定信號.信號的發生方法有兩種:一是采用硬件,二是采用軟件.如果采用硬件方法.可以使頻率范圍做得很大,然而為了配合智能化設置,其幅度,頻率的調整,仍然要利用軟件驅動I/O口進行切換,對于信號發生器來說,輸出的信號種類較多,采用硬件的方法會使硬件電路相當復雜,并且調試也很困難.故障率也會大大增加.本設計中采用軟,硬件相結合方法,可節約大量的硬件電路,信號的種類,頻率完全由軟件通過D/A變換來產生,幅度調整由可以用數字量控制的硬件電路實現.在高頻端采用軟件壓縮的方法,可以得到較好的效果.
信號生成過程如下:
將生成信號的數據寫入DAC1后,數字量轉換為模擬量經DAC1引線端輸出,輸出電流加在電阻R9上形成信號電壓,信號電壓經運放U2A組成的跟隨器輸入數字電位器DP1(MAX5400)[2]的高端,數字電位器DP1將分壓后信號輸入由運放U2C組成的跟隨器后輸入由運放U2D組成的運算放大器放大后輸出.由于單片機的DAC只能輸出電流,在電阻R9上形成的信號電壓始終≥0,要輸出正反相信號需調整信號信號的電平,為此,利用DAC2輸出電流加在電阻R8上形成偏置電壓,經由運放U2A組成的反相器形成負偏置電壓(Vr)后,加在輸出放大器U2D輸入端,達到調整輸出信號電平的目的.
②輸出信號幅度的調節方式:在0~5V的(峰~峰值)范圍,要實現步進0.1V,如果完全使用軟件實現,失真會非常嚴重.因為10位輸出按0.1V步進,則峰~峰值最小為0.1V;又因為D/A數字最大為1023,輸出對應5V,則0.1對應數字20,在這個很小的范圍內,輸出各種信號失真會很大.為了減小失真度,將信號峰~峰值固定對應數字1023,而其中參考電壓由DAC2提供,以實現步進幅度為0.1V要求的硬件原理.低電壓輸出時信號時,這里使用數字電位器DP1的是調整輸出信號的信號,數字電位器DP1產生的偏差通過輸入DAC1的數字量進行修正,為此需要檢測輸出信號與期望值的偏差,所以系統中將數字電位器分壓信號反饋給SPCE061A的模數轉換通道(IOA0),借以檢測輸出信號是否達到規定要求.實驗測量信號電壓可實現0.02V幅度步進.信號電平調整原理如圖3所示.圖3(a)為數字電位器分壓信號,圖3(b) DAC2提供的由反相器U2A形成的負偏置電壓(Vr),圖3(c)為輸出放大器U2D放大后的輸出信號.系統中運放采用一片TI公司的4運放芯片TLC2254[3],該芯片為rail-to-rail型低功耗運放,可以提供-5V~+5V擺幅輸出.
為使輸出信號得到進一步改善,在輸出端再加1級RC低通濾波器,以實現輸出信號的平滑.
3.2 信號分析與計算
(1)正弦波信號計算
由于信號都是周期性的,所以只要設計出一個完整周期的正弦波.在信號輸出部分,采用了10位的D/A變換器,其最大輸出值為1023.為了與D/A變換器相適應,在2π一個周期內,將其輸出信號的幅值,角頻率量化,如圖3(a)所示,將正弦波向上平移,使其最低點為0,而且對于奇函數,其傅里葉級數只能用正弦項表示,即有
f(k)=512sinkω0 (0≤k≤512)
y(k)=512+f(k)
式中ω0=2π/1024.由此可以求出1024個離散值,形成數據表,以備計算驅動程序調用.
(3)三角波的計算
三角波信號形成原理如圖4所示,按DAC滿幅輸出計算三角波的上升沿和下降沿的N個DAC輸出的小階梯,由于階梯很小從宏觀上看它可以近似成三角波波信號,如圖4中實線所畫的波形.階梯之間的時間間隔t1,t2由定時器TimerA 的定時值決定通過改變t1和t2的值來改變三角波信號上升沿和下降沿的時間T1,T2從而改變三角波信號的頻率.
(4)方波信號的計算
方波計算比較簡單,只需根據給出高電平時間t1和低電平t2時間,分別用定時器計時即可實現.
以上計算所的數據(10位有效數據)在寫入DAC寄存器時,要寫入DAC數據寄存器的高10位.因為,SPCE06lA的DAC數據寄存器中只有高10為有效,低6位無意義.
3.3 系統主要程序流程框圖
主程序流程如圖5所示.
4 結論
由于采用硬件數字電位器分壓和軟件修正的措施,結合具有較高性能價格比的單片機SPCE061A,使系統輸出的信號電壓的精度較高,而且簡化了電路結構.此多功能信號發生器操作簡單,顯示直觀,可同時查看信號類型,頻率和幅值.總體性能優于傳統的信號發生器,有很好的發展前景.
另外,利用SPCE061A的串行接口可以方便地與計算機進行通信,接收計算機的指令,進而可以組成測控,測量一體化系統.利用麥克風通道(MIC IN)輸入語音信號,DACl,DAC2輸出語音信號,可實現簡單的人機語音對話功能,使人機接口更加人性化.
參考文獻
1.北陽電子內部資料,2002,4
2.美信IC數據手冊,www.maxim-ic.com.cn
3.德州儀器公司IC數據手冊,www.ti.com.cn