2014-04-30 6 views
0

VCO에 AD5791 및 LPC1768이 있습니다. 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 운전은 어떻게하고 있습니까? –

답변

1

여기서 중요한 문제는 LPC1768이 소프트웨어 제어 레지스터와 제어 레지스터를 쓰기 전에 설정해야한다는 것이 었습니다. 또한 데이터가 전송 된 후 칩을 LDAC에 의해 구동해야만했습니다. 여기에 내 코드에서 확인할 수 있습니다 : https://gist.github.com/tashwoods/84c81f87fa6e0f1b98a2