Embedded VCO与软件问题
我有一个带AD5791和LPC1768的VCO。我能够读写AD5791的DAC寄存器,但无法修改输出频率或电压。当AD5791直接连接到电源时,我可以按预期修改频率。因此,我认为这是一个软件问题。我的代码在这里:Embedded VCO与软件问题,embedded,microcontroller,analog-digital-converter,mbed,Embedded,Microcontroller,Analog Digital Converter,Mbed,我有一个带AD5791和LPC1768的VCO。我能够读写AD5791的DAC寄存器,但无法修改输出频率或电压。当AD5791直接连接到电源时,我可以按预期修改频率。因此,我认为这是一个软件问题。我的代码在这里: #include "mbed.h" SPI spi(p5, p6, p7); // mosi, miso, sclk DigitalOut cs(p8); DigitalOut LDAC(p9); DigitalOut Reset(p11); DigitalOut CLR(p10);
#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
}
任何意见都将不胜感激!谢谢大家! 这里的主要问题是LPC1768在写入之前必须设置其软件控制寄存器和控制寄存器。此外,芯片必须由LDAC驱动,在数据传输后暂停。这可以在我的代码中看到:如果我理解正确,您可以通过调整电源电压来更改VCO频率,但不能通过写入DAC来控制其运行。DAC可能是双缓冲(甚至乘法)的,因此它需要额外的时钟来实际更改输出吗?芯片的模式正确吗?@Chris是的,这就是目前的情况!我认为spi.write()可能也错误地设置了时钟。但我不知道如何解决这个问题。在AD5791数据表上,我有时序图,但不确定如何实现它。我以前从未被咬过。关于你的另一点,我确信芯片在初始化时处于正确的状态()。然而,这对我来说是新的-所以我可能没有正确初始化芯片(AD5791)。你觉得怎么样?你驾驶得怎么样/LDAC?@ChrisStratton我只是想我可能需要手动设置LDAC。我以前认为spi.write()可以处理这个问题。我将重写我的代码并尝试一下。我对数据表的理解是,您必须显式地使用/LDAC做一些事情,它实际上不是类似SPI的接口的一部分。对于如何使用它,您似乎有一些选择,但您必须对其进行操作,不能将其保持在固定的级别。