STMCU小助手
发布时间:2021-12-24 19:00
|
前言 ~$ `* n7 @7 V: I" b 使用STM32H750VB作为主控,使用stm32cubemx配置工程,在单通道对ADC通道进行采集,预计对通道采集1024次,然后对1024个数据进行fft。 一、配置 1. 时钟配置 在cubemx中配置,RCC中采用外部时钟,外部晶振分别为25MHz和32.768KHz。时钟树配置如下图所示: ' [& N" k6 M% a' Z( ^6 J
0 M2 U9 @% y# V' G7 G4 I, V* d0 u
# Y9 H: a% y, e- }2 U: s ADC时钟频率为150MHz。! j, \3 k! z& M8 o: L0 u 7 {$ \. o+ x- b: `; M" `. r" m 2. ADC配置 选用ADC3中的IN0,其他的不选,具体配置如下,根据下图计算采样率首先,ADC的时钟为150MHz,时钟分频8分频,然后采样时间为32.5个时钟周期,采样率约577KHz,实测采用8.5个时钟周期也可也,但是时采样率再高就不太行了。 , p0 X7 t, l1 q
3. DMA配置 DMA配置如下图所示,由于是连续采样DMA配置为循环模式,同样,在ADC的配置中的转换数据管理模式也要配置为DMA Circular Mode。数据宽度选择half byte,在Debug中选上串行线就行。至此在cubemx中的配置完成。 {! v) u3 R: i& s) f5 h" k* H % S. ^+ B2 s) j8 @9 h4 _. Y# |: y. x
. W' N' d9 ]8 c$ S _' R7 u4 j 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。* N! x. w. r/ I! G 9 a) J* k+ P/ }3 B) r 二、工程4 f/ ~& p6 `" r2 R% v: n 1 . ADC测试& X" ]+ d$ J' m cubemx建立的工程已经包含了对各个部分的初始化,查看与ADC相关的函数。然后选择调用函数。首先进行对ADC的校准,如下所示。校准函数后面的两个参数可以在函数定义上面的注解中找到。 , A s/ j7 O! o4 N) _
然后开启ADC采样,由于是使用DMA方式,所以调用HAL_ADC_Start_DMA函数。处理方式也一并写在下面所示的程序中。% V* W2 x+ H4 N
调试时可以发现ADC的值可以连续被转换。4 \! M' v8 i: c' N" k
/ V% Z" ^1 }& \ 三、FFT0 R5 D1 x9 I$ V9 {5 g- ~ 1. 添加DSP库6 @3 F. W: v# L$ p; N7 V% f- S& _ CMSIS包含了数字信号处理的一系列库,在Keil中添加比较方便,如下图所示。+ [3 X" Y% h* i. ?9 m5 E3 G
- q* _6 o" G1 K# c' n( z DSP库的资料可以在keil安装目录中找到,如下图所示。; t+ s! r5 A5 K7 h# C' n" b 1 K; K7 ]' b4 \$ x: C
2. 数据采集 采集1024组数据,声明长度为1024的float数组后,当给数组赋值,程序会进入hardfault,发现是H750VB的flash或者ram不够。后面准备研究外部flash存储数据,如果是ram的问题那就没办法了。后面就只有研究FPGA进行数据处理了。2 P7 G& P5 w' j- }# C; P 总结9 Q$ s3 o6 ]1 K. T% i 在整个过程中,发现使用6.0及以上版本的编译器编译的速度比5.0版本的块很多诶。 2 W' t+ f* M( Z' J |
【 逢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实现温度、湿度、气压数据读取
微信公众号
手机版