你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

【经验分享】STM32 ADC详解

[复制链接]
STMCU小助手 发布时间:2022-3-30 11:00
01. ADC简介# g" Z( e& _) @6 T3 `( m. T# \
12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 V BAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。ADC 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。
7 k* O* _' s6 N- Z, x
; @" A& v, p0 N( f02. ADC主要特性& n8 a0 f( N, C7 b; @
● 可配置 12 位、10 位、8 位或 6 位分辨率
* @! B6 F% x5 v9 ?1 h● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断
' a7 H/ P) w* ^: L5 b  O● 单次和连续转换模式$ N( m5 g  v$ H+ I1 Y8 h5 n3 `
● 用于自动将通道 0 转换为通道“n”的扫描模式; V+ M$ r" S. M
● 数据对齐以保持内置数据一致性
+ h4 @. s- D1 Q● 可独立设置各通道采样时间
5 ?4 }1 {& @: T! Z● 外部触发器选项,可为规则转换和注入转换配置极性. `1 S8 }- a5 }2 h( T- J
● 不连续采样模式; ~8 Y8 Q, E! k# x$ {5 I9 M/ a6 \
● 双重/三重模式(具有 2 个或更多 ADC 的器件提供)' x& q" m* f& C2 P# A3 j! n
● 双重/三重 ADC 模式下可配置的 DMA 数据存储
2 u6 _( w+ X% j, d8 H9 {0 v8 `; f7 k● 双重/三重交替模式下可配置的转换间延迟5 c: u7 |/ p0 o$ I1 L! U. i
● ADC 转换类型(参见数据手册)6 |5 y. s% f+ Y3 L6 g
● ADC 电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V" X0 f' C) [$ [3 u0 a! M& i
● ADC 输入范围:V REF—  V IN  V REF+
5 [( l* l0 n: t% M● 规则通道转换期间可产生 DMA 请求* L; K: {2 [0 ~  E$ p# U

3 J% @4 O! b  B- F3 s* I注意: V REF— 如果可用(取决于封装),则必须将其连接到 V SSA 。/ ]& \4 o5 O) W+ C1 J
' A2 ~% n) x: F8 q
03. ADC功能说明
0 t& S+ [+ B) c: y  M5 j框图( R0 }% `% r% O+ H
! L. |9 u, h2 g4 H; M: C# {, |
20200911174158569.png
# U5 @/ }+ o! W: W* @3 H* e/ V 20200911174209875.png
+ `4 y* l/ U( S: ^+ c( ]5 ?! @* f1 N/ Z% `' P: }- W( J  d
04. ADC开关控制" R" i7 C$ f! e/ s- T+ ]6 ]
可通过将 ADC_CR2 寄存器中的 ADON 位置 1 来为 ADC 供电。首次将 ADON 位置 1 时,会将 ADC 从掉电模式中唤醒。
! f3 n4 g) ]7 m; L7 }2 d6 r; ]. a' n# G, d  W4 ~
SWSTART 或 JSWSTART 位置 1 时,启动 AD 转换。8 ~8 g( J& a+ t8 m
# x/ D- c; K. j) P( Z( V7 D
可通过将 ADON 位清零来停止转换并使 ADC 进入掉电模式。在此模式下,ADC 几乎不耗电(只有几 μA)
2 `% Z: l, |; g
2 ^5 b2 Y7 ]7 C) j2 E05. ADC时钟
3 h$ B/ a& m4 ^7 @* o& N* oADC 具有两个时钟方案:- y7 x$ T5 P$ d# }9 O: _
● 用于模拟电路的时钟:ADCCLK,所有 ADC 共用2 i1 A5 w& e$ k3 y/ D
此时钟来自于经可编程预分频器分频的 APB2 时钟,该预分频器允许 ADC 在 f PCLK2 /2、/4、/6 或 /8 下工作。有关 ADCCLK 的最大值,请参见数据手册。
+ h$ l5 G+ X( y2 N" p7 I: _; B* Q● 用于数字接口的时钟(用于寄存器读/写访问)
% q, z, f0 ?. {# `) U* L* }2 T此时钟等效于 APB2 时钟。可以通过 RCC APB2 外设时钟使能寄存器 (RCC_APB2ENR)分别为每个 ADC 使能/禁止数字接口时钟。1 q+ E3 ?& R" Z& {2 f& |/ I0 g
& P& m9 f* P9 m# l) O& S
06. 通道选择
' x7 l: u% k3 }! A有 16 条复用通道。可以将转换分为两组:规则转换和注入转换。每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。例如,可按以下顺序对序列进行转换:ADC_IN3、ADC_IN8、ADC_IN2、ADC_IN2、ADC_IN0、ADC_IN2、ADC_IN2、ADC_IN15。
" \1 B/ b4 z; t3 o2 ^
- S# d* W1 ^- q9 k1 u● 一个 规则转换组最多由 16 个转换构成。必须在 ADC_SQRx 寄存器中选择转换序列的规则通道及其顺序。规则转换组中的转换总数必须写入 ADC_SQR1 寄存器中的 L[3:0] 位。
3 {: x8 F) M/ w! w$ r) F8 c% i● 一个 注入转换组最多由 4 个转换构成。必须在 ADC_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位8 G5 ^% V3 J# k4 k4 Z. B5 T4 J! n
  t1 l4 Z" p+ B: G* z/ X% ^
如果在转换期间修改 ADC_SQRx 或 ADC_JSQR 寄存器,将复位当前转换并向 ADC 发送一个新的启动脉冲,以转换新选择的组。
9 T( e6 o, P+ N( ~5 K+ W; u: u9 l1 w( {4 ]5 ?$ k; x! e. u0 s  P9 l; N
温度传感器、V REFINT 和 V BAT 内部通道! B2 z. U, [8 n, w/ o
6 W2 y8 \( b1 l$ d5 H9 w( }' r
● 对于 STM32F40x 和 STM32F41x 器件,温度传感器内部连接到通道 ADC1_IN16。内部参考电压 VREFINT 连接到 ADC1_IN17。; G- A5 [& u2 ]+ ]9 X* V* _
● 对于 STM23F42x 和 STM32F43x 器件,温度传感器内部连接到与 VBAT 共用的通道ADC1_IN18。一次只能选择一个转换(温度传感器或 VBAT)。同时设置了温度传感器和 VBAT 转换时,将只进行 VBAT 转换。0 S, V1 q* ^7 v

7 w, h% y$ e  E, T6 w内部参考电压 VREFINT 连接到 ADC1_IN17。2 }( a2 a: ^$ T# E
V BAT 通道连接到通道 ADC1_IN18。该通道也可转换为注入通道或规则通道。
8 @) d3 ]& K% H- s- r8 G$ x注意: 温度传感器、 V REFINT 和 V BAT 通道只在主 ADC1 外设上可用。- o; }2 U3 s* S& c: r. A
! Y( Y( F- d+ Z! f# V1 d! V- v
07. 转换模式
( k; o0 F& w& A1 h+ v9 ~# T' [单次转换模式
/ L. ~$ N/ ~# d2 {* B
  I6 F% _2 S+ p+ v/ }; l. ?9 s
在单次转换模式下,ADC 执行一次转换。CONT 位为 0 时,可通过以下方式启动此模式:3 r8 u- \/ X( [* N
● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道)+ ^! d' u& [9 v$ [# s1 u
● 将 JSWSTART 位置 1(适用于注入通道)
, ]' K0 Q% h' F7 u5 f3 U9 R● 外部触发(适用于规则通道或注入通道)
. y7 C# z% E3 y9 h, @' b  z( m+ P: ?$ D0 E9 }( B- _9 [
完成所选通道的转换之后:
, @9 _2 m7 C+ b& E* U% G● 如果转换了规则通道:
! C. m3 D2 n+ W— 转换数据存储在 16 位 ADC_DR 寄存器中# K( G& ~/ L+ |/ ~0 o4 ]! G8 M
— EOC(转换结束)标志置 11 {8 u1 L0 E$ K$ D6 x
— EOCIE 位置 1 时将产生中断: m* _. [6 S& W+ `3 q
● 如果转换了注入通道:6 Z* v8 D9 Q# v4 n$ t9 L' }
— 转换数据存储在 16 位 ADC_JDR1 寄存器中
9 j8 U8 l; o8 i- V/ f$ V— JEOC(注入转换结束)标志置 16 |9 g* g# c, r# P  C( y- T& h
— JEOCIE 位置 1 时将产生中断
7 ?8 S: i3 o) @# f, G+ J7 L# v然后,ADC 停止。- g! ]+ L& ~, n& M: g$ [

- E) G; B" @8 i+ d# f) H! ^连续转换模式

( A' d# H- J7 }2 J6 r3 i  G& a7 ]0 [% K' b3 j; w
在连续转换模式下,ADC 结束一个转换后立即启动一个新的转换。CONT 位为 1 时,可通过外部触发或将 ADC_CR2 寄存器中的 SWSTRT 位置 1 来启动此模式(仅适用于规则通道)。
6 J# _  Z- X. k2 {9 `5 Z" y1 W  m3 `! {' \; v3 t
每次转换之后:
. |. ]4 U* B. J' Y; K● 如果转换了规则通道组:
) c+ p# R4 U, `4 c5 t— 上次转换的数据存储在 16 位 ADC_DR 寄存器中3 ?. G7 z9 x! X; x3 u  W
— EOC(转换结束)标志置 1
/ }  ]& D* C2 o$ }% T! D— EOCIE 位置 1 时将产生中断3 ~9 n( W: a; w3 j) m- h
6 m* v  P# `6 @, q
温馨提示
2 c8 O: @# {5 J1 E; B- S/ f- n' N* Q/ \3 C1 ~8 H: B- r
无法连续转换注入通道。连续模式下唯一的例外情况是,注入通道配置为在规则通道之后自动转换(使用 JAUTO 位),请参见自动注入一节
1 R3 w) |3 |8 u# k# J! z1 M, s) D/ T3 P( h) J$ s& y  X, m5 q6 o
08. 时序图6 w/ V% n5 I( F- r8 b8 k* J. w

% `: C. K; H# s  S' X( I! [ 20200911174224425.png * [9 O- X& A7 {& M$ b% C. c" C

' H+ H6 s, S5 U) t09. 扫描模式& R* i- U; i+ L- g  Z  ^
此模式用于扫描一组模拟通道。
% F& }: ?8 E2 ?# t) m通过将 ADC_CR1 寄存器中的 SCAN 位置 1 来选择扫描模式。将此位置 1 后,ADC 会扫描在 ADC_SQRx 寄存器(对于规则通道)或 ADC_JSQR 寄存器(对于注入通道)中选择的所有通道。为组中的每个通道都执行一次转换。每次转换结束后,会自动转换该组中的下一个通道。如果将 CONT 位置 1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。. x2 L0 Y4 t5 ?2 H# e+ @4 h
6 D3 {- M. e) V5 p
如果将 DMA 位置 1,则在每次规则通道转换之后,均使用直接存储器访问 (DMA) 控制器将转换自规则通道组的数据(存储在 ADC_DR 寄存器中)传输到 SRAM。4 g+ I4 s0 H! v/ [
7 _9 W4 x: S, y# a
在以下情况下,ADC_SR 寄存器中的 EOC 位置 1:
! g9 S% P9 S/ N- P● 如果 EOCS 位清零,在每个规则组序列转换结束时
1 B" d6 z7 N2 _# q$ B- y- N9 ~● 如果 EOCS 位置 1,在每个规则通道转换结束时7 E5 X( a, Y$ H" n! C# Y7 I3 R0 \
从注入通道转换的数据始终存储在 ADC_JDRx 寄存器中。
- N) z  K9 p1 ~3 ^8 H' H3 z% C1 l% a3 A$ s" P1 \; n
10. 数据对齐

+ v* g6 i6 w& yADC_CR2 寄存器中的 ALIGN 位用于选择转换后存储的数据的对齐方式。可选择左对齐和右对齐两种方式,如 图 38 和 图 39 所示' ]7 J/ X, }, g6 |
4 Y4 M  E( C5 S5 }
注入通道组的转换数据将减去 ADC_JOFRx 寄存器中写入的用户自定义偏移量,因此结果可以是一个负值。SEXT 位表示扩展的符号值。# I* }" Y/ c# U) r6 I

. m, d: m: i6 Y1 D7 S0 I0 X对于规则组中的通道,不会减去任何偏移量,因此只有十二个位有效。
) {8 l9 @6 b9 a% ~5 A8 N# P. W. n3 h& b8 u8 ]
20200911174239812.png
( d: `- c4 L/ {7 \  G4 w$ `, f5 T. }0 H4 d% O
11. 寄存器
+ o) m% @' ]) t7 r" r11.1ADC 状态寄存器 (ADC_SR)
" V; S. [9 p2 M5 Q
ADC status register7 v  @5 h/ H2 u8 w, q
偏移地址:0x00% p* v! ~  ]1 C
复位值:0x0000 0000
) b( i6 s- s' W; Q; R1 E1 l8 k! K# K+ m* P. M6 {; ~
20200911174251874.png   v3 D, n! R, h5 n% F

0 f* I( g% O3 J3 r11.2 ADC 控制寄存器 1 (ADC_CR1)2 D$ z# f! _7 u$ e' u
ADC control register 1
+ O0 n" a* N; P. T$ a偏移地址:0x04
, n3 W- D) Q& r0 C  L: R复位值:0x0000 00003 p+ o9 ~/ u0 f0 Q0 W

8 C4 f8 i. ^; a+ E3 M 20200911174301609.png
4 m; {8 |, K% A$ ^' t1 q1 A  R7 K  a  e/ ]
11.3 ADC 控制寄存器 2 (ADC_CR2)5 H, v9 i$ _$ \9 u
ADC control register 2
& h0 {' _# [" u/ O4 k偏移地址:0x08' ]/ {& J  t7 [
复位值:0x0000 0000; Y5 j, _! q/ W# V1 V. J( g
. x, ?! w, _7 k% H% }8 I
2020091117430997.png 6 x; w4 u$ y8 t
5 V5 l3 A: ?/ _  [% F
11.4 ADC 采样时间寄存器 1 (ADC_SMPR1), K. t5 f6 l5 b8 ?3 z8 D
ADC sample time register 1
4 W" c8 M6 N0 b, o3 d: Q' `偏移地址:0x0C
8 d( z0 _; l" k4 z( [3 M4 s9 ^5 c复位值:0x0000 00005 E: f7 s' l7 v% h# @5 M/ C
7 J7 }4 q9 \) w) h) P* r+ J# z
20200911174317631.png - N% }$ Q1 r4 X
  P; J, u3 r* S4 J" H. Y
11.5 ADC 采样时间寄存器 2 (ADC_SMPR2)
/ R* g" @2 {: g. t- p0 hADC sample time register 2
. D9 ?2 [' i: n& i偏移地址:0x10
+ m& X( i4 y9 Z复位值:0x0000 0000# e% }4 p! f- w% j9 }% v

# D- Z5 S9 Z$ ^( L+ V 20200911174324374.png
9 m/ F& @2 t! ]! N# c+ q6 j4 z; T+ t- t' b' S3 y
11.6 ADC 注入通道数据偏移寄存器 X (ADC_JOFRx)(x=1…4)
% g* V" [+ k7 U8 v% {, h- }ADC injected channel data offset register x
* m& Q1 }4 X$ W偏移地址:0x14-0x20
( Y8 t" h& P; T7 }9 O, e/ Y* D% B复位值:0x0000 0000
2 N) @7 Y$ d) s+ {
) I# _* Z' W$ H8 n8 D 20200911174332649.png & t" }5 D, d" f, ^/ E

9 X) Z+ ?7 ^$ U) X7 b8 X, [11.7 ADC 看门狗高阈值寄存器 (ADC_HTR)
. x6 H" i$ t5 c" NADC watchdog higher threshold register
4 E6 K; \' w/ Z+ d7 Z0 c偏移地址:0x24. N# f+ b! b4 G7 J5 h. x- ~0 X
复位值:0x0000 0FFF
( w5 p$ k$ d7 O6 H3 M) c
3 y& ?  U/ Y- Z* b4 N 20200911174341113.png
) ^' |; G- @9 R+ w& M5 z$ O, p  H
+ S' T! _8 e" b! |, v11.8 ADC 看门狗低阈值寄存器 (ADC_LTR)) x9 w: F1 L" R/ G7 `8 _
ADC watchdog lower threshold register( w. ^! ^) X% J8 u0 F
偏移地址:0x28
; L4 U; K% {: l复位值:0x0000 0000
, c9 F4 q* w6 V2 C
4 x% z! Z/ ^, l, M6 m 20200911174347934.png
0 z5 R# H1 d: ?
/ J) P. K6 u  P- q, ~( q11.9 ADC 规则序列寄存器 1 (ADC_SQR1)1 D& W: W( m+ U3 L
ADC regular sequence register 1
  F0 U0 h; ?# T, R; s偏移地址:0x2C
8 h0 P( x: A) o1 I0 h复位值:0x0000 0000; X3 \, G  T; E2 n) r; n

" ~0 ?- `7 }, _" M3 T% s% K 2020091117440048.png / i0 V8 Q; _6 o, [6 `: ?
% w& Q) H* S" C- g% {- F  o, _2 A; o
11.10 ADC 规则序列寄存器 2 (ADC_SQR2)

" p% M# ]% A% E+ u7 `! xADC regular sequence register 24 r& {. ?9 ^+ X1 J0 |& U
偏移地址:0x30' t- t7 s: n$ k0 c( w" m7 J* k3 t
复位值:0x0000 0000
6 G6 k: k. f7 p$ A7 ~% Z1 t; X
) o9 C3 Z. Q& m3 p 20200911174407621.png
) R  |$ u5 A" }) U8 e" ^) O, r/ b; {) x! [: l6 N
11.11 ADC 规则序列寄存器 3 (ADC_SQR3)+ g  P7 V5 c2 p8 L7 `7 v1 l. T
ADC regular sequence register 3
/ ?( k2 C6 l7 B偏移地址:0x34/ O) I7 ~' U+ {5 M% h4 g! g6 T# ~9 {
复位值:0x0000 0000
4 P( j' K1 A) G6 w# {) f" B2 t
. J% U7 D' J5 Q. p0 O9 n 20200911174414882.png / s; }* I$ f% D# R  T9 C4 T
: Q+ ?1 W& i! {0 ^) C& s
11.12 ADC 注入序列寄存器 (ADC_JSQR)
, v: K. E; S7 `6 H3 UADC injected sequence register
% h' m! t0 W$ x! ~偏移地址:0x38
. e# a: L" v) s复位值:0x0000 00008 y3 S: |3 b  U! H! ^  W0 g  w7 X/ E
3 P" p1 I* a4 {3 m' u' V7 Y
20200911174423509.png 8 \; o6 o6 ~. `" `# n$ l. _5 W
' b$ I: }7 Z0 r  r5 {+ v0 E4 R
11.13 ADC 注入数据寄存器 x (ADC_JDRx) (x= 1…4)
4 [3 ^1 z! |7 [: X. F& zADC injected data register x
3 d8 T7 \* U: ?+ G偏移地址:0x3C - 0x48% b5 w7 q' Q/ a/ k' U
复位值:0x0000 00004 E' M' D* x, D2 M6 e" o
) A% ?% p# O3 w5 i" L- E9 ?. N) H
20200911174429707.png
& M3 T0 m2 J! H& Y: T; ^- @
" ^, v4 G5 `) n5 V6 b% C11.14 ADC 规则数据寄存器 (ADC_DR); `. `! K5 N8 g! T5 [
ADC regular data register
5 T* A! J: y* {% I8 M* {6 n偏移地址:0x4C: [. K) @+ F( E( Y0 {, e  f
复位值:0x0000 0000# o; ]( e0 D7 v" X% W
; A- Q% j/ n8 R
20200911174436506.png
0 V! L& K. N% c/ ]6 W
" C- ?3 \& A  V; ^- e11.15 ADC 通用状态寄存器 (ADC_CSR)
9 o0 V5 t! D; b: `# f8 DADC Common status register
/ S  X2 Z9 L% T& ]" H* Z  h8 e! ~" ~5 d偏移地址:0x00(该偏移地址与 ADC1 基地址 + 0x300 相关)% _; Q1 a# M% r7 `/ M$ j+ K5 X9 I
复位值:0x0000 0000  d4 ?1 c% J6 [8 I; p
该寄存器可提供不同 ADC 的状态位图像。但是,它为只读形式且不允许将不同的状态位清零。必须在对应的 ADC_SR 寄存器中将其写为 0,才能将各个状态位清零。8 {3 A: p2 [6 B% |* v6 V% J1 r7 x
& }" Q1 p* l1 g- w) ]& s- B
20200911174444527.png 2 h; J0 {% K: e  v( n8 f$ h7 J" `* g

- m" H3 i0 Q, E0 I7 y4 F: I11.16 ADC 通用控制寄存器 (ADC_CCR)3 t3 W: `1 F0 v! W' j
ADC common control register
, v& k8 V& e' j& n7 w  }偏移地址:0x04(该偏移地址与 ADC1 基地址 + 0x300 相关)
: J: y! W! o, f$ ^# R复位值:0x0000 00009 |6 w/ w0 P( u# ?6 l
! s9 o) [! Q, S  t
20200911174451201.png
7 ~/ l$ N7 b, N. L" F$ X
6 I' A8 v, K& e$ Y4 s11.17 适用于双重和三重模式的 ADC 通用规则数据寄存器(ADC_CDR)( U& S  M' t4 y& h1 N
ADC common regular data register for dual and triple modes) q0 `* X4 _( q3 Z! e# }* n8 ~
偏移地址:0x08(该偏移地址与 ADC1 基地址 + 0x300 相关)4 }9 f4 [3 \. c6 p
复位值:0x0000 0000
* U3 \! S0 g$ g8 g8 r/ a' D7 Z: [# f0 V9 M# N' p
20200911174458593.png " a5 m# K: o6 X7 Y7 X& H
. u9 I+ r" V9 Z8 ~3 P8 I, x
# i0 R; N7 `+ R2 z) o

" h: \7 ^% W+ e* w' F
收藏 评论0 发布时间:2022-3-30 11:00

举报

0个回答

所属标签

相似分享

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版