2014-04-30 45 views
0

我有一個AD5791和LPC1768的VCO。我可以讀取和寫入AD5791的DAC寄存器,但無法修改輸出頻率或電壓。當AD5791直接連接到電源時,我可以按預期修改頻率。因此我認爲這是一個軟件問題。我的代碼在這裏:帶軟件問題的VCO

#include "mbed.h" 

SPI spi(p5, p6, p7); // mosi, miso, sclk 
DigitalOut cs(p8); 
DigitalOut LDAC(p9); 
DigitalOut Reset(p11); 
DigitalOut CLR(p10); 

int main() 
{ 
    spi.format(8,0); 
    spi.frequency(10000); // you can speedup later 
    cs = 1; 

    Reset = 0; 
    wait_us(1); 
    LDAC = 0; 
    CLR = 1; 
    Reset = 1; // the chip is reset now 

    cs = 0; 
    spi.write(20); 
    spi.write(0); 
    spi.write(0); 
    cs= 1; // this will activate dac 

    cs = 0; 
    spi.write(0x14); 
    spi.write(0xCC); 
    spi.write(0xCD); 
    cs = 1; // set output register - shall output some value 

    do{ 
    }while(1); // wait forever to test the output value 

} 

任何輸入將不勝感激!謝謝!

+0

如果我的理解正確,可以通過調整電源電壓來更改VCO頻率,但不能通過寫入控制它的DAC進行操作。 DAC可能是雙倍(甚至是多倍)緩衝的,因此它需要額外的時鐘來實際改變輸出?芯片是否處於正確模式? –

+0

@Chris是的,那是目前的事態!我認爲spi.write()可能會錯誤地設置時鐘。我不知道如何解決這個問題。在AD5791數據表中,我有時序圖,但不知道如何實現它。我以前從來沒有碰到過。另一方面,我確信芯片在初始化時處於正確的狀態(https://wiki.analog.com/resources/quick-start/ad5791)。然而,這對我來說很新穎 - 所以我可能沒有正確初始化芯片(AD5791)。你怎麼看? – user3329712

+0

你最近怎麼駕駛/ LDAC? –

回答