【问题标题】:VCO with Software Issues有软件问题的 VCO
【发布时间】:2014-06-17 09:21:15
【问题描述】:

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

}

任何意见将不胜感激!谢谢!

【问题讨论】:

  • 如果我理解正确的话,您可以通过调整电源电压来更改 VCO 频率,但不能通过写入应该控制它运行的 DAC 来更改 VCO 频率。 DAC 是否可能会加倍(甚至倍增)缓冲,从而需要额外的时钟来实际改变输出?芯片的模式是否正确?
  • @Chris 是的,这就是当前的情况!我认为 spi.write() 也可能错误地设置了时钟。我不知道如何解决这个问题。在 AD5791 数据表上,我有时序图,但不知道如何实现它。我以前从来没有咬过。在你的另一点上,我相信芯片在我初始化时处于正确的状态(wiki.analog.com/resources/quick-start/ad5791)。然而,这对我来说大部分是新的——所以我可能没有正确初始化芯片(AD5791)。你怎么看?
  • 你驾驶/LDAC怎么样?
  • @ChrisStratton 我只是想我可能需要手动设置 LDAC。我以前认为 spi.write() 会处理这个问题。我将重写我的代码并尝试一下。
  • 我对数据表的解读是,您必须明确地使用 /LDAC 做一些事情,这实际上并不是类 SPI 接口的一部分。看起来你有几个如何使用它的选择,但你必须操纵它,不能只把它留在一个固定的水平。

标签: embedded microcontroller analog-digital-converter mbed


【解决方案1】:

这里的主要问题是 LPC1768 在写入之前必须设置其软件控制寄存器和控制寄存器。此外,芯片必须由 LDAC 驱动,并在数据传输后暂停。这可以在我的代码中看到:https://gist.github.com/tashwoods/84c81f87fa6e0f1b98a2

【讨论】:

    猜你喜欢
    • 2010-12-04
    • 2011-04-04
    • 2011-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-09-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多