什么是ADC? ADC是模数转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换为数字信号的设备。在嵌入式系统中,ADC常用于将传感器产生的模拟信号转换为数字信号,以便微控制器进行处理。 ADC是非常常用的器件,所以应该学会如何使用。 7 z% o) r0 h+ c' E& x! U " S4 _0 i6 w/ H2 E* O 9 P" d$ O' Y1 c! a9 v, h8 L: H T0 \- D& h) ~3 q STM32中的ADC7 |3 j- n/ U6 X: z& q- R# F STM32微控制器系列是由STMicroelectronics推出的一系列32位ARM Cortex-M处理器的嵌入式系统。STM32系列通常配备了内置的ADC单元,使其能够轻松地进行模拟信号的数字化转换。, a- N6 `1 h( N, ] . o! i8 W; L8 `1 S+ q- { " E: A+ [2 Q; ` STM32 ADC的主要特点 1.多通道: STM32 ADC通常具有多个通道,允许同时转换多个模拟信号。每个通道可以连接到不同的传感器或电压源。 2.分辨率: 分辨率表示ADC能够将模拟信号分成多少个离散的步骤。常见的分辨率有12位和16位,分辨率越高,转换精度越高。4 w: ~1 b$ E' T& ^ ( l- {4 e: C1 V8 f$ N, L5 ^# k 3.采样速率: 采样速率是ADC每秒对模拟信号进行转换的次数。STM32 ADC通常具有可调节的采样速率,允许根据应用的要求进行优化。. o: G* v: D1 O3 o% |6 M 4.触发模式: ADC可以通过软件或外部触发启动转换。这使得可以根据需要灵活地控制转换的时机。3 U! V# S# A# r w* E CubeMX初始化8 R4 q! O; p+ N: g 其实STM32的ADC可以分为单通道与多通道两种。 / b0 e5 ~( q5 S$ c5 Y0 @ & T4 O" d& I- x8 f: e 单通道即使用一个IO来实现ADC,多通道也顾名思义,使用多个通道ADC时如何处理。" g. E7 m+ ?. T7 P' n- n 7 x% S7 E/ b3 D6 f* T1 K8 A 2 U3 q$ C% C' s* T. ~3 _( h 单通道ADC配置图片 ( x+ q3 j/ L- R. G/ O8 T % M8 x" c0 |5 H$ j: g8 ^( @ ( b3 O) e& N, c3 b$ k5 U6 i! c : E1 D8 Q; e: e! X7 X 在CubeMX中选择好对应的芯片,配置好时钟,开启串口方便调试。) q& a3 [+ B4 ~4 Q' w - o/ c( ^& J, a G' S& h) a * O% h% y+ P% X6 f 选择具有ADC功能的IO,点击开启ADC。 ADC设置 1 U+ Z; {0 {- k1 K6 R' l0 d$ y * a0 ?( z, Z) J& Z. D) _6 ` 1 M, ^. o, K) s, ]6 R8 Y/ { 设置ADC的模式,单通道的话大部分都不用改。4 X# l7 ~1 y' `- d4 ?1 d 然后就可以生成我们的工程了。 代码配置
在Uart.c中重定向我们的串口,方便使用Printf函数。
6 p$ |" F8 R) X( d( G 可以看到我们实现了单通道ADC。 : {- q' j4 M* E" a2 y; g; Q/ H" \ 1 L) E# H# B6 K6 ^ 多通道ADC* Y% _8 r: l% a: z 多通道ADC,我们使用多通道间断模式: n# |, k$ z' s+ }5 X5 n. e- o + a2 `, ~: q- g% e+ o $ V) f4 Y% s: J$ f! u" h& D4 o ; I, h F" v, I6 J! X + v/ F4 @; F* F. \" m) `) a 开启多个ADC通道。 P6 A) o! F+ H4 O& ] 9 d, L4 t0 |! j$ P+ R( }8 Y: x 这里必须使能扫描模式和间断模式 % [0 f9 g+ C' q9 H0 `$ V% Q# ` 1 F. ~2 |3 @; n3 I6 N; D ; i% R8 q% V$ c 8 x# d' W$ @! N/ g( l- ~ 通道数设置为3,顺序为12,13,14.9 E/ N9 @0 n0 W" g3 [$ \5 z
这样子ADC返回的值就是按照通道顺序而定。; c c1 X% e7 _& B3 T 6 ]5 T4 f% q" w - M% \) \; l& l: ^ h & A3 l6 _' [. v- J. e 可以看到,可以读到ADC的值并打印了出来 l' i6 O. o0 w" @, W2 ^2 o3 G# ?* t ( I( ?3 T5 T" `9 ]2 e- M/ I 转载自: 电路小白 ( e8 `0 g# _# P5 ]8 S s# E0 n ) K( x5 x. X7 M6 P) F 如有侵权请联系删除" d3 p# v* R- l, t! v9 C # r+ P2 y& w: w2 z2 g 4 B$ t4 n- w3 e% o" n4 o, } |
X-NUCLEO-IKS4A1实现手势滑动
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
【Wio Lite AI视觉开发套件】+cube.ai与食物识别
刘氓兔的杂谈【001】-片上USB 高速PHY
【STM32H7S78-DK评测】CoreMark移植和优化--兼记printf重定向实现方法及常见问题
实战经验 | 从CubeMX下载生成STM32元件封装库
【STEVAL-STWINKT1B测评】1、点亮LED
【STM32H7S78-DK评测】移植AI框架TensorFlow Lite【上篇】
【STM32H7S78-DK评测】移植边缘AI推理框架——TFLM(TensorFlow Lite for Microcontrollers)上篇
基于STM32使用ADC的多通道采样经验分享