
前言" T1 U" P7 R# }+ \6 `6 V5 { 使用STM32H750VB作为主控,使用stm32cubemx配置工程,在单通道对ADC通道进行采集,预计对通道采集1024次,然后对1024个数据进行fft。4 O* [8 U4 g* E1 c8 G* j 一、配置 1. 时钟配置, g! U1 [- n7 N) a, _4 k9 ~ 在cubemx中配置,RCC中采用外部时钟,外部晶振分别为25MHz和32.768KHz。时钟树配置如下图所示: ![]() ![]() ADC时钟频率为150MHz。3 X7 p( u0 q7 |/ ] , m* L# [2 J' t$ w/ V8 o, ] 2. ADC配置 选用ADC3中的IN0,其他的不选,具体配置如下,根据下图计算采样率首先,ADC的时钟为150MHz,时钟分频8分频,然后采样时间为32.5个时钟周期,采样率约577KHz,实测采用8.5个时钟周期也可也,但是时采样率再高就不太行了。" c: ~% u. y" V% M* w4 H/ M5 _) B ![]() 4 N( o, B1 l4 \) E5 p; L* ~ 3. DMA配置 DMA配置如下图所示,由于是连续采样DMA配置为循环模式,同样,在ADC的配置中的转换数据管理模式也要配置为DMA Circular Mode。数据宽度选择half byte,在Debug中选上串行线就行。至此在cubemx中的配置完成。, z$ Y/ s/ W5 t% g, E! u ![]() ) Q% _) I+ _7 p 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 _8 X4 }! D1 Z 二、工程3 C0 p: f+ Q9 O 1 . ADC测试 cubemx建立的工程已经包含了对各个部分的初始化,查看与ADC相关的函数。然后选择调用函数。首先进行对ADC的校准,如下所示。校准函数后面的两个参数可以在函数定义上面的注解中找到。( ?# T# q1 `! r2 V" t7 ^
![]() ) W6 }9 b G* |5 q* I. f% O 然后开启ADC采样,由于是使用DMA方式,所以调用HAL_ADC_Start_DMA函数。处理方式也一并写在下面所示的程序中。" s+ I1 D& k* A" x , P- d) m. b$ h) B6 o
调试时可以发现ADC的值可以连续被转换。 ![]() $ E0 D5 d7 O8 g+ s4 z8 Y 三、FFT; i; X# B8 j. L" _ 1. 添加DSP库 CMSIS包含了数字信号处理的一系列库,在Keil中添加比较方便,如下图所示。% n4 `: Q9 V$ Y- c ![]() # p4 f7 K0 T' O/ c DSP库的资料可以在keil安装目录中找到,如下图所示。 , J" S# z6 {7 J' ~3 u" [ M, J ![]() , p8 N. W3 y3 `/ p' ^ 2. 数据采集4 ^/ @+ u' y: i# z 采集1024组数据,声明长度为1024的float数组后,当给数组赋值,程序会进入hardfault,发现是H750VB的flash或者ram不够。后面准备研究外部flash存储数据,如果是ram的问题那就没办法了。后面就只有研究FPGA进行数据处理了。 % G* @- y; Y3 i! \ 总结/ b/ G1 T5 T0 c5 y) F! n$ W2 Y, O 在整个过程中,发现使用6.0及以上版本的编译器编译的速度比5.0版本的块很多诶。 4 L) a8 ]+ D) V6 V |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享4-使用MVP架构从硬件外设读取数据并显示到图形界面、从图形界面发送指令控制硬件外设
【2025·STM32峰会】GUI解决方案实训分享3-搭建空白TouchGFX例程并实现简单的功能(含硬件部分的串口打印)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
【2025·STM32峰会】+TouchGFX实现动态进度显示以及界面切换
【2025·STM32峰会】+使用TouchGFX快速创建GUI
【2025·STM32峰会】GUI解决方案实训分享1-对LVGL咖啡机例程的牛刀小试以及问题排查
实战经验 | 关于STM32H7使用LL库生成ADC代码工作异常问题说明
实战经验 | 关于STM32H745的MC SDK电机控制工程问题的解决办法
【H745I GUI】1.GreenHouse 灯光控制