本帖最后由 EPTmachine 于 2024-12-15 12:12 编辑
设计程序能发出不同的波形,频率范围1——1kHz,支持正弦波、方波和三角波。
程序设计
在MCU上实现信号发生器的功能,参考以下两篇博客
STM32片上DAC实现DDS
STM32口袋仪器设计
采用其中的DDS模块实现信号的输出。结合之前任务中使用到的USB、QSPI Flash外设即可实现类似信号发生器的功能。
程序实现
在FSP中添加以下的模块
涉及到DDS功能的模块有dac、gpt和dma模块。其中dac模块的参数设置如下
gpt模块设置如下
dma模块设置如下
DMA的数据搬运由定时器的溢出事件驱动。瑞萨DMA模块的使用和STM32的类似,在dds.c的DDS_setWaveParams函数中,通过修改DMA的数据源,加载不同的DDS查找表,从而实现不同配置波形的产生。
类似于任务3的Flash存储数据示例,在任务3的基础上添加以下文件,其中的代码实现DDS相关外设的初始化、DDS信号数据计算以及用户选择DDS信号配置的菜单。
添加上述代码,编译完成即可实现DDS信号发生器的功能,同时用户可以编辑信号的类型和频率。
程序演示
产生正弦波
产生方波

产生三角波
相关示例代码