Follow me 第二季第3期 :DAC配置生成波形及性能测试
[复制链接]
本帖最后由 zsy-s 于 2024-12-8 13:59 编辑
备忘:Follow me第二季第3期!与得捷一起解锁开发板超能力!
什么是 dac
dac全称叫做数模转换器,它由英语Digital to Analog converter简化而成。与其相对的还有反过来的ADC,即将模拟信号转换成数字信号。
性能指标:
分辨率是模拟输出电压可被分离的等级数,n位DA分辨率一般为1/2^n。位数越高,分辨率越高。
转换速度用来描述数字量变化引起模拟量变换的转换时间,具有的指标:建立时间和转换速率。
A/D转换一般步骤:取样、保持、量化、编码
硬件
ra5m6芯片提供了两个12位分辨率的dac控制器。
配置
查看pinlist可以看出,只有两个引脚接到了dac控制器上,如下图
dac属性配置
增加一个gpt定时器,用来产生中断,输出一个模拟信号,最终生成波形信号
配置如下
代码
开启定时器中断
R_GPT_Open(&g_timer0_ctrl, &g_timer0_cfg);
R_GPT_Start(&g_timer0_ctrl);
定时器的中断
void gpt_test_isr(timer_callback_args_t *p_args)
{
(void)p_args;
APP_PRINT("\r\n ** Agpt_test_isr ** \r\n");
}
启动dac 转换
R_DAC_Start (&g_dac_ctrl);
根据电压值计算转换值,实现输出相应的电压,此函数在定时器里调用,实现定时的调节输出电压。
static void DAC_SetVoltage(float voltage)
{
uint16_t dac_data;
dac_data = (uint16_t)(4096*((voltage)/33));
APP_PRINT("DAC_SetVoltage dac_data[%d]\r\n",dac_data);
R_DAC_Write(&g_dac_ctrl, dac_data);
}
效果
IMG_1493
|