STMCU小助手
发布时间:2021-12-24 19:00
|
前言5 l! A% }0 F5 B8 f- w 使用STM32H750VB作为主控,使用stm32cubemx配置工程,在单通道对ADC通道进行采集,预计对通道采集1024次,然后对1024个数据进行fft。 一、配置 1. 时钟配置6 H1 a0 [/ u3 G, k! p 在cubemx中配置,RCC中采用外部时钟,外部晶振分别为25MHz和32.768KHz。时钟树配置如下图所示:3 J5 U. Z: O, T: O( k
# l; G7 g7 F i5 G+ c( X
ADC时钟频率为150MHz。 2. ADC配置5 h# v$ y* ?+ _0 J7 r' e6 y2 Z2 n 选用ADC3中的IN0,其他的不选,具体配置如下,根据下图计算采样率首先,ADC的时钟为150MHz,时钟分频8分频,然后采样时间为32.5个时钟周期,采样率约577KHz,实测采用8.5个时钟周期也可也,但是时采样率再高就不太行了。: I0 S: Q. R9 \% b
3. DMA配置; p4 l" a: A3 a; u6 T2 j DMA配置如下图所示,由于是连续采样DMA配置为循环模式,同样,在ADC的配置中的转换数据管理模式也要配置为DMA Circular Mode。数据宽度选择half byte,在Debug中选上串行线就行。至此在cubemx中的配置完成。 " Y! a% u6 E6 D& C7 d) u6 |7 D
示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。9 u3 |* h \) |5 w! | 7 o4 ]4 S5 {* E+ f 二、工程; G4 P9 v) l# L 1 . ADC测试 cubemx建立的工程已经包含了对各个部分的初始化,查看与ADC相关的函数。然后选择调用函数。首先进行对ADC的校准,如下所示。校准函数后面的两个参数可以在函数定义上面的注解中找到。 7 c2 Z; K1 k9 [
8 h% ^0 t/ A# ]9 e' s 然后开启ADC采样,由于是使用DMA方式,所以调用HAL_ADC_Start_DMA函数。处理方式也一并写在下面所示的程序中。4 C l+ e2 @5 Y, G; @. i) H* [ : B$ Q* R: d& j$ E
调试时可以发现ADC的值可以连续被转换。
' h( L. G: L, Z0 }8 W; \: _9 r K 三、FFT) B2 Q8 d: r5 k: H3 K 1. 添加DSP库 CMSIS包含了数字信号处理的一系列库,在Keil中添加比较方便,如下图所示。 4 y: }: ?0 H o8 C" A
6 p% c/ I( q* \% F8 a$ w& k DSP库的资料可以在keil安装目录中找到,如下图所示。( a8 r/ h X) u, M5 R0 l
- u; x2 T# O% p% o S 2. 数据采集1 }5 m0 x, P3 _) V5 R 采集1024组数据,声明长度为1024的float数组后,当给数组赋值,程序会进入hardfault,发现是H750VB的flash或者ram不够。后面准备研究外部flash存储数据,如果是ram的问题那就没办法了。后面就只有研究FPGA进行数据处理了。4 r0 X0 R4 a# W. i% w0 i 总结$ E' B! S) V2 k5 y 在整个过程中,发现使用6.0及以上版本的编译器编译的速度比5.0版本的块很多诶。6 Z8 s$ Z3 n, c6 k7 M$ n- a) g 2 ~1 _2 Q4 b/ c2 s/ ]1 x! S3 E % \ q0 C) `# @ |
【 逢7发帖赢大礼】1、利用CubeMX生成正点原子H7R7开发板的STM32CubeIDE工程
【STM32H735G-DK测评】ADC3+TIMER1+DMA 采样模拟信号
【STM32H735DK测评】Ethernet+lwip DHCP获取IP地址
STM32H743基于CubeMx5.0配置手册
【STM32H735G-DK测评】lvgl移植
【STM32H735G-DK 测评】STM32H735G-DK External Loder 编译和测试
【福利三:逢7发帖赢大礼】使用MPU6050模块、img_dsc、img_btn机制实现一些简单有趣的动画效果
【福利三:逢7发帖赢大礼】使用arc弧形拉条控件控制PWM舵机及使用SPI3接口操作NRF24L01模块进行无线通信
【福利三:逢7发帖赢大礼】调试nucleo-WBA65RI工程测试样板的一些心得
【福利三:逢7发帖赢大礼】lv_timer和BME680实现温度、湿度、气压数据读取
微信公众号
手机版