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

ADC详解

[复制链接]
STMCU-管管 发布时间:2020-9-17 11:20
01. ADC简介

12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 V BAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。ADC 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。


: v# J4 H  i$ q( A7 ~3 E

02. ADC主要特性6 c4 ?9 \3 x6 X/ X1 q" n8 Y

● 可配置 12 位、10 位、8 位或 6 位分辨率
) g! l; }! S& U0 m  K( K! j● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断
" q5 q" q2 R$ U' O- t● 单次和连续转换模式1 j2 d8 s; f& r' t/ t6 M$ t
● 用于自动将通道 0 转换为通道“n”的扫描模式
( C; |6 x  V5 \6 V0 T( u● 数据对齐以保持内置数据一致性
; J0 w7 X# ^6 B● 可独立设置各通道采样时间1 z3 H2 z  i  h. T8 E3 H
● 外部触发器选项,可为规则转换和注入转换配置极性
% S; S/ o1 ]" C● 不连续采样模式- X! u8 ^, g/ f" F. G
● 双重/三重模式(具有 2 个或更多 ADC 的器件提供)
& d4 m; G: x, t" \/ b: ~+ R) b● 双重/三重 ADC 模式下可配置的 DMA 数据存储5 r3 a* O! @/ _7 N/ S7 Q
● 双重/三重交替模式下可配置的转换间延迟$ F7 R% K4 X0 a6 ^9 P
● ADC 转换类型(参见数据手册)% v' F! @, |0 U& w
● ADC 电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V8 W* R* ?8 P  O
● ADC 输入范围:V REF—  V IN  V REF+
9 v# C4 F( j5 E# T. J● 规则通道转换期间可产生 DMA 请求

注意: V REF— 如果可用(取决于封装),则必须将其连接到 V SSA 。


: J( E. g% \3 ]/ h% G

03. ADC功能说明

框图2 X) L! h  e8 ?, D& L

1_meitu_1.jpg
1 j6 Q9 j6 f9 U, _: a* Q; P: c+ f
2 r' m' d  v4 V/ _
  K& V  D( ]; H7 T1 ^( {9 ?& l
2_meitu_2.jpg
5 p8 l' Y( L/ m! ]3 z

/ a( _: B! c! t5 ?5 p# {& F
5 I. ^4 H( L9 |; ]1 o

04. ADC开关控制( j2 b7 A2 n2 D8 [" y

- }) V5 X8 M1 v7 X( v+ k" i& U

可通过将 ADC_CR2 寄存器中的 ADON 位置 1 来为 ADC 供电。首次将 ADON 位置 1 时,会将 ADC 从掉电模式中唤醒。

SWSTART 或 JSWSTART 位置 1 时,启动 AD 转换。

可通过将 ADON 位清零来停止转换并使 ADC 进入掉电模式。在此模式下,ADC 几乎不耗电(只有几 μA)


, J5 c) P7 z" y

' ^8 d+ E4 q' m. f

05. ADC时钟- D  _. e0 H. j( l. W* k
& h" p+ ~3 x* ?

ADC 具有两个时钟方案:4 P% A3 D+ o& V* y9 K7 O5 i
● 用于模拟电路的时钟:ADCCLK,所有 ADC 共用
$ u3 m5 a9 P, y1 Y, ^" i9 C% o6 @$ Y6 ?此时钟来自于经可编程预分频器分频的 APB2 时钟,该预分频器允许 ADC 在 f PCLK2 /2、/4、/6 或 /8 下工作。有关 ADCCLK 的最大值,请参见数据手册。9 B& a+ X! K  G  f# a, [
● 用于数字接口的时钟(用于寄存器读/写访问)+ E) J  Z, Q- }, _$ h+ X$ R
此时钟等效于 APB2 时钟。可以通过 RCC APB2 外设时钟使能寄存器 (RCC_APB2ENR)分别为每个 ADC 使能/禁止数字接口时钟。


) f1 Z. }8 h0 h6 x# U# P


# j; _: W& v1 h

06. 通道选择
8 d9 }" }6 {0 u

有 16 条复用通道。可以将转换分为两组:规则转换和注入转换。每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。例如,可按以下顺序对序列进行转换:ADC_IN3、ADC_IN8、ADC_IN2、ADC_IN2、ADC_IN0、ADC_IN2、ADC_IN2、ADC_IN15。

● 一个 规则转换组最多由 16 个转换构成。必须在 ADC_SQRx 寄存器中选择转换序列的规则通道及其顺序。规则转换组中的转换总数必须写入 ADC_SQR1 寄存器中的 L[3:0] 位。4 Q0 v% Y! j: _
● 一个 注入转换组最多由 4 个转换构成。必须在 ADC_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位

如果在转换期间修改 ADC_SQRx 或 ADC_JSQR 寄存器,将复位当前转换并向 ADC 发送一个新的启动脉冲,以转换新选择的组。

温度传感器、V REFINT 和 V BAT 内部通道

● 对于 STM32F40x 和 STM32F41x 器件,温度传感器内部连接到通道 ADC1_IN16。内部参考电压 VREFINT 连接到 ADC1_IN17。# v; e7 Q8 R, K
● 对于 STM23F42x 和 STM32F43x 器件,温度传感器内部连接到与 VBAT 共用的通道ADC1_IN18。一次只能选择一个转换(温度传感器或 VBAT)。同时设置了温度传感器和 VBAT 转换时,将只进行 VBAT 转换。

内部参考电压 VREFINT 连接到 ADC1_IN17。
" l$ q1 G  f0 {, J: G$ pV BAT 通道连接到通道 ADC1_IN18。该通道也可转换为注入通道或规则通道。
8 x8 [8 o$ a4 u8 p2 x注意: 温度传感器、 V REFINT 和 V BAT 通道只在主 ADC1 外设上可用。

7 y9 c7 p( y1 D$ y9 F! z. D

3 r! p) X* ~' O: g$ w- G

07. 转换模式
0 Q( ~' b2 R. k, j/ m' i! T9 g2 q; `8 ^) e1 X
- m" l' V% `* E; W; B% F

单次转换模式

在单次转换模式下,ADC 执行一次转换。CONT 位为 0 时,可通过以下方式启动此模式:
# m; c. Y. x% @# k8 g1 K. {● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道); q2 w5 }6 j. C5 @+ t/ `; V. Y0 K: l# n
● 将 JSWSTART 位置 1(适用于注入通道)* ?# x& }; U9 f1 E& p8 c
● 外部触发(适用于规则通道或注入通道)

完成所选通道的转换之后:
* H5 k. q6 [7 C● 如果转换了规则通道:
% J8 `7 w5 v* ], `3 U. Y% X— 转换数据存储在 16 位 ADC_DR 寄存器中' Y+ v9 ]3 g4 f3 h1 U! N
— EOC(转换结束)标志置 1
4 j* H+ s) T" l9 I- t$ A— EOCIE 位置 1 时将产生中断+ Z. p0 G7 b' H
● 如果转换了注入通道:/ i9 z3 ?4 ]& f7 H& X
— 转换数据存储在 16 位 ADC_JDR1 寄存器中0 x! u! M" Z1 Q( e& o3 }3 q# w
— JEOC(注入转换结束)标志置 13 d3 b+ W7 ]6 g8 o/ e; H
— JEOCIE 位置 1 时将产生中断
6 G) H% X) f. w然后,ADC 停止。

连续转换模式

在连续转换模式下,ADC 结束一个转换后立即启动一个新的转换。CONT 位为 1 时,可通过外部触发或将 ADC_CR2 寄存器中的 SWSTRT 位置 1 来启动此模式(仅适用于规则通道)。

每次转换之后:
+ T9 ?( R' O2 w( o● 如果转换了规则通道组:
. m4 U) t% J+ D3 s; }) G— 上次转换的数据存储在 16 位 ADC_DR 寄存器中
! R! l( c0 K0 z+ T  W8 U2 N— EOC(转换结束)标志置 1
; R; i  V* t& ]. r; ~  Q( s8 v— EOCIE 位置 1 时将产生中断

温馨提示

无法连续转换注入通道。连续模式下唯一的例外情况是,注入通道配置为在规则通道之后自动转换(使用 JAUTO 位),请参见自动注入一节


# }0 G" Q$ Y7 g) u4 j


: E& Y* G8 c2 ]( \2 u5 c2 c

08. 时序图0 G2 K9 ^1 t4 U4 y+ L: H

- A: i  w" [. v2 _1 M+ H$ @

3_meitu_3.jpg

* \" {: X& E% S' w9 E9 n
5 t" ]! ~9 N9 p/ D! V* _) \+ Z
09. 扫描模式* r; Q/ A; O5 ?

7 U6 n/ q4 O; `# Z4 U2 {7 e

此模式用于扫描一组模拟通道。3 q- Q5 ?( {* e2 h" D$ M
通过将 ADC_CR1 寄存器中的 SCAN 位置 1 来选择扫描模式。将此位置 1 后,ADC 会扫描在 ADC_SQRx 寄存器(对于规则通道)或 ADC_JSQR 寄存器(对于注入通道)中选择的所有通道。为组中的每个通道都执行一次转换。每次转换结束后,会自动转换该组中的下一个通道。如果将 CONT 位置 1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。

如果将 DMA 位置 1,则在每次规则通道转换之后,均使用直接存储器访问 (DMA) 控制器将转换自规则通道组的数据(存储在 ADC_DR 寄存器中)传输到 SRAM。

在以下情况下,ADC_SR 寄存器中的 EOC 位置 1:; I% f; }, B  W7 }$ ^/ q1 [
● 如果 EOCS 位清零,在每个规则组序列转换结束时
: g7 E, {: g' r. O) Y● 如果 EOCS 位置 1,在每个规则通道转换结束时. n6 @& ~6 t. w
从注入通道转换的数据始终存储在 ADC_JDRx 寄存器中。

( O9 S5 w; I" y" s


; S% A' I+ v1 R7 L& T9 }

10. 数据对齐
6 e: q. _5 U+ _7 P9 u2 e' O/ b9 J3 e; F, `

ADC_CR2 寄存器中的 ALIGN 位用于选择转换后存储的数据的对齐方式。可选择左对齐和右对齐两种方式,如 图 38 和 图 39 所示

注入通道组的转换数据将减去 ADC_JOFRx 寄存器中写入的用户自定义偏移量,因此结果可以是一个负值。SEXT 位表示扩展的符号值。

对于规则组中的通道,不会减去任何偏移量,因此只有十二个位有效。1 {- }$ \; D! b" J9 ?% z/ J1 T2 q. I$ h


" H9 J! g+ ?0 r7 I1 |% m! c5 D* Z5 r: M8 f: W$ h& i# B, O

% y: n9 y8 M- I- `* F

11. 寄存器11.1ADC 状态寄存器 (ADC_SR)
5 ]  B& g+ J3 {) o% U8 E
4 G% z# J; r. M; Y. r( z4 C0 W% s( e

ADC status register
# e+ `! x5 W' `8 }6 R8 w偏移地址:0x00: N8 E5 n; p) s9 w
复位值:0x0000 0000% p5 V( g$ f8 f

5 _$ L8 U" f, S& a+ c
9 T* a# w/ H! y0 ~. t6 c6 W/ g

/ n$ U/ c2 O5 M

11.2 ADC 控制寄存器 1 (ADC_CR1)
; h/ Q- O2 A. ^3 @

ADC control register 1
- A; k3 K. E0 @- n3 z偏移地址:0x04; t% @- W+ f) ^. X$ |4 P& p) ^
复位值:0x0000 0000* R/ F5 Z2 [2 `- q* }


# G, r5 P3 w/ f6 @" J) \5 N9 m0 I/ ]

: X9 L* Y, q4 d7 d2 n7 i

11.3 ADC 控制寄存器 2 (ADC_CR2)
" g9 B; j- V6 @* F# K! X

ADC control register 2
2 U7 `6 L0 F$ J) j偏移地址:0x088 ]. U! \: C. |
复位值:0x0000 00003 J$ q" @& j, o+ _$ n8 V+ A

9 f3 ?% b% s( _! f' d& H5 }

                                                      

8 S/ i9 |  H2 V( B6 v8 O
* q; m/ S5 d* _


- G& ^9 p& h$ C9 J; ]2 {, x: [# q; d4 R6 X2 f0 X9 V

11.4 ADC 采样时间寄存器 1 (ADC_SMPR1)
  y3 [! o& G+ b7 R, P. z6 L9 l% X! [0 T! u* g8 ~. Y8 m1 d

ADC sample time register 1
/ Z" A! e4 \: x4 d1 _1 P, V偏移地址:0x0C
3 r% k- ^+ }* s+ z2 J) x' r5 I复位值:0x0000 0000
: c/ J; K; i. J' P1 O0 R

7 _1 f  k, d4 |1 J* a% j# F( S( S8 R

, j; J, [) D/ n4 d: {. y2 W/ A9 {# Q6 N+ T. ?; z

11.5 ADC 采样时间寄存器 2 (ADC_SMPR2)
8 A8 O  r6 O4 a* o6 w0 `* A9 A0 X5 x8 p; z3 ?: g& @3 p

ADC sample time register 2' H. F6 l# L# O
偏移地址:0x100 q. o+ A8 ~; ^: c
复位值:0x0000 00002 U7 ?, ~  S! Q4 x$ Y& N8 l& z


* x& Y4 ^/ r1 }0 h$ g+ j. z$ H& M( s* u
( {9 n+ C; F$ Z- \2 |* J1 ?% u( ~/ E" }* [

11.6 ADC 注入通道数据偏移寄存器 X (ADC_JOFRx)(x=1…4)0 n& V1 o! G) f2 [; B
! x# ?9 u) h$ ?& \

ADC injected channel data offset register x' \1 l5 v7 w; H/ d
偏移地址:0x14-0x20
& X: [& O% Y) L. D: Q0 y复位值:0x0000 0000


: }, z- [' p& p% A$ @) V; C


6 q. t% K. Y9 j$ L6 ^) n' j5 j9 c# T0 W8 U4 Z1 I* \9 v& `

11.7 ADC 看门狗高阈值寄存器 (ADC_HTR)
& S% o8 Q9 `) g% M  b

ADC watchdog higher threshold register
- y7 O5 z9 ~4 T6 I. V偏移地址:0x24# f0 G$ k$ i+ `* b
复位值:0x0000 0FFF

7 a7 I* Z4 D# M" h4 D, k8 I5 Q* a

$ h% H- @. H( k; }5 V
* w, k+ ?: S8 N, [

11.8 ADC 看门狗低阈值寄存器 (ADC_LTR)
7 L- o, s& z' t8 C4 m! C$ Q( M) H/ ~

ADC watchdog lower threshold register
( [) R+ b$ O, N/ O0 f* k0 ~0 ?偏移地址:0x28
+ U/ `4 ^2 \% g0 X3 a9 J) W复位值:0x0000 0000

2 I$ W3 z* H8 n


' n" q5 Y$ c8 y; D2 o* [- c" L) Z, R! X$ y+ o

11.9 ADC 规则序列寄存器 1 (ADC_SQR1)
6 h# @/ Y# m5 q" [7 G1 z

ADC regular sequence register 1: X- c% j0 i0 b; ?$ B1 b
偏移地址:0x2C! W- v3 x0 x2 \4 Q; f3 l; F$ u
复位值:0x0000 0000

. S& V" Z6 F8 L+ ^4 d3 _

+ ]* p4 ]0 N9 A  U8 p

. F  Z5 `# {- D3 ^/ r

2 X/ O# U, I4 p+ `' b% |9 \, W- {: @* L( l/ R

11.10 ADC 规则序列寄存器 2 (ADC_SQR2)
! p; ^# A0 o7 z: i: g$ ~' F/ j+ b. ?. d! S% Q) W

ADC regular sequence register 2
& u: p6 U( }" c2 w& K6 d) o) \+ V偏移地址:0x30
* p7 R. b/ Q  Y1 A$ y/ K复位值:0x0000 0000
5 x& m4 _' N! f! t+ x( P# P6 A& f

( {' A) t- H+ @  ~4 I6 k. J1 P
$ Y6 w6 R( I4 f# H$ F/ B" N
0 Q! v8 z& J# ^% [# D! g

11.11 ADC 规则序列寄存器 3 (ADC_SQR3)8 p7 ]  X' l% N% d, A- Q& P0 X

ADC regular sequence register 3& X; r5 N. y' B7 i$ e" p) @' G
偏移地址:0x34
6 d$ x! J) Z3 k% X& d. n0 `复位值:0x0000 00004 k6 S# M+ K' k1 C8 @( I

5 M1 p% Y! ]8 g" B+ P  d

0 ^' I9 h0 P) A% ?7 y) Q9 m

11.12 ADC 注入序列寄存器 (ADC_JSQR)
4 w! R# J0 c: v) ~

ADC injected sequence register# \; j0 F& V- r: E; y. \& Y
偏移地址:0x38
/ k/ l  n4 K$ S复位值:0x0000 0000

9 `* {' d$ ]6 J% I- u" U; b" c


2 ~, z% }2 @! P( i$ `) d& I5 M7 f+ m  P+ `; `

11.13 ADC 注入数据寄存器 x (ADC_JDRx) (x= 1…4)
* s. m2 i3 t$ V  z" G) z/ A, _

ADC injected data register x5 i5 ~6 M6 l9 H
偏移地址:0x3C - 0x48
; @* k; e+ N. N2 T. J, E复位值:0x0000 0000

7 F0 m& v/ r1 y" j# E& P, K, V- d* X


& O7 R: ]6 J, ~
2 B2 e4 |$ b, }# E. W( }* e- F5 w

11.14 ADC 规则数据寄存器 (ADC_DR)/ P; M" z) m5 W9 m$ r# v2 c

ADC regular data register
6 [( x# Q- K# ]) o' a  `* `" q) \偏移地址:0x4C
/ }# R( J2 }% j% I" K/ Q复位值:0x0000 0000


! ]: l% U' L% a$ M' j$ W; q


% w; c; {$ I) D8 |2 N# P3 E4 D4 G

11.15 ADC 通用状态寄存器 (ADC_CSR)
9 t# T( O# f  X: r, q6 Y

ADC Common status register
( C- Q: G. ]2 W# H; m5 W偏移地址:0x00(该偏移地址与 ADC1 基地址 + 0x300 相关)3 X9 w2 _. ]9 w) m
复位值:0x0000 00005 R( B8 L% F2 b3 c$ @1 ^0 s
该寄存器可提供不同 ADC 的状态位图像。但是,它为只读形式且不允许将不同的状态位清零。必须在对应的 ADC_SR 寄存器中将其写为 0,才能将各个状态位清零。


% [4 [; i) ^; G# R, |

3 T' Y4 a! v0 I" d" _
  i' t) U4 T/ ?% [

11.16 ADC 通用控制寄存器 (ADC_CCR)
2 u! C9 Z, c3 P2 q% c7 g8 w/ r8 C4 p! F3 S

ADC common control register. b- G* @) E3 J9 A
偏移地址:0x04(该偏移地址与 ADC1 基地址 + 0x300 相关)7 m9 z" P" K, x  ~' Z# \5 i7 }
复位值:0x0000 0000

% B# e( Z' E( a& m


1 y$ K. q7 C- |# J
# Y: R. W7 @/ z% \
. z! y: S& T5 y# ^8 b+ _

11.17 适用于双重和三重模式的 ADC 通用规则数据寄存器(ADC_CDR)/ L% ?$ Q) ?* J* n8 J- d

ADC common regular data register for dual and triple modes
, E5 W0 H4 Q* D& ^, z+ b" C( h偏移地址:0x08(该偏移地址与 ADC1 基地址 + 0x300 相关): |8 S# p0 M5 G+ P! u
复位值:0x0000 0000


: M. X% f$ y1 W


! D7 [: m0 m7 y5 a8 v% p! H0 |


! G8 q& s: Z! Y4 c, T. D! P+ G9 B7 ^& a$ @
收藏 1 评论0 发布时间:2020-9-17 11:20

举报

0个回答

所属标签

相似分享

关于意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新和工艺
招聘信息
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
关注我们
st-img 微信公众号
st-img 手机版