前言 使用STM32H750VB作为主控,使用stm32cubemx配置工程,在单通道对ADC通道进行采集,预计对通道采集1024次,然后对1024个数据进行fft。 + {# h9 \/ Q8 ]4 T# C9 _ 一、配置& R. W0 w1 j2 i' l' Y- F0 }( g 1. 时钟配置9 S. L+ c, v9 O6 X; n4 O" j 在cubemx中配置,RCC中采用外部时钟,外部晶振分别为25MHz和32.768KHz。时钟树配置如下图所示:+ q- F8 h# E. x& g) z9 X; E# x 1 X0 X* ^ Y& X" Q ADC时钟频率为150MHz。4 \9 _- M& }) t) T/ y/ O . C: [' q b7 X& n 2. ADC配置" t' i+ `- Y6 B& V 选用ADC3中的IN0,其他的不选,具体配置如下,根据下图计算采样率首先,ADC的时钟为150MHz,时钟分频8分频,然后采样时间为32.5个时钟周期,采样率约577KHz,实测采用8.5个时钟周期也可也,但是时采样率再高就不太行了。 3. DMA配置 DMA配置如下图所示,由于是连续采样DMA配置为循环模式,同样,在ADC的配置中的转换数据管理模式也要配置为DMA Circular Mode。数据宽度选择half byte,在Debug中选上串行线就行。至此在cubemx中的配置完成。 5 l% W, @3 T8 W3 Q$ I1 P/ J! _ 7 m1 i! y5 A5 |6 W 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。' W% y" t1 R. K. Y( y6 o; Z+ M . q' x2 F* _) V8 Y 二、工程3 A' y" q, n- K* @9 I# r 1 . ADC测试2 w- S0 s6 q7 L" \" u+ p! t cubemx建立的工程已经包含了对各个部分的初始化,查看与ADC相关的函数。然后选择调用函数。首先进行对ADC的校准,如下所示。校准函数后面的两个参数可以在函数定义上面的注解中找到。
然后开启ADC采样,由于是使用DMA方式,所以调用HAL_ADC_Start_DMA函数。处理方式也一并写在下面所示的程序中。0 {; g2 z( t, R8 K % U n; A/ y3 ^- s7 G
调试时可以发现ADC的值可以连续被转换。% Z/ d5 V5 g- L- I 三、FFT 1. 添加DSP库 CMSIS包含了数字信号处理的一系列库,在Keil中添加比较方便,如下图所示。9 K5 [$ W9 M, J8 \9 i8 z' Y, J DSP库的资料可以在keil安装目录中找到,如下图所示。2 |% Y. Q/ I* ?+ O' D * l" c$ |8 w' |- O8 q 2. 数据采集 采集1024组数据,声明长度为1024的float数组后,当给数组赋值,程序会进入hardfault,发现是H750VB的flash或者ram不够。后面准备研究外部flash存储数据,如果是ram的问题那就没办法了。后面就只有研究FPGA进行数据处理了。 W2 G& P: O. C" x 总结 K$ L. R9 T. Y6 j) F; \, V 在整个过程中,发现使用6.0及以上版本的编译器编译的速度比5.0版本的块很多诶。2 n. |8 i i. d$ P' ? . l' `+ U: u4 `4 X4 U3 r7 I7 W 2 V8 r. [# X4 j& t " ]7 w1 L, ^+ C6 A' S7 \5 Q |
【经验分享】STM32_H7_ADC
STM32H7R/S高性能MCU:安全性,大存储和优异图显赋能更多应用创新
Stm32H7XX GCC下分散加载实现
【银杏科技ARM+FPGA双核心应用】STM32H7系列10——ADC
DIY-STM32H750核心板
[nucleo-H7A3ZI-Q]1-点亮一个皮皮灯
DIY-STM32H743核心板
【银杏科技ARM+FPGA双核心应用】STM32H7系列57——MDK_FLM
1月10日有奖直播 | 基于STM32 的CODESYS智能自动化解决方案
STM32的CAN FD位定时设置注意事项