这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界 » 论坛首页 » 企业专区 » Renesas » 【瑞萨RA4M2v2.0开发板马年限定】借用DAC功能,简单制作信号发生器

共1条 1/1 1 跳转至

【瑞萨RA4M2v2.0开发板马年限定】借用DAC功能,简单制作信号发生器

高工
2026-05-19 17:14:06     打赏

一:DAC模块知识分享:

    DAC为数字/模拟转换模块,顾名思义,它的作用就是把输入的数字编码,转换成对应的模拟电压输出,它的功能与ADC相反。在常见的数字信号系统中,大部分传感器信号被转化成电压信号,而ADC把电压模拟信号转换成易于计算机存储、处理的数字编码,由计算机处理完成后,再由DAC输出电压模拟信号,该电压模拟信号常常用来驱动某些执行器件,使人类易于感知。如音频信号的采集及还原就是这样一个过程。

二:FSP库的配置:

这里配置的时候,需要结合FSP的图形化配置软件,对底层的驱动代码的开发,很方便

05-01 DAC的配置.png

三:软件代码:

程序编写流程如下:

1:初始化IO口,P014 为DAC输出引脚

2:进入主程序编写输出不同电压的数据

3:为了方便调试,这里使用的系统延时的方式进行调节。

4:这里为了方便测试,编写正弦波的产生和不同电压输出函数程序:

3.1 DAC的初始化:

void DAC_init(void)
{
    fsp_err_t err;
    /* Pin configuration: Output enable DA0 as Analog. */
    /* Initialize the DAC channel */
    err = R_DAC_Open(&g_dac0_ctrl, &g_dac0_cfg);
    /* Handle any errors. This function should be defined by the user. */
    assert(FSP_SUCCESS == err);
    err = R_DAC_Start(&g_dac0_ctrl);
    assert(FSP_SUCCESS == err);
}
3.2 生成不同电压波形:
void DAC_generation(void)
{    static uint16_t value = 0 ;    if(value<4096)
    {
        value++;        if(value%512==0)//使得输出波形为阶梯状
        {
            err = R_DAC_Write(&g_dac0_ctrl, value);
            assert(FSP_SUCCESS == err);
        }
    }    else
        value=0;
}


实物验证如下:

3.3  生成正弦波形:

#define PI   3.1415926void DAC_genration_sin(void)
{  static   double w = 0,dac_value = 0;
  w += (PI / 30);  if (w >= (2 * PI))
  {
      w = 0;
  }
  dac_value = (sin(w) + 1) / 2 * 4095;
  R_DAC_Write(&g_dac0_ctrl, (uint16_t)dac_value);
  R_DAC_Start(&g_dac0_ctrl);
}



关键词: 瑞萨     信号发生器    

共1条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册 ]