演示视频已上传至Bilibili视频平台:https://www.bilibili.com/video/BV1wUiRYxE8z
一、系统功能与整体架构设计
系统实现功能
(1)单片机在按键控制下,产生1kHz的正弦波或方波;
(2)单片机能够采集波形,并且显示;
(3)单片机能够分析采集波形的频谱,并且显示频谱与基波频率。
整体架构设计图
系统主页与按键对应功能简介
每次启动系统都会默认直接进入该主页面:
(1)蓝色部分的文字为系统名称与作者姓名,这会在后续的每个功能页面中都有显示;
(2)黑色部分的文字为各按键对应的功能介绍。
正如主页的功能介绍栏所示:
(1)按下KEY0:PA4引脚开始持续输出1kHz的正弦波信号,并在屏幕上实时显示从PA5引脚采集到的输入信号波形;
(2)按下KEY1:PA4引脚开始持续输出1kHz的方波信号,并在屏幕上实时显示从PA5引脚采集到的输入信号波形;
(3)按下KEY2:在屏幕上实时显示从PA5引脚采集到的输入信号的频谱分析结果(幅值谱,频率范围为0~1000Hz);
(3)按下KEY3(KEY_UP):在屏幕上实时显示从PA5引脚采集到的输入信号的频谱分析结果(幅值谱,频率范围为0~8000Hz)。
二、各部分功能实现
1、1kHz正弦波与方波的产生
模块功能架构设计
在实际单片机编程实现时,导入并调用DSP库加速信号数组(正弦波)的计算,并通过时钟TIM6(分频)控制DMA的数据搬运过程,并设置DAC数模转换将搬运后的信号数字数据在PA4引脚以模拟信号形式输出。
模块功能实现依据
为使用单片机产生指定频率的波形,需要根据上述架构设置对应的参数,基本的设置逻辑如下:
(1)首先,这里使用定时器TIM6来控制DMA搬移数据的过程,在CubeMX中已预先设置其时钟频率为84MHz;
(2)在生成信号数组时,C语言程序中设定数组长度为1024(与后续采集一致,为4的整数次幂以便于进行快速傅里叶变换FFT);