DDS芯片AD9833的特性
AD9833是AD公司出品的一款DDS波形發(fā)生器,能夠產(chǎn)生正弦波、三角波和方波輸出,它的主要參數(shù)如下:
能產(chǎn)生正弦波、三角波和方波的輸出;
28位的相位累加器,也就是主頻時(shí)鐘為25MHz時(shí),可實(shí)現(xiàn)0.1Hz的分辨率;主頻時(shí)鐘為1MHz時(shí),可實(shí)現(xiàn)0.004Hz的分辨率;
10位的DAC輸出;輸出正弦波和三角波時(shí)波形幅度為38mV~650mV,輸出方波時(shí)幅度最大為3.3V。
采用SPI接口,只作為SPI的從機(jī)。
這里需要說(shuō)明一下,AD9833的輸出波形頻率,最高可達(dá)12.5MHz。這個(gè)12.5MHz是怎么來(lái)的呢?
因?yàn)?/span>AD9833的輸入時(shí)鐘頻率最高是25MHz,由于奈奎斯特采樣定律的限制,輸出波形的每個(gè)周期內(nèi)至少要2個(gè)點(diǎn)才能還原出信號(hào),所以,25MHz/2 = 12.5MHz,是這么來(lái)的。
但是,這里要特別注意一下,奈奎斯特采樣定理使用的條件,它描述的是波形中所含正弦波的最高頻率。
因此,如果我們想讓它輸出12.5MHz的正弦波是可行的,一個(gè)周期內(nèi)兩個(gè)點(diǎn)的波形,再加上后端的低通濾波器就能實(shí)現(xiàn);輸出方波也是可行的,因?yàn)榉讲ㄖ挥懈?、低電平的變化,輸出不加任何濾波就是方波;而想要輸出三角波,就不可能了,一個(gè)周期中只輸出兩個(gè)點(diǎn),怎么都不可能形成三角波的圖形,要想輸出三角波,只能降低頻率,讓一個(gè)周期內(nèi)的點(diǎn)數(shù)增加,才能輸出類似三角波的波形。
使用stm32驅(qū)動(dòng)AD9833輸出
AD公司官方給出了一套驅(qū)動(dòng)AD9833的代碼,但是它的代碼結(jié)構(gòu)比較復(fù)雜,而且它為了兼容同系列的其他DDS芯片里面有很多冗余的部分,我們不使用官方的代碼(有興趣研究官方代碼的可以關(guān)注我的公眾號(hào)找到下載地址)。
自己來(lái)實(shí)現(xiàn)AD9833的驅(qū)動(dòng)代碼,使用的硬件平臺(tái)是stm32單片機(jī)。
AD9833連接到SPI2接口上,使用PA8作為片選信號(hào)。
首先看AD9833的SPI接口時(shí)序:
它只有MOSI數(shù)據(jù),所以數(shù)據(jù)只有主機(jī)到從機(jī)的,而且要注意是在時(shí)鐘下降沿取數(shù)的,每次傳輸16bit。
在cubemx里建立工程,主要的參數(shù)設(shè)置下面幾項(xiàng):
使能SPI2,設(shè)置為全雙工主機(jī)(半雙工主機(jī)也可以,因?yàn)閿?shù)據(jù)線只有一根MOSI);時(shí)鐘初始為高、第一個(gè)跳變沿取數(shù);
PA8設(shè)置為輸出,作為AD9833的片選信號(hào);
然后生成工程,在keil中打開(kāi)后就可以編寫代碼了。
AD9833的寄存器比較簡(jiǎn)單,一共就三個(gè):控制寄存器、頻率寄存器、相位寄存器。
其中,控制寄存器用于設(shè)置波形、是否輸出、是否低功耗等等一些控制量。頻率、相位寄存器都有兩個(gè),由控制寄存器中的FSELEC、PSELECT位來(lái)選擇使用哪一個(gè)。
原理圖如下:
在AD9833的輸出增加了一個(gè)數(shù)字電位器MCP41010和運(yùn)放AD8051進(jìn)行輸出波形幅度的調(diào)節(jié)。
但是,這個(gè)模塊的設(shè)計(jì)是有問(wèn)題的,主要在于MCP41010數(shù)字電位器的帶寬不夠!會(huì)造成輸出頻率較高時(shí),波形幅度大幅減小,完全起不到調(diào)節(jié)波形幅度的作用。
如下圖是MCP41010的增益隨頻率的變化曲線,可以看到,頻率到1MHz以上時(shí),衰減會(huì)變得很明顯,頻率越高衰減越大: