c - 任何人都可以在下面的 DAC 场景中帮助我吗
问题描述
我正在编写交流程序以将位数字电压值发送到 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 吗?
解决方案
谁能帮我调一下电压??
设置电压将取决于您与 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 表示。
推荐阅读
- c# - How to display percent ( %) symbol in Y axis value in crystal report , line chart?
- gcc - 如何在 gcc 自动生成的头文件依赖项中处理从 C 到 C++ 的移动源?
- javascript - How to remove arrow functions from webpack output
- javascript - How to use shiny javascript functions?
- apache-kafka - Kafka 服务器在启动时提供错误关闭代理
- reactjs - 在 FlatList 中显示图像
- java - 发现多个文件的操作系统独立路径为“com/google/i18n/phonenumbers/data/PhoneNumberMetadataProto_WF”
- android - Firebase 云消息传递:我的应用程序没有收到我发送的消息
- android - 如何使用 upload_cert.der 文件创建签名的 apk
- python - 装饰器返回函数对象而不是包装函数的输出