c51單片機(jī)驅(qū)動(dòng)AD9954的程序及調(diào)試
一開始調(diào)試,先要正確控制SYNC_CLK,因?yàn)檫@個(gè)輸出引腳就是內(nèi)部DDS時(shí)鐘的4分頻(假設(shè)DDS時(shí)鐘最高為400MHz,那么SYNC_CLK此時(shí)應(yīng)當(dāng)輸出100MHz;反之,通常用SYNC_CLK來推測DDS系統(tǒng)時(shí)鐘)。前提是必須復(fù)位Control Function Register No.1(CFR1:0x00)中的bit1(SYNC_CLK Disable)。
然后根據(jù)輸入時(shí)鐘的頻率正確設(shè)置CFR2中的倍頻系數(shù)REFCLK Multiplier和VCO Range(0:100~250MHz;1:250~400MHz)。只要外部電路沒什么錯(cuò)的地方,SYNC_CLK一般都OK了。
用了才發(fā)現(xiàn),AD9954真的還不錯(cuò),400MHz的系統(tǒng)時(shí)鐘就先不說了,居然可以用控制字Amplitude Scale Factor (ASF:0x02)調(diào)節(jié)輸出信號的幅度,前提是打開CFR1中的OSK Enable。并且14bit的長度也能夠達(dá)到足夠高的幅度控制精度了。當(dāng)時(shí)作信號源的時(shí)候,還用外接AD835+TLV5638控制幅度,現(xiàn)在想來真是憨啊。
還有就是,輸出信號的相位可調(diào)??刂谱諴hase Offset Word(POW0 0x05)中含有14bit的相位偏移控制字,因此相位調(diào)節(jié)的精度也是相當(dāng)高的,可達(dá)360°/16384 = 0.022°,在大多數(shù)情況下肯定夠用,比AD9851的5bit控制字(360°/32 = 11.25°)強(qiáng)多了。具體見程序1。
然后想嘗試一下線性掃頻功能(Linear-sweeping Mode),調(diào)了一整天都沒出來,然后就放假回家了。
最近在搞畢業(yè)設(shè)計(jì)(頻率特性測試儀Frequency Response Analyzer)的同時(shí),又把原來的AD9954測試板拿出來調(diào)試,Single-Tone Mode當(dāng)然是沒問題的,這次主要是再一次研究Linear-Sweeping Mode。于是打開原來寫的程序,看了一會(huì)兒,調(diào)了一會(huì)兒,突然發(fā)現(xiàn)一個(gè)極其簡單的錯(cuò)誤——控制字的一個(gè)字節(jié)位置寫錯(cuò)了,改過來再測試,一切OK。具體見程序2。去年居然花了一整天去查都沒查出來,Wordless。
好了,現(xiàn)在該最后一關(guān)了——RAM模式。Datasheet有關(guān)章節(jié)再看了一遍,然后大概寫了一個(gè)程序試了一下,出來的波形一團(tuán)糟。于是參考了AD官網(wǎng)的AD9954示例代碼(ASM的,具體見程序3),并和自己寫的一步一步對比,最后終于搞定了。是因?yàn)橄騌AM寫數(shù)據(jù)的時(shí)候,只需要在第一次送數(shù)據(jù)前送一次RAM指令字節(jié)(RAM:0x0b),具體見程序4。但是我沒注意到這一點(diǎn),每次數(shù)據(jù)前都送一遍0x0b,結(jié)果就悲劇了。不過最后還是發(fā)現(xiàn)原因了,嘿嘿!
下圖是RAM Segment Address Ramp Rate設(shè)置為0x0400(1024)時(shí)的切換時(shí)間測量波形。兩個(gè)光標(biāo)之間的時(shí)間大概是10.24us,因?yàn)?0.24us = 1024×10ns,說明更新速率是10ns,即SYNC_CLK,和線性掃頻時(shí)的最快頻率更新速度一樣。
利用AD9954的RAM Mode可以很方便的實(shí)現(xiàn)對數(shù)掃頻,只需要計(jì)算出相應(yīng)的對數(shù)頻率點(diǎn)并存儲進(jìn)RAM即可。
除此之外,AD9954還可以實(shí)現(xiàn)高速調(diào)頻波。如果固定波表1000個(gè)點(diǎn),那么調(diào)制波的頻率可以是100kHz,50kHz,33.33kHz……,即100/n kHz(n正整數(shù))。如果采用不定波表500~999個(gè)點(diǎn),則可以實(shí)現(xiàn)200kHz以內(nèi)的,調(diào)制波的頻率步進(jìn)不大于0.4%的調(diào)頻波。但實(shí)現(xiàn)起來有些麻煩,所以一般不用AD9954作調(diào)制波頻率連續(xù)可調(diào)的調(diào)頻波信號源。
現(xiàn)在AD9954的程序部分了解得差不多了,等畢業(yè)設(shè)計(jì)結(jié)束之后,有時(shí)間了就升級一下以前做的信號源。AD835,TLV5638直接去掉,再加入比較基礎(chǔ)的調(diào)頻/調(diào)幅功能,還有就是加入一個(gè)EEPROM用于幅度校準(zhǔn)存儲。另外,硬件電路方面做一板PCB降降噪聲,同時(shí)功放輸出的功率也要提升到10Vpp@50歐負(fù)載。
評論