|
之前有陆续介绍STM32的ADC采样与板载运算放大器,本期我们将二者结合,顺带再完善一下ADC采样与DMA。 6 {) p3 E/ y2 e4 x/ @ 板载运算放大器$ @. o* C9 f {' F2 g# |' d 板子使用的ST公司的STM32G474RE部分板子上没有板载OPAMP的话可以忽略运算放大器的部分。
9 Z& B% [8 H9 S; ~
2 J5 i0 P( A5 C( | 我们打开运算放大器的跟随器功能,将跟随器的输出和STM32的ADC绑定,使得我们的信号接入PA1即可通过跟随器被采样。: k8 G. i0 O0 o 8 | r* V( e5 J6 T& } ADC配置 ) Y, S' z# K. x9 ^
& h2 {! B' `4 F7 i) G* Q 开启ADC1_12,这里通道12只能配置为单端输入,其他的通道可以配置为差分输入。( ?) r: F" l0 ^+ P9 |, W4 W " a0 b9 k; E6 \4 j( X
" |- b* Q& z5 X ~ 添加DMA传输,模式选择正常模式,这样子我们只采集一组ADC数据,这里如果开启了Circle模式的话,环形存储区会导致DMA后面采集的数据覆盖前面采集的数据,导致数据乱飞。 4 r* n* |+ V, u0 A* ]. d
触发方式(启动ADC转化)我们选择定时器8,这边可以是任意定时器推荐使用的是低级定时器,这样子就可以控制我们的采样率。% k$ O( j, U4 f# y6 q 定时器配置9 S- p* } u- k# @7 l 这里解释一下Timer 8 Trigger Out event. 2 p7 A1 ~+ [1 b7 v( H+ } 定时器(Timer)的触发输出事件(Trigger Output Event)可以用于生成特定的触发信号,以触发其他外设或事件。4 [7 G7 `- g% Z: P7 ~6 M7 s" J |$ d 在STM32定时器中,可以配置不同的事件作为TRGO信号的源。常见的触发源包括: 更新事件(Update Event)/ H; I. x6 F% e# q* ? 当定时器的计数器溢出或达到设定的周期值时产生的事件。& a# w. \) v8 Z7 x% i" K5 b 捕获/比较事件(Capture/Compare Event)# y- Z; f, L. m! X2 x, F1 _7 V i 当定时器捕获输入信号或计数器值与比较值匹配时产生的事件。/ p7 p0 v* U( }$ u" b8 R 输出比较事件(Output Compare Event)# `& P# l8 r' e& M" u6 T, D 当定时器的输出比较单元产生一个输出信号时的事件。% _# V) C# O0 ^5 v8 y" P+ m ' t1 Q# D/ x1 O9 w# `5 u& _* S
这里设置好我们的分频系数,计数值,设置一个Update Event更新事件来触发定时器采样。这里我的主频是170MHZ,分配系数是169,溢出值是100,这样子过100us触发采样,采样率固定下就是10KHZ。 我们强调过好几次,根据奈奎斯特采样定律,采样率必须高于信号频谱最高的两倍,当然我们在性能充裕的情况下最好是在最高频率的倍数高一点。
最后别忘记开启相对应中断源的中断。 - s# x, v& L5 c# j5 v 接着就是创建工程。 : q* ]% }4 S0 E, D
定义一个数组用以充当DMA的缓存区。
在主函数中使用轮询的方式等待ADC传输完成,传输完成后我们利用串口打印。- C' A, H4 Z( n; k! O+ m 我们使用HAL_DMA_GetState函数来获取状态。
; ~4 G E: k5 X0 C HAL_DMA_PollForTransfer这个函数按理来说是用来查询传输结束的,但是不知道为什么使用起来很奇怪。7 F( a/ z5 ^9 E) r- x0 Y7 [1 o6 F# m 0 \3 C* u( v) B: w/ {2 ^' J' _
这是我们采集的方波信号 " [6 v5 I, L& k6 P- o 转载自:电路小白4 |+ S: o4 A; F9 M2 s k' q( G$ n 如有侵权请联系删除 - g7 M- r! X( A- c |
经验分享 | 通过STM32 TIMER的PWM功能模拟输出正弦波
STM32H563 ADC+TIM+DMA应用演示
SPI 32位宽DMA方式收发失败问题
多通道DMA传输为何有一路异常?
经验分享 | STM32N6 ADC DMA 传输失败案例分享
经验分享 | DMA发送函数只能第一次调用有效?
经验分享 | 使用EXIT0同步触发SPI的DMA发送话题
【开发经验】LAT1500 如何通过DMA配合CRC功能
实战经验 | MC SDK V6.x软件HSO功能ADC采样设计说明
我心中的ST中文论坛
微信公众号
手机版