<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 微控制器用作正弦波發(fā)生器

微控制器用作正弦波發(fā)生器

作者: 時(shí)間:2002-01-08 來(lái)源: 收藏

通過(guò)在微控制器存儲器中存儲預設值的方法,可以來(lái)將微控制器作為波形發(fā)生器使用。微控制器可以實(shí)現包括正弦波、三角波和鋸齒波在內的所有類(lèi)型的波形。

本文引用地址:http://dyxdggzs.com/article/3019.htm

本文探討了如何通過(guò)在微控制器存儲器中預先加載一組固定數值,從而生成正弦波的方法。同時(shí)還探討了如何利用DAC將這些預設的數值轉換為模擬輸出。最后探討了用來(lái)改變正弦波頻率的機制。

用來(lái)實(shí)現這一設計的器件是Cypress的子公司MicrosystemsTM PSoCTM(可編程系統芯片)器件。PSoC采用的是一個(gè)8位哈佛結構的微處理器,器件內部有16KB的可編程存儲器(閃存),用以存儲波形數據點(diǎn)。

可以采用任何具有顯示/圖形功能的軟件包來(lái)采集通過(guò)串行口傳輸的波形數據。設計,采用的是NI公司的LabView編程軟件,以采集、格式化和顯示進(jìn)入和流出PSoC器件的數據。

任何可利用三角法計算的數學(xué)軟件或計算器都可以用來(lái)生成一組正弦波形數據。一旦確定了所需要的波形分辨率,就可以計算出產(chǎn)生所需波形的波形數據點(diǎn)數。

在器件中加載這些波形點(diǎn)的數據值之前,還需要確定幾個(gè)參數。其中一個(gè)參數是器件的輸出范圍,這可協(xié)助確定偏置數值。在PSoC器件中,有幾個(gè)輸出范圍可供選擇,包括(Vcc/2)±(Vcc/2)(Vcc/2)±頻帶間隙。

我們選擇該器件最大可能的輸出范圍(Vcc/2)±(Vcc/2)。本參考設計的輸出采用了PSoC器件的全輸出擺幅(05V)。為使用最大的輸出范圍,輸出信號的偏置必須置于+2.5V,最大的振幅也必須設為+2.5V。這些數值保證了DAC的波形輸出具有最大電壓擺幅,同時(shí)又不會(huì )有削波現象。

正確設定這些參數以后,即可將正弦波數據加載到存儲器中。在向PSoC器件閃速存儲器中寫(xiě)入預先生成的數據時(shí),可以在源代碼中將這些數據列在一個(gè)變量名下。這可保證在器件每次被編程時(shí),存儲器加載過(guò)程都會(huì )自動(dòng)執行。圖1示出了如何利用C語(yǔ)言來(lái)實(shí)現這一點(diǎn)。之后存儲在變量中的數據被發(fā)送到DAC,每次一個(gè)字節循環(huán)進(jìn)行,DAC時(shí)鐘用來(lái)決定DAC轉換和輸出數據的速度,從而決定了輸出波形的周期。

用來(lái)編程和調試PSoC設計的PSoC DesignerTM軟件包示于圖2。該圖顯示的是DAC和生成DAC時(shí)鐘的計數器布局。圖中還顯示出了用來(lái)生成中斷信號的第二個(gè)計數器。中斷程序用來(lái)將數據傳送到DAC,然后DAC將轉換后的信號輸出至I/O引腳。DAC的最大刷新速率為125KHz,驅動(dòng)DAC的時(shí)鐘必須設置為所需輸出頻率的4倍。

DAC需要進(jìn)行的設置包括時(shí)鐘相位參數。該參數將DAC輸出與另一個(gè)PSoC模塊的輸入同步。另一參數——模擬總線(xiàn)設置則用來(lái)將數據輸出至特定的I/O引腳。DAC需要的最后一個(gè)配置參數是二進(jìn)制偏置設置,該參數決定了DAC用來(lái)傳輸數據的格式。

其中一個(gè)計數器(counter_1)用來(lái)生成驅動(dòng)DAC的時(shí)鐘信號。進(jìn)行適當的計數器參數設置,使計數器輸出信號是DAC轉換頻率的4倍。

第二個(gè)計數器(counter_2)用來(lái)生成周期性中斷信號。在中斷服務(wù)執行過(guò)程中,閃速存儲器中的數據地址一增加,存儲在該地址單元中的數據則被發(fā)送到DAC。這一過(guò)程不斷重復直至達到最后一個(gè)數據點(diǎn),然后計數器復位,這一過(guò)程重新開(kāi)始。在本例中,數據點(diǎn)的發(fā)送用以確定時(shí)間間隔緊密相連,從而生成周期性波形。

為調整輸出波形的周期,需要調整coanter1(它生成DAC時(shí)鐘)的周期。這一調整過(guò)程可動(dòng)態(tài)完成,因為控制PSoC模塊的參數是基于寄存器的??山⒁环N協(xié)議架構來(lái)將這些參數傳送至相應的寄存器。一旦確定了相應的協(xié)議架構,參數即可被傳送至正確的寄存器,而模塊輸出則根據新的參數進(jìn)行調整。

設計檢查相對比較簡(jiǎn)單。因為本設計中DAC的輸出通過(guò)I/O端口輸出,因此進(jìn)行設計的最方便的方法是檢查該引腳輸出的信號。通過(guò)檢查輸出信號的頻率、幅度、偏置和信號質(zhì)量,可以保證他們滿(mǎn)足設計的要求。為驗證設計正常工作,開(kāi)發(fā)了LabView接口。

微控制器是非常靈活的,他們可完成的功能也幾乎是沒(méi)有限制的。本文給出的僅是如何實(shí)現這些眾多可能功能的一個(gè)例子?!?/font>



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>