姜建國(guó) 王夢(mèng)謙 王海星
(東北石油大學(xué)電氣信息工程學(xué)院)
基于STM32的新型信號(hào)發(fā)生器設(shè)計(jì)①
姜建國(guó) 王夢(mèng)謙 王海星
(東北石油大學(xué)電氣信息工程學(xué)院)
給出信號(hào)發(fā)生器的硬件組成,闡述DDS芯片AD9833的工作原理,SPI通信過(guò)程,正弦波、三角波、方波3種信號(hào)的軟件實(shí)現(xiàn)方法。搭建控制平臺(tái)驗(yàn)證信號(hào)發(fā)生器的性能,結(jié)果表明:該信號(hào)發(fā)生器信號(hào)輸出高頻噪聲少、頻率精度高。
信號(hào)發(fā)生器 STM32 DDS芯片AD9833 C語(yǔ)言
信號(hào)發(fā)生器又叫函數(shù)信號(hào)源,廣泛應(yīng)用于自動(dòng)控制、電子電路及科學(xué)試驗(yàn)等領(lǐng)域[1]。信號(hào)發(fā)生器按工作原理可分為模擬和數(shù)字兩種類型,隨著科技的進(jìn)步,由模擬器件組成的信號(hào)發(fā)生器已經(jīng)極少了,取而代之的是電路簡(jiǎn)潔、功能多樣、功耗低的數(shù)字型信號(hào)發(fā)生器。由數(shù)字電路組成的信號(hào)發(fā)生器一般由單片機(jī)控制數(shù)模轉(zhuǎn)換芯片,但存在噪聲大、功耗大、高頻性能差及頻率不準(zhǔn)等缺點(diǎn)。目前,最先進(jìn)的信號(hào)發(fā)生技術(shù)是直接數(shù)字頻率合成技術(shù)(Direct Digital Synthesizer,DDS),該技術(shù)具有成本低、功耗低、分辨率高及轉(zhuǎn)換時(shí)間短等優(yōu)點(diǎn),廣泛應(yīng)用于電信與電子儀器領(lǐng)域,是一種實(shí)現(xiàn)設(shè)備全數(shù)字化的關(guān)鍵技術(shù)[2]。由DDS芯片組成的信號(hào)發(fā)生器可以把其輸出頻率的穩(wěn)定度、準(zhǔn)確度提高到與基準(zhǔn)頻率相同的水平,并且可以在很寬的頻率范圍內(nèi)進(jìn)行精細(xì)的頻率調(diào)節(jié),采用這種方法設(shè)計(jì)的信號(hào)源可工作于調(diào)制狀態(tài)。據(jù)此,筆者利用DDS集成芯片AD9833實(shí)現(xiàn)了一個(gè)基于STM32的函數(shù)信號(hào)發(fā)生器,通過(guò)按鍵選擇波形種類和輸出頻率,實(shí)現(xiàn)高精度的波形輸出。
基于STM32的信號(hào)發(fā)生器(圖1)由4部分組成:STM32最小系統(tǒng),負(fù)責(zé)控制DDS和DAC芯片;按鍵電路,負(fù)責(zé)人機(jī)交互,控制輸出波形的類型和頻率;DAC8830,負(fù)責(zé)輸出直流信號(hào);集成DDS芯片AD9833,負(fù)責(zé)輸出正弦波、方波等多種信號(hào)。
圖1 信號(hào)發(fā)生器結(jié)構(gòu)框圖
STM32是一種基于Cortex-M3內(nèi)核的32位ARM處理器,具有價(jià)格便宜、功耗低及性能優(yōu)越等優(yōu)點(diǎn)[3]。STM32內(nèi)部集成了3個(gè)SPI通信接口,與普通的51單片機(jī)相比,可極大地簡(jiǎn)化系統(tǒng)設(shè)計(jì)。STM32最小系統(tǒng)由電源電路、時(shí)鐘電路、復(fù)位電路和程序下載電路組成。
DAC8830是一個(gè)16位超低功耗、電壓輸出的數(shù)模轉(zhuǎn)換器,具有精確度高、干擾小、噪聲低及快速穩(wěn)定等優(yōu)點(diǎn)[4],廣泛應(yīng)用于工業(yè)過(guò)程控制、數(shù)據(jù)采集系統(tǒng)、便攜式設(shè)備及自動(dòng)測(cè)試設(shè)備等領(lǐng)域。DAC8830采用SPI通信方式,SPI接口速度最高可達(dá)50MHz。DAC8830的電路原理如圖2所示,在輸出端加入OPA188運(yùn)放可組成電壓跟隨器,以保證輸出波形的帶負(fù)載能力并起到隔離作用。
圖2 DAC8830的電路原理
DDS芯片AD9833是一個(gè)完全集成的DDS電路,無(wú)需外接其他元件,僅需一個(gè)外部參考時(shí)鐘、解耦電容就能產(chǎn)生高達(dá)12.5MHz的正弦波,同時(shí)輸出頻率、相位等可通過(guò)軟件編程設(shè)置[5]。主控制器通過(guò)SPI接口將數(shù)據(jù)寫入AD9833,工作頻率最高可達(dá)40MHz。AD9833采用5.0V電源供電,與STM32通過(guò)SPI1引腳相連。AD9833外部時(shí)鐘由10MHz有源晶振提供,利用220Ω阻尼電阻可改善時(shí)鐘波形。AD9833正弦波發(fā)生電路如圖3所示。
圖3 AD9833正弦波發(fā)生電路
通過(guò)信號(hào)發(fā)生器軟件的設(shè)計(jì)實(shí)現(xiàn)掃描鍵盤的輸入,控制芯片輸出相應(yīng)的波形。STM32與AD9833和DAC8830之間選擇SPI通信方式。程序使用C語(yǔ)言編程,在MDK5編程環(huán)境下實(shí)現(xiàn)編譯。
AD9833的核心是28位相位累加器(由加法器和相位寄存器組成),每來(lái)一個(gè)時(shí)鐘信號(hào),相位寄存器步長(zhǎng)增加,相位寄存器的輸出與相位控制字相加后輸入到正弦查詢表地址中。正弦查詢表包含一個(gè)周期正弦波的數(shù)字幅度信息,每個(gè)地址對(duì)應(yīng)正弦波中0~360°的一個(gè)相位點(diǎn)[6]。查詢表把輸入的地址相位信息映射成正弦波幅度的數(shù)字量信號(hào),驅(qū)動(dòng) DAC輸出模擬量。相位寄存器每經(jīng)過(guò)228/M個(gè)外部時(shí)鐘后回到初始狀態(tài),相應(yīng)地,正弦查詢表經(jīng)過(guò)一個(gè)循環(huán)也回到初始位置,這樣就輸出了一個(gè)正弦波[7]。正弦波的輸出頻率fout為:
其中,M為頻率控制字,由編程給定,0≤M≤228-1;fMCLK為外部晶振頻率。當(dāng)外部晶振頻率為25MHz時(shí),若輸出400Hz正弦波,則計(jì)算得到M為0x10C7。因?yàn)锳D9833的頻率控制器是28位的,STM32的SPI最多可發(fā)送16位數(shù)據(jù),所以需要發(fā)送兩次,每次發(fā)送14位數(shù)據(jù)。低14位LSB為0x10C7,高14位MSB為0。
根據(jù)AD9833數(shù)據(jù)手冊(cè)進(jìn)行SPI通信設(shè)置:SPI為單向傳輸、主模式、16位數(shù)據(jù)傳輸、空閑狀態(tài)SCLK為高、第2個(gè)沿捕獲、軟件控制、波特率256、數(shù)據(jù)傳輸時(shí)高位在前[8]。外部晶振為10MHz時(shí)發(fā)生10kHz的正弦波需要發(fā)送以下控制字:0x2100(將一個(gè)完整控制字通過(guò)兩次連續(xù)寫入頻率寄存器)、0x5893(頻率寄存器0的LSB)、0x4010(頻率寄存器0的MSB)、0xC000(相位寄存器0設(shè)置為0)、0x2000(退出復(fù)位,在RESET置0后的7個(gè)SCLK周期內(nèi)DAC輸出端出現(xiàn)信號(hào))。輸出直流量相對(duì)容易,通過(guò)STM32輸出對(duì)應(yīng)的數(shù)字信號(hào)給DAC8830即可。
程序流程如圖4所示,首先掃描鍵盤來(lái)判斷輸出的波形,當(dāng)選擇函數(shù)信號(hào)時(shí),初始化SPI1,來(lái)準(zhǔn)備控制AD9833,再通過(guò)控制字求取方法求出對(duì)應(yīng)波形頻率的控制字;當(dāng)選擇非函數(shù)信號(hào)時(shí),初始化SPI2,來(lái)控制DAC8830輸出對(duì)應(yīng)的直流信號(hào)。選擇兩個(gè)SPI口是因?yàn)锳D9833和DAC8830對(duì)SPI的通信設(shè)置是不同的。
圖4 程序流程
結(jié)合軟硬件設(shè)計(jì),組成基于STM32的信號(hào)發(fā)生器,通過(guò)按鍵設(shè)置發(fā)出1kHz的正弦波、三角波、方波,結(jié)果如圖5~7所示??梢钥闯觯盘?hào)輸出高頻噪聲少、頻率精度高。方波信號(hào)的振鈴現(xiàn)象是鑒別信號(hào)發(fā)生器品質(zhì)的一個(gè)重要標(biāo)志,從圖7中可以看出,方波信號(hào)振鈴小,表明信號(hào)發(fā)生器具有高精度的特點(diǎn)。應(yīng)用在實(shí)際工程中時(shí),可以通過(guò)在信號(hào)發(fā)生器后端加入信號(hào)放大環(huán)節(jié)來(lái)增加其驅(qū)動(dòng)能力。
圖5 正弦波
圖6 三角波
圖7 方波
筆者利用DDS芯片AD9833設(shè)計(jì)了一個(gè)基于STM32的函數(shù)信號(hào)發(fā)生器,完成了硬件部分的制作與測(cè)試、軟件部分的編程。波形輸出結(jié)果表明,筆者設(shè)計(jì)的信號(hào)發(fā)生器精度高、系統(tǒng)集成度高、功耗低,具有很好的工程應(yīng)用價(jià)值和借鑒意義。
[1] 張美仙,王紅亮,丁海飛.基于DDS芯片的信號(hào)源設(shè)計(jì)[J].儀表技術(shù)與傳感器,2010,(9):54~56.
[2] 劉偉,胡仁杰,王崢.基于AD9850芯片的信號(hào)發(fā)生器的研究[J].電工電氣,2009,(11):19~21.
[3] 周立功,王祖麟,陳明計(jì),等.ARM嵌入式系統(tǒng)基礎(chǔ)教程[M].北京:北京航空航天大學(xué)出版社,2008.
[4] 張逢雪,王香婷,王通生,等.基于STM32單片機(jī)的無(wú)線智能家居控制系統(tǒng)[J].自動(dòng)化技術(shù)與應(yīng)用,2011,30(8):98~101.
[5] 毛敏,張玲娜.基于DDS的高精度信號(hào)發(fā)生器設(shè)計(jì)[J].電子科技,2009,22(7):37~40.
[6] 劉朝軍,許人燦,陳曾平.DDS輸出信號(hào)頻譜結(jié)構(gòu)的系統(tǒng)分析[J].國(guó)防科技大學(xué)學(xué)報(bào),2005,27(6):53~56.
[7] 李海松,張奇榮,權(quán)海洋.DDS的相位截?cái)嗉跋鄳?yīng)的雜散信號(hào)分析[J].微電子學(xué)與計(jì)算機(jī),2006,23(2):141~143.
[8] 楊國(guó)渝,粟顯義.采用DDS+PLL技術(shù)實(shí)現(xiàn)S波段頻率合成的一種方法[J].電子科技大學(xué)學(xué)報(bào),1999,28(4):388~391.
DesignofNewSignalGeneratorBasedonSTM32
JIANG Jian-guo, WANG Meng-qian, WANG Hai-xing
(CollegeofElectricalEngineeringandInformation,NortheastPetroleumUniversity)
The hardware structure of the signal generator was presented and the working principle of AD9833 chip (DDS) was expounded, including the SPI communication process and the software implementation of sine signals, triangle signals and square wave signals. Verifying the performance of waveform generator on the control platform established shows that, this signal generator has less high-frequency noise in signals output and higher frequency accuracy.
signal generator, STM32, DDS AD9833 chip, C language
姜建國(guó)(1966-),教授,從事電力電子與電力傳動(dòng)的研究。
TH89
A
1000-3932(2017)03-0273-04
聯(lián)系人王海星(1991-),碩士研究生,從事電力電子與電力傳動(dòng)的研究,whx1237@163.com。
2016-11-07)