Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/fsharp/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Embedded VCO与软件问题_Embedded_Microcontroller_Analog Digital Converter_Mbed - Fatal编程技术网

Embedded VCO与软件问题

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);

我有一个带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);

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的接口的一部分。对于如何使用它,您似乎有一些选择,但您必须对其进行操作,不能将其保持在固定的级别。