STM32G474有3路12位1MSPS的DAC通道
通过STM32CubeMX软件可以很方便的进行配置
比如下边就介绍如何使用NUCLEO-G474实现正弦信号发生器
首先是配置时钟,可以根据需求配置时钟频率和时钟源,G474最大支持170MHz的主频,这里设置成最大170MHz
然后左边找到DAC1,单击后在中边的DAC1 Mode and Configuation里选择OUT1 mode为Connected to external pin only意思是配置DAC1_OUT1为外部输出
为了精准控制DAC的输出频率需要配置为定时器触发,我准备使用TIMER4来触发DAC1_OUT1输出,所以在Trigger里选择Timer r Trigger Out event
在DAC的DMA选项卡中将DMA Request选择为DAC1_CH1(也只能选这个),Channel选择DMA1 Channel 1,DMA Request Settings的Mode设置为Circular,Mode是用来选择数据输出的模式,假如有10个数据,模式选择Normal时输出完第10个数据时DAC会停止输出,直到再次执行HAL_DAC_Start_DMA函数,选择Circular时数据会循环输出,当输出到完第 10个数据后会从0开始循环输出,重复将一组数据正弦数据通过DAC输出就能生成连续的正弦波了,Data Width的Peripheral处选择Word其它默认即可。
配置好DAC以后需要再对定时器进行配置
选择TIM4(也可以是任意定时器,只要DAC的Trigger选择对应的定时器即可),Clock Source选择Internal Clock,下边的Prescaler分频值设置为0,Counter Period选择170-1,TriggerEventSelectionTRGO选择Update Event,主频是170MHz,每170个周期产生一个Update Event事件,这样DAC的更新频率就是1MHz。
配置好以后生成工程文件,然后打开对应工程
在工程里加入正弦数据数组
在主函数里加入启用DAC和定时器的函数即可
将工程下载到开发板并支行,就能看到漂亮的正弦信号,频率是DAC的更新频率除正弦表的长度,1Msps/60=16.66KHz,如果要修改频率可以修改Timer4的Update Event时间,也可以修改正弦表的数据长度
工程文件:
adc_dac.rar
(11.36 MB, 下载次数: 478)
此内容由EEWORLD论坛网友littleshrimp原创,如需转载或用于商业用途需征得作者同意并注明出处