MINI_OSCILLOGRAPH
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采集后的值进行处理,把波形、频谱图、数据都存放在需要刷新的数组中,让屏幕刷新自己去刷新。
(图片来自“硬木课堂”)
中断优先级
使用了两个DMA分别进行SPI刷新屏幕,和ADC采集数据。其中SPI刷新优先级为低,ADC最高。我们首先要保证ADC采集数据的完整性,而SPI需要做到实时刷新,屏幕刷新耗时很长,如果设置为高优先级会影响ADC的使用。
ADC的触发也会涉及到中断,这个时候比SPI高就可以了。
其中的按键任务在while中轮询操作,不存在中断。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 嗨!这里是康康的裤兜!
评论


