STMCU小助手
发布时间:2021-12-24 19:00
|
前言! g' q- ` c7 n4 T+ L4 G 使用STM32H750VB作为主控,使用stm32cubemx配置工程,在单通道对ADC通道进行采集,预计对通道采集1024次,然后对1024个数据进行fft。 一、配置; v. u4 R" p6 U; \# C q$ k1 y0 c* f# S 1. 时钟配置* J, c( @1 N* K, \ 在cubemx中配置,RCC中采用外部时钟,外部晶振分别为25MHz和32.768KHz。时钟树配置如下图所示:( q: u# n- Q) K T$ T: K' a, {
ADC时钟频率为150MHz。 2. ADC配置 选用ADC3中的IN0,其他的不选,具体配置如下,根据下图计算采样率首先,ADC的时钟为150MHz,时钟分频8分频,然后采样时间为32.5个时钟周期,采样率约577KHz,实测采用8.5个时钟周期也可也,但是时采样率再高就不太行了。, h2 u9 g# D( y5 s/ R - K* x. a; n- ]( ?# y3 a/ P
3. DMA配置: g8 \) K, b# \ z: F( K" G DMA配置如下图所示,由于是连续采样DMA配置为循环模式,同样,在ADC的配置中的转换数据管理模式也要配置为DMA Circular Mode。数据宽度选择half byte,在Debug中选上串行线就行。至此在cubemx中的配置完成。 / d) d& C- x4 X% Z& Z; x9 V
& d; I" A8 C6 A+ |0 A 示例:pandas 是基于NumPy 的一种工具,该工具是为了解决数据分析任务而创建的。 二、工程3 G. w7 L) j0 Q" c$ h 1 . ADC测试 cubemx建立的工程已经包含了对各个部分的初始化,查看与ADC相关的函数。然后选择调用函数。首先进行对ADC的校准,如下所示。校准函数后面的两个参数可以在函数定义上面的注解中找到。0 B2 u p7 z9 V# } U) [2 ] ( w# M8 `# S( }* w; C: C
$ s9 K6 ~$ L) @ }1 O' [' D+ a 然后开启ADC采样,由于是使用DMA方式,所以调用HAL_ADC_Start_DMA函数。处理方式也一并写在下面所示的程序中。 4 G- }, r- b" H+ H8 M
调试时可以发现ADC的值可以连续被转换。! i, W# F4 ] f% g9 e
三、FFT. F j/ e; n, v7 i8 h4 Q 1. 添加DSP库8 Z* v9 p$ Q) P' I5 o/ O) c CMSIS包含了数字信号处理的一系列库,在Keil中添加比较方便,如下图所示。! h; n0 ] u0 j a; C ' O% k* ^: e6 W$ B! D
. X( j3 q$ g( C$ d% U' r DSP库的资料可以在keil安装目录中找到,如下图所示。% P, I+ G0 o- A8 v# |, C
2. 数据采集 采集1024组数据,声明长度为1024的float数组后,当给数组赋值,程序会进入hardfault,发现是H750VB的flash或者ram不够。后面准备研究外部flash存储数据,如果是ram的问题那就没办法了。后面就只有研究FPGA进行数据处理了。 / Y+ `0 Y! X. D6 U$ O6 ?+ g 总结7 C1 {" \6 d( f* L# k 在整个过程中,发现使用6.0及以上版本的编译器编译的速度比5.0版本的块很多诶。 + @1 L0 N( _! ` n. m |
【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实现温度、湿度、气压数据读取
【福利三:逢7发帖赢大礼】成功利用STM32H743VI片内SRAM12和DTCM空间(完全胜利)
【福利三:逢7发帖赢大礼】想要充分利用STM32H743VI片内的RAM空间(但并不顺利)
【福利三:逢7发帖赢大礼】使用惠勤致远STM32H743VI开发板+ST7796并口彩屏移植LVGL9.5并分享一些额外内容
【 逢7发帖赢大礼】7、TouchGFX中实现云彩流动效果
微信公众号
手机版