我正在编写一个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?
答案 0 :(得分:0)
有人可以帮我设置电压吗?
设置电压将取决于您与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表示。