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

【经验分享】STM32 ADC详解

[复制链接]
STMCU小助手 发布时间:2022-6-14 14:52
01. ADC简介- S0 E5 d5 S+ Z9 r" ^, X9 e, p, s
12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 V BAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。ADC 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。
. z$ ?# Y' o0 y8 a7 A
+ ?4 S$ T- h" [4 s02. ADC主要特性
) l9 x  B- |6 o0 L● 可配置 12 位、10 位、8 位或 6 位分辨率
" ~/ J) b7 J) R  [● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断5 V3 s! c4 I! [. H/ X2 d; \
● 单次和连续转换模式% ]- D" I1 e3 D5 r
● 用于自动将通道 0 转换为通道“n”的扫描模式
" ?  R9 e9 \0 Y" A, d+ ~) I/ `4 t● 数据对齐以保持内置数据一致性
) X) I7 v6 V7 t, R: H+ F& \9 R● 可独立设置各通道采样时间
5 }0 e$ H7 m/ ^9 w! |! L● 外部触发器选项,可为规则转换和注入转换配置极性
/ |' \2 |( j$ _4 ?$ b● 不连续采样模式" c6 l( x- n  v  w' U! g! [
● 双重/三重模式(具有 2 个或更多 ADC 的器件提供). q9 z( E( r* f; d0 ?1 P
● 双重/三重 ADC 模式下可配置的 DMA 数据存储
1 M, g$ ]( ~* Y' x# P● 双重/三重交替模式下可配置的转换间延迟6 o; u2 i) j3 M; I  F% k. |
● ADC 转换类型(参见数据手册)' Z: R( S8 O2 q: l* G8 d- f
● ADC 电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V
" M2 u- R+ s) t2 V: w& j. U● ADC 输入范围:V REF—  V IN  V REF+
/ f0 a% I* G/ u6 @0 v* n' i● 规则通道转换期间可产生 DMA 请求, Z& j# f4 d( N+ {- R

% j4 Y/ j& X, S, H  Z$ \& `注意: V REF— 如果可用(取决于封装),则必须将其连接到 V SSA 。
) S2 O  a! K, {7 y
$ D. S+ D1 |& v( b+ g: R03. ADC功能说明
3 G3 M# M% ~* W' ]框图" P2 }, h! |: E+ w* i. Z- B

2 Z- M% v; o. d) y) ] UKV3YY`MKV)A6BMUOU`)Y53.png ( R% E9 g# h% U0 Q' m- h
5BR_]HTDOCDA~CLS9RXR.png # V5 i2 R: p% _

9 a6 k- k( H5 [- ^04. ADC开关控制. {# @5 y* \& p3 C: e+ j
可通过将 ADC_CR2 寄存器中的 ADON 位置 1 来为 ADC 供电。首次将 ADON 位置 1 时,会将 ADC 从掉电模式中唤醒。
8 G7 e% W$ q) J4 ]) g* d- T& K. }1 s2 k) \5 ~1 O) D- N
SWSTART 或 JSWSTART 位置 1 时,启动 AD 转换。
7 h. ?9 M: ]; d) r2 r- k& z! V, C
- g  t; d/ a/ G1 V可通过将 ADON 位清零来停止转换并使 ADC 进入掉电模式。在此模式下,ADC 几乎不耗电(只有几 μA)
: ^4 I5 b7 b/ W* r1 ~
4 \% G4 K' D+ z& W- B+ y- Q05. ADC时钟
6 y$ z$ c9 N! h; M1 kADC 具有两个时钟方案:5 f" g# i) h; W+ ?* E4 J
● 用于模拟电路的时钟:ADCCLK,所有 ADC 共用
2 q  x# S# s- O- z此时钟来自于经可编程预分频器分频的 APB2 时钟,该预分频器允许 ADC 在 f PCLK2 /2、/4、/6 或 /8 下工作。有关 ADCCLK 的最大值,请参见数据手册。! Q! ?! T' K, W$ r
● 用于数字接口的时钟(用于寄存器读/写访问)" d; |9 j, b# i$ U9 e: A
此时钟等效于 APB2 时钟。可以通过 RCC APB2 外设时钟使能寄存器 (RCC_APB2ENR)分别为每个 ADC 使能/禁止数字接口时钟。
4 S+ s- }3 |! j% b2 V6 {( i3 f  }9 H5 v* g* w2 `+ Q* w. |
06. 通道选择
0 s7 x9 h0 f$ x. g/ W有 16 条复用通道。可以将转换分为两组:规则转换和注入转换。每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。例如,可按以下顺序对序列进行转换:ADC_IN3、ADC_IN8、ADC_IN2、ADC_IN2、ADC_IN0、ADC_IN2、ADC_IN2、ADC_IN15。; a9 c8 _' i! O) ?2 `) i+ V

  U! O/ t  X4 F2 i● 一个 规则转换组最多由 16 个转换构成。必须在 ADC_SQRx 寄存器中选择转换序列的规则通道及其顺序。规则转换组中的转换总数必须写入 ADC_SQR1 寄存器中的 L[3:0] 位。: @  V5 j- b0 s8 ]
● 一个 注入转换组最多由 4 个转换构成。必须在 ADC_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位
' X- L6 L: _# b" B+ L' C# g# k8 }; h! h
如果在转换期间修改 ADC_SQRx 或 ADC_JSQR 寄存器,将复位当前转换并向 ADC 发送一个新的启动脉冲,以转换新选择的组。
5 C6 C8 {* }& p7 F' y" v( w/ D3 ^" ]8 o3 j( r2 h" B
温度传感器、V REFINT 和 V BAT 内部通道
6 U% q1 c! p( C6 n" z& i- b( Q; S& N" }" c, N1 y
● 对于 STM32F40x 和 STM32F41x 器件,温度传感器内部连接到通道 ADC1_IN16。内部参考电压 VREFINT 连接到 ADC1_IN17。5 z% {+ o; f( y1 t8 j
● 对于 STM23F42x 和 STM32F43x 器件,温度传感器内部连接到与 VBAT 共用的通道ADC1_IN18。一次只能选择一个转换(温度传感器或 VBAT)。同时设置了温度传感器和 VBAT 转换时,将只进行 VBAT 转换。, i% l! E5 g$ z$ F6 B4 R; ^
) g4 J$ f% c0 w. y8 Q1 T
内部参考电压 VREFINT 连接到 ADC1_IN17。
1 V5 h+ P* m8 e$ B0 q; Z3 j1 JV BAT 通道连接到通道 ADC1_IN18。该通道也可转换为注入通道或规则通道。: |+ ]- ?% A3 ?, ?: {* }: ^+ _
注意: 温度传感器、 V REFINT 和 V BAT 通道只在主 ADC1 外设上可用。
4 @7 q, O. f/ V- }1 ~6 T* O
0 g0 j7 Z8 w: p* W. s4 x' s; e# h07. 转换模式
7 }! n, u- }7 @5 h单次转换模式
; g) i, k5 u% s" R, X8 g
/ T5 M. w( T7 T+ H2 @在单次转换模式下,ADC 执行一次转换。CONT 位为 0 时,可通过以下方式启动此模式:- P3 _4 {# o- O: s. l
● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道)1 v5 Z/ r/ a5 p
● 将 JSWSTART 位置 1(适用于注入通道)
  Y9 p8 D! _% s5 d; z● 外部触发(适用于规则通道或注入通道)
) f8 s3 V" N) H$ Q4 T
! v5 u' {4 k, H0 b/ |2 y, V完成所选通道的转换之后:8 @/ X9 K) s3 d
● 如果转换了规则通道:8 }- l/ `( A% P
— 转换数据存储在 16 位 ADC_DR 寄存器中
# z6 W) H, s3 c5 z# o4 Y— EOC(转换结束)标志置 1" p9 ]) d- ?/ |" S
— EOCIE 位置 1 时将产生中断! D+ y  A. ^* {* U0 f( u# K
● 如果转换了注入通道:" J1 S+ l5 R+ X# j9 i( T  d+ K0 d4 N$ F
— 转换数据存储在 16 位 ADC_JDR1 寄存器中
( ~% x+ w$ L* X% \2 L1 U! [— JEOC(注入转换结束)标志置 1
/ h# I% `. K/ d6 F- ]$ `— JEOCIE 位置 1 时将产生中断
0 j% v$ u8 |$ @然后,ADC 停止。
# F; |/ ]/ Y8 x0 X# s! h$ s
& t0 _- U; L  T7 I; u连续转换模式4 `1 E! L- O" p
1 x+ R  y, w! R/ U4 x  ~
在连续转换模式下,ADC 结束一个转换后立即启动一个新的转换。CONT 位为 1 时,可通过外部触发或将 ADC_CR2 寄存器中的 SWSTRT 位置 1 来启动此模式(仅适用于规则通道)。5 C+ T% I- U  a  {( G% Z( w/ z! y! {
5 C, S# D( U- n) b  U0 H
每次转换之后:
+ A$ }! X. ~  b8 Y0 i, a● 如果转换了规则通道组:
5 m; L9 M+ K# z7 w5 q2 T— 上次转换的数据存储在 16 位 ADC_DR 寄存器中
# N9 P0 |0 s( ^$ r9 Q$ b% @' x4 i— EOC(转换结束)标志置 1# p1 C% h4 t$ x9 }) L: V7 O
— EOCIE 位置 1 时将产生中断- G! o3 T/ e; v8 o
4 H( d9 n2 e7 f- z5 ^; x
温馨提示9 R7 u( ]5 z! n1 W2 n
. s/ [+ m# ^3 z* s' j
无法连续转换注入通道。连续模式下唯一的例外情况是,注入通道配置为在规则通道之后自动转换(使用 JAUTO 位),请参见自动注入一节( E5 A6 o3 d5 a+ d  E$ V0 n" E- f

- @. k2 V* G* ?; ~9 {/ t08. 时序图( B' J- P  ~; z7 j" L# _

5 D! E( C8 i( m
EMK5LWHRZ3]VT_6H0[D{]}2.png
7 a0 A' Z& R& Y# S7 M' i! S; z0 N/ s/ s5 y. q4 a( P, ?/ |
09. 扫描模式
& ?# d  v* ?- P
此模式用于扫描一组模拟通道。
- S5 {2 J1 F  D" l, h  q) S通过将 ADC_CR1 寄存器中的 SCAN 位置 1 来选择扫描模式。将此位置 1 后,ADC 会扫描在 ADC_SQRx 寄存器(对于规则通道)或 ADC_JSQR 寄存器(对于注入通道)中选择的所有通道。为组中的每个通道都执行一次转换。每次转换结束后,会自动转换该组中的下一个通道。如果将 CONT 位置 1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。$ I' B; _& R5 ~4 s( Q

5 n# E+ P- C* h; O  }. U( a如果将 DMA 位置 1,则在每次规则通道转换之后,均使用直接存储器访问 (DMA) 控制器将转换自规则通道组的数据(存储在 ADC_DR 寄存器中)传输到 SRAM。
8 {/ S* T& @" k8 c- U8 R* B$ Q* v/ u5 X. s
在以下情况下,ADC_SR 寄存器中的 EOC 位置 1:+ {/ \, C3 @9 }2 q9 G
● 如果 EOCS 位清零,在每个规则组序列转换结束时
) d! }% z/ p/ y1 Y. a; H● 如果 EOCS 位置 1,在每个规则通道转换结束时
3 T. `3 j4 d& W从注入通道转换的数据始终存储在 ADC_JDRx 寄存器中。# [9 }& f2 M% w7 W$ ]
: [3 i; f0 K4 }6 [% T0 b4 X1 B
10. 数据对齐
7 m  i; \2 X/ UADC_CR2 寄存器中的 ALIGN 位用于选择转换后存储的数据的对齐方式。可选择左对齐和右对齐两种方式,如 图 38 和 图 39 所示4 J1 a( A# |5 B/ `
  E/ O$ _% ]+ f2 S2 C( }; }
注入通道组的转换数据将减去 ADC_JOFRx 寄存器中写入的用户自定义偏移量,因此结果可以是一个负值。SEXT 位表示扩展的符号值。8 H$ O. ?  Y6 J. X- y' Y/ F
8 H- d' M6 g# `3 F. {
对于规则组中的通道,不会减去任何偏移量,因此只有十二个位有效。, Q* F0 e3 T" J$ ^: G# D8 d) o/ U

+ N$ M- O4 w4 e: i# l% i4 C' P9 { OCUXBJ9Me(89QUT4Q]GBR.png ! d% I3 g7 d' S) ^8 F& G2 Z2 N8 S3 y

' P- W: H. ]- j, g3 ^11. 寄存器
; t' J7 s9 h; c4 V( I) O) W11.1ADC 状态寄存器 (ADC_SR)
) @- M; b7 L- B9 `# w( @4 T
ADC status register; e/ X7 a4 V1 w6 y% u  c
偏移地址:0x00
0 j4 P- v* {6 g4 f- X- T复位值:0x0000 0000
' g6 [1 J  Z6 ]3 }! a* X* s1 {4 k6 n4 W; B( I& \3 k
20200911174251874.png
& Y7 L# G" c8 c) s; s
6 F/ n; Y3 P% n' Q: b4 f/ F. q: t11.2 ADC 控制寄存器 1 (ADC_CR1)
# n8 k) p$ y9 i# ]" A1 ?: b8 bADC control register 1
6 {; S  F) n" H9 a- I9 P偏移地址:0x04( g, _7 w1 v, R4 o# i; p
复位值:0x0000 00002 A. l3 @; C/ w9 ]9 f& Z

+ s7 |5 z5 J0 z+ t( Y 20200911174301609.png 1 \& k6 Q: F8 x' t
7 n6 f2 \% G7 t* D, K& k2 Z$ H
11.3 ADC 控制寄存器 2 (ADC_CR2): H8 o. k4 o7 T( O! v' a; C& C
ADC control register 2
$ S% ?) N% q/ v" g偏移地址:0x08' G1 _6 F9 V# O. q6 a
复位值:0x0000 0000
1 a+ u% B& _" W$ b* ~4 r& c& w, W# ^0 H9 q3 `
3{$BIXFI2(V2T97K[09O(Z8.png # v7 Q3 \* k$ _/ s$ l8 w& t2 H$ Q

1 H5 Z* |( i5 _' l11.4 ADC 采样时间寄存器 1 (ADC_SMPR1)
: n' ^! c0 F8 p; b) z% l: G5 WADC sample time register 1  k, g- L& K' y8 W# W
偏移地址:0x0C# p3 W7 b; X  Z$ v! g
复位值:0x0000 0000
4 c% Q6 t# \) j: p
/ O. o; S0 F6 X" e 20200911174317631.png , s0 E, t* q! `. {, E
% a1 ?$ [! _6 x2 f
11.5 ADC 采样时间寄存器 2 (ADC_SMPR2): p* v% q9 E! L
ADC sample time register 2
2 ]6 A/ n" w% l6 C偏移地址:0x10+ B, o: c$ C+ v! {
复位值:0x0000 0000
9 P& A2 J) q* n$ T8 G/ z9 u) U* {* T- g0 t
SKV`G_[PR4$$]794GP[X.png 0 S  P: P# i5 L  P& {3 ~0 D8 |
+ U0 y  l* g& B. N
11.6 ADC 注入通道数据偏移寄存器 X (ADC_JOFRx)(x=1…4)7 p& o2 P6 r' T. g" p
ADC injected channel data offset register x
* B& L1 j% R9 M0 t1 o+ K偏移地址:0x14-0x20) E8 T3 A9 z- L9 _4 k
复位值:0x0000 0000
- L9 g) K0 i$ d) _+ i1 y7 P& H; I/ H2 a& n# z+ k: I$ S
20200911174332649.png
9 L4 N  A- }. Z& N* L' o
6 F9 S4 L+ T; }5 {! B* K0 I% _11.7 ADC 看门狗高阈值寄存器 (ADC_HTR)
) B1 }8 n8 }# [2 |& z4 YADC watchdog higher threshold register( m0 O, E' r) e+ y
偏移地址:0x24- Q- g; z7 I4 h- W
复位值:0x0000 0FFF
& o# b- ?- f8 P* S9 _2 ~3 q( c% }4 L5 p; Z3 I  b' P
20200911174347934.png
2 m2 L* o& X7 D$ D: X) u- ]4 \2 D4 V* `- H8 u, ]1 F4 J* f$ Y
11.8 ADC 看门狗低阈值寄存器 (ADC_LTR)
% r$ Y. h. W1 Q( A2 q9 i+ m- YADC watchdog lower threshold register& P& ]! C9 M; H3 e( s
偏移地址:0x28% `) \+ E- w% \3 q* e% V" \$ h
复位值:0x0000 0000  C, f' G# J4 V: \
& A  |* e9 ~+ O- o
20200911174341113.png / N0 ^  h( t* i* Y$ b0 x' n( M

& G: j' f1 D0 B1 H3 _; d- P11.9 ADC 规则序列寄存器 1 (ADC_SQR1)
: B6 p3 i8 S- }$ ~& L
ADC regular sequence register 1, U1 {9 Z* z. t( J  J5 G' Z
偏移地址:0x2C9 `9 A. L' E8 y8 q% x
复位值:0x0000 0000
9 w, v' O8 X( y6 m2 T, \' P2 ^: i! y$ c$ L) Z9 W6 P& q4 ~

+ M; |  A- m, _8 Y+ s. F) K  @
1 T7 j, l' ?5 Z& r! O11.10 ADC 规则序列寄存器 2 (ADC_SQR2)
, D* B$ q/ ^! [  BADC regular sequence register 2
( L2 N( b7 A9 ]; Z5 {% t3 ^偏移地址:0x304 M0 @0 T9 {4 F. I9 R* f# e
复位值:0x0000 0000
  J+ Z* P8 |& |1 H* b, i) D+ {  t. U  ^3 J8 C- k6 s" ^  d
20200911174407621.png
/ ?: Q$ A& f1 Z- b# v# Z0 r4 Q+ H$ S" B( W6 W
11.11 ADC 规则序列寄存器 3 (ADC_SQR3)
: |- _% D9 o( B* v  q. S8 lADC regular sequence register 3
- ]3 J) X1 ?6 O; j偏移地址:0x34. a: B! H7 O0 _$ S/ Z7 n
复位值:0x0000 00004 F. J2 Y, \  w3 R" [8 ?7 J5 e

6 M& I: o7 B5 o6 \ 20200911174414882.png , T  n+ _; p5 @5 {7 m* O

; x8 H, p, m) L; \; v11.12 ADC 注入序列寄存器 (ADC_JSQR)" ]( y4 ]' P8 Q8 e& Z
ADC injected sequence register
8 C$ e# I$ y$ T: K5 D: \偏移地址:0x38
, a) L' C5 o& u2 c' D  }复位值:0x0000 00007 u* G. G  J$ H. {% o
. O1 ?* x5 |  s) s
20200911174423509.png " k$ R* I. ?' `( U% e/ T' z

4 H; F& G5 s1 O& n* {) U% R11.13 ADC 注入数据寄存器 x (ADC_JDRx) (x= 1…4)
/ A4 K* J+ O& ?0 X* o; t/ zADC injected data register x
2 H) G3 `, a7 f6 Z/ _6 o, a偏移地址:0x3C - 0x48
. C- `+ N# n2 S/ X# N复位值:0x0000 0000) ~% N5 X/ b1 G1 `# o( s4 l4 c

0 Z8 s9 j' H. T1 `, A! m 20200911174429707.png
+ H- P+ K2 P# s+ A1 N" |5 B. }! v2 ]4 ^$ h+ J- T5 a4 H
11.14 ADC 规则数据寄存器 (ADC_DR)
$ P0 g8 L" s. I4 b/ TADC regular data register9 B% u3 R/ Y/ \9 M; U) j; p) t
偏移地址:0x4C) o) y+ J( i% R( \  l
复位值:0x0000 0000$ T- ]5 T& t9 u7 P) I7 W

+ ?: o. S+ D" E" j3 ^ 20200911174436506.png # V/ y' y- M" n/ x5 G$ w8 {; k

+ O  ~! R$ j1 W9 E" o11.15 ADC 通用状态寄存器 (ADC_CSR)
9 W2 {5 g+ |) rADC Common status register/ U! h" J; ?+ l. O6 C$ N1 P. h) d
偏移地址:0x00(该偏移地址与 ADC1 基地址 + 0x300 相关)' E* G* p5 S0 P
复位值:0x0000 0000% k& G) S% X" A- |
该寄存器可提供不同 ADC 的状态位图像。但是,它为只读形式且不允许将不同的状态位清零。必须在对应的 ADC_SR 寄存器中将其写为 0,才能将各个状态位清零。0 v: W3 j" f; n
6 z, |" t2 I  a9 u/ i
_0TDH%1I7LMR2I9IYZ2G0F0.png / F* ?# w4 s% ]" ~0 J( z( N/ ]

$ O0 k3 S+ i5 `3 }+ s/ M/ P6 r' Y11.16 ADC 通用控制寄存器 (ADC_CCR)
/ h* }3 c+ u8 X3 u- L4 p, m
ADC common control register1 y6 H; j' z! Q" ^9 [% @" x
偏移地址:0x04(该偏移地址与 ADC1 基地址 + 0x300 相关)2 }# ^0 C% O. A3 J+ m  f: T9 z
复位值:0x0000 0000
  N2 S* z: ^& e3 z* M8 N4 }2 S4 Q( M4 b2 B+ w8 ~
20200911174451201.png
0 Y" c& m+ |/ @) ]! F" x" ^, Q# n( ~5 S0 w1 o+ A; @. n# n4 Z
11.17 适用于双重和三重模式的 ADC 通用规则数据寄存器(ADC_CDR)
0 k) N+ ~! `  f+ _' l+ ?! d6 UADC common regular data register for dual and triple modes4 E/ i" ~, K) s) ~7 q
偏移地址:0x08(该偏移地址与 ADC1 基地址 + 0x300 相关)
2 Q/ c3 ]0 u4 H& V0 _/ i! ~复位值:0x0000 0000
4 C* L9 x0 t6 G
: t' Y9 p  t1 h 20200911174458593.png 8 B# B2 T' o/ |- E$ [* R
' N  [7 G- O1 i

" U1 @4 w3 V' ?, u0 ?! s
2020091117440048.png
赞 收藏 评论0 发布时间:2022-6-14 14:52

举报

0个回答

所属标签

相似技术帖

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
人形机器人运动控制、感知与智能配电
半导体创新技术与应用方向
EE架构与软件定义汽车
12V/48V 汽车智能配电(SPD)
区域控制单元(ZCU)与分区架构
关注我们
st-img 微信公众号
st-img 手机版