【问题标题】:Can anyone help me in below scenario on DAC任何人都可以在下面的 DAC 场景中帮助我吗
【发布时间】:2018-09-13 01:58:07
【问题描述】:

我正在编写一个 c 程序,以将位数字电压值发送到 DAC (SAM4E) 以获得模拟输出。 程序如下:

#include "asf.h"
#include "conf_board.h"
#include "conf_clock.h"
#include "dacc_example.h"

int main (void)
{

sysclk_init();
board_init();


/* Reset DACC registers */
dacc_reset(DACC_BASE);

/* Half word transfer mode */
dacc_set_transfer_mode(DACC_BASE, 0);


dacc_set_timing(DACC_BASE,0, 0x10);


/* Disable TAG and select output channel DACC_CHANNEL */
dacc_set_channel_selection(DACC_BASE, DACC_CHANNEL);

/* Enable output channel DACC_CHANNEL */
dacc_enable_channel(DACC_BASE, DACC_CHANNEL);

/* Set up analog current */
dacc_set_analog_control(DACC_BASE, DACC_ANALOG_CONTROL);


uint32_t dac_val = 0;

while (1)
  {

// set voltage to minimum

#define SET_DAC_VAL 0x000

//set voltage to midpoint


// set voltage to 2.7V


//set voltage to 3.2V

//write the conversion value
dacc_write_conversion_data(DACC_BASE, SET_DAC_VAL, DACC_CHANNEL);
}
}

在上面的代码中,我已经配置了 DAC,并且在 while 循环中,我尝试将要转换的数字值发送到数据转换寄存器中。我想将电压设置为最小值、中点、2.7V 和 3.2V。最大电压为 3.3v,DAC 为 12 位分辨率。

谁能帮我设置电压?? 或者 我可以知道我们如何以 12 位二进制格式表示 2.7 V 吗??

【问题讨论】:

    标签: c


    【解决方案1】:

    谁能帮我设置电压??

    设置电压将取决于您与 DAC 的交互方式。假设您使用的是微控制器,那么您需要参考数据表。它将描述 DAC 模块中的寄存器及其工作原理。大多数时候那里也有一个代码示例。

    我可以知道我们如何用 12 位二进制格式表示 2.7 V 吗??

    您的 DAC 具有 12 位分辨率。这意味着您有 12 位来表示要在 DAC 上输出的电压值。这意味着您可以表示 2^12 - 1 个增量。假设 DAC 的参考电压为 3.3V,则每个增量为 3.3/(2^12 - 1) 伏。因此,如果我们想要 2.7V,它将由值 2.7/(3.3/(2^12 - 1)) = 3350 表示。

    【讨论】:

    • 谢谢。我可以知道如何计算中点吗?另外,我是否正确编写代码? “#define SET_DAC_VAL 0xD16”是否执行??
    • 中点由 (3.2+2.7)/2 计算,等于 2.95。 2.95/(3.3/(2^12 - 1)) = 3661。#define SET_DAC_VAL 0xD16 不执行任何操作。 #define 是一个预处理器指令,在这种情况下它定义了该常量。该常量可在您的代码中找到,并替换为您将其定义为 (0xD16) 的值。你应该阅读更多关于 herehere
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-10-12
    • 2021-12-13
    • 1970-01-01
    • 2020-05-04
    • 2012-10-28
    • 1970-01-01
    相关资源
    最近更新 更多