MINI_OSCILLOGRAPH

基本参数

通道 同步双通道
采样率/带宽 每通道2MSPS/100KHz
输入范围 ±10mV - ±15V
输入阻抗 1MΩ

1 模拟信号采集:

STM32H7支持三路ADC,分别是ADC1,ADC2和ADC3。其中ADC1和ADC2可以组成双ADC模式,ADC3是独立的。

2 模拟信号的输出:

STM32H750 的 DAC 模块(数字/模拟转换模块)是 12 位数字输入,电压输出型的 DAC。STM32H7 只有一个 DAC,但有两个独立的通道,这里使用DAC_OUT1连接比较器与定时器捕获配合作为触发功能。

3 ADC采集信号的处理:

从ADC采集到的信号可以获取到频率、峰峰值、波形和频谱图。

ADC的数据采集刚好使用DAC_OUT1与比较器和TIM2的触发功能搭配,当TIm触发就会获取相应的波形频率,不触发就直接采集,采集完成后对ADC获取的数据进行相应的计算获得峰峰值和波形和频谱图。

4 屏幕的刷新:

屏幕选择的是SPI通信的LCD(驱动为ST7789V,中景园电子),使用DMA(直接内存访问)来发送数据可以提高通信效率,减轻CPU的负担。

5 界面控制:

界面的控制使用旋转编码器控制菜单切换和参数调整。

使用低功耗定时器LTIM。在while循环中每次进入中断后都会对屏幕进行刷新,按键在LTIM进入5次后刷新一次,在状态切换和数据处理中使用一个switch,在状态切换中修改采样率和DAC发送的波形和触发位置,后面1~4为ADC的采集,5对ADC采集后的值进行处理,把波形、频谱图、数据都存放在需要刷新的数组中,让屏幕刷新自己去刷新。

img
(图片来自“硬木课堂”)

中断优先级

​ 使用了两个DMA分别进行SPI刷新屏幕,和ADC采集数据。其中SPI刷新优先级为低,ADC最高。我们首先要保证ADC采集数据的完整性,而SPI需要做到实时刷新,屏幕刷新耗时很长,如果设置为高优先级会影响ADC的使用。

ADC的触发也会涉及到中断,这个时候比SPI高就可以了。

其中的按键任务在while中轮询操作,不存在中断。