前言0 L2 h6 m" o }9 }* k1 ] 使用STM32H750VB作为主控,使用stm32cubemx配置工程,在单通道对ADC通道进行采集,预计对通道采集1024次,然后对1024个数据进行fft。6 l. [: I1 X s# `# ? ~ 一、配置* w2 e% D8 \6 Q' J; `& }* ~ 1. 时钟配置 在cubemx中配置,RCC中采用外部时钟,外部晶振分别为25MHz和32.768KHz。时钟树配置如下图所示: 3 F( K6 f6 q( _6 ?! n ADC时钟频率为150MHz。2 D4 f! V8 E% c 7 ~& L, B$ B/ O+ \3 F 2. ADC配置 选用ADC3中的IN0,其他的不选,具体配置如下,根据下图计算采样率首先,ADC的时钟为150MHz,时钟分频8分频,然后采样时间为32.5个时钟周期,采样率约577KHz,实测采用8.5个时钟周期也可也,但是时采样率再高就不太行了。 3. DMA配置 DMA配置如下图所示,由于是连续采样DMA配置为循环模式,同样,在ADC的配置中的转换数据管理模式也要配置为DMA Circular Mode。数据宽度选择half byte,在Debug中选上串行线就行。至此在cubemx中的配置完成。3 L8 ^* @- W% o7 I' H/ D% i : o* ^, e4 l5 R4 C 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、工程 1 . ADC测试 cubemx建立的工程已经包含了对各个部分的初始化,查看与ADC相关的函数。然后选择调用函数。首先进行对ADC的校准,如下所示。校准函数后面的两个参数可以在函数定义上面的注解中找到。 % ]7 r, t y$ S& \
然后开启ADC采样,由于是使用DMA方式,所以调用HAL_ADC_Start_DMA函数。处理方式也一并写在下面所示的程序中。! I7 i: e! Q4 g3 u+ h+ u1 @ `+ X" l/ U, {6 X1 F* D! R
调试时可以发现ADC的值可以连续被转换。+ ~$ R" W0 O7 C+ e3 n9 H 三、FFT 1. 添加DSP库 CMSIS包含了数字信号处理的一系列库,在Keil中添加比较方便,如下图所示。 + Q$ e- F/ L t# F7 f2 P DSP库的资料可以在keil安装目录中找到,如下图所示。) Z% X0 u; l4 \/ @) T/ {, \ 2. 数据采集2 d, L- _0 L. _/ o 采集1024组数据,声明长度为1024的float数组后,当给数组赋值,程序会进入hardfault,发现是H750VB的flash或者ram不够。后面准备研究外部flash存储数据,如果是ram的问题那就没办法了。后面就只有研究FPGA进行数据处理了。 总结 在整个过程中,发现使用6.0及以上版本的编译器编译的速度比5.0版本的块很多诶。. U* t( l" V1 a- A( ~2 ] ' g# E4 i% i$ ~; ? u 3 T" R q3 b) H: Y& d) t4 c + u5 _: G( F) J ?, U% L3 _2 K% t' E |
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
【STM32H7S78-DK】汽车仪表系统
【STM32H7S78-DK】基于 rtthread 适配 lcd 驱动移植 lvgl
【STM32H7S78-DK评测】TouchGFX (QR Code)二维码生成器
【STM32H7S78-DK】rtthread 增加 psram 内存管理
【STM32H7S78-DK】开箱与rtthread工程初体验
【STM32H7S78-DK评测】-5 LVGL&DMA2D DEMO测试
【STM32H7S78-DK评测】-4 LTDC&DMA2D 基本测试
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题