使用DMA实现单DAC通道输出正弦波

例程路径:ls_sdk\examples\peripheral\dac\single_dac_channel_sine_wave

一、 功能描述

DAC的DMA功能,实现单DAC通道输出正弦波

二、软件配置

2.1 DAC IO 配置

DAC1对应的IO为PA07,DAC2对应的IO为PC04;

例程中使用DAC2实现正弦波输出,以下函数配置相应IO的复用功能。

pinmux_dac2_init(); // PC04

2.2 基本DAC配置

void DAC_Init_Func(void)
{
    // DMA 初始化
    DMA_CONTROLLER_INIT(dmac1_inst);
    DACx_Hdl.Env.DMA.DMA_Channel = 1;
    DACx_Hdl.DMAC_Instance = &dmac1_inst;

    DACx_Hdl.Instance           = LSDAC12;  // 选择硬件DAC模块,DAC1和DAC2的基址相同
    DACx_Hdl.DACx               = DAC2;     // 选择要使用的DAC
    DACx_Hdl.DAC2_Trigger       = GENERAL_TimerA_TRGO;  // 选择触发器
    DACx_Hdl.DAC2_wave          = No_Wave;        // 选择要产生的波形,此处设置为无波形,构成波形的数据由用户自己定义。
    DACx_Hdl.DAC2_Mamp          = triangle_amplitude_4095;  // 选择波形的峰值
    if (HAL_DAC_Init(&DACx_Hdl) != HAL_OK)
    {
        Error_Handler();
    }
}

2.3 设置要输出的电压,启动DMA

在DAC的基础配置完成后,可以使用以下接口触发DAC转换,DAC要转换的数据由内存搬移到外设。

HAL_DAC_Start_DMA(&DACx_Hdl,DAC2_ALIGN_12B_R,sin_wave,sizeof(sin_wave),HAL_DAC_ConvCpltCallback);

// sine_wave :构成正弦波的数组,可以在sine_wave.h文件中查看

三、下载验证

将示波器的探头接开发板的PC04引脚,编译运行程序,查看波形。