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

ADC详解

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

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


% x  ]- w( M- z5 Q

02. ADC主要特性
/ m3 e' I' r0 `0 i1 w  R

● 可配置 12 位、10 位、8 位或 6 位分辨率$ a- P! {& J2 I4 n) b8 S) h' M
● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断
* u$ K; V8 r* R$ _0 g% F7 {● 单次和连续转换模式
4 H% Y& g/ V! z: l● 用于自动将通道 0 转换为通道“n”的扫描模式. d, `4 ]9 @) {# l! s6 D
● 数据对齐以保持内置数据一致性# y0 j7 P+ I2 U3 Z+ s4 P
● 可独立设置各通道采样时间' p: K' M- Z# }8 b; j% l$ }7 s
● 外部触发器选项,可为规则转换和注入转换配置极性
/ ~" @4 i; w+ ]● 不连续采样模式! A0 r4 @1 r3 j2 S
● 双重/三重模式(具有 2 个或更多 ADC 的器件提供); D8 x; [" L& O- D5 }4 G. R0 C
● 双重/三重 ADC 模式下可配置的 DMA 数据存储
( k& Y! d0 {" w- L● 双重/三重交替模式下可配置的转换间延迟- j6 }6 s3 f. g3 m' T1 A. m4 P
● ADC 转换类型(参见数据手册)" Z- _+ ?+ W9 v$ ~# M1 O- H7 _
● ADC 电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V
0 v% D$ c8 ^. w3 a, g  ~$ @● ADC 输入范围:V REF—  V IN  V REF+9 D5 m8 ]  u2 _5 v# l: p
● 规则通道转换期间可产生 DMA 请求

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


$ ?7 }  P% t0 T* i5 }4 N* ^

03. ADC功能说明

框图0 g! l: n1 B  Z+ @, ~% M

1_meitu_1.jpg
' }! G+ @2 E& A: [, }* ^
: M  ]2 o& n: S% x

7 l1 _# ^$ h  X% N; r
2_meitu_2.jpg
( r+ c" ~# |" ]0 Y

/ O4 Q2 `1 g# H% L9 j/ {. a5 }: O

04. ADC开关控制
" X% f( _. q* P: T/ ~, ?# a" d: [3 u$ B, b

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

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

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

. U& [- x; k& z) J8 {

& \  z3 c! s4 s; }% c/ Y' h" y/ ^

05. ADC时钟
6 t. ?9 m) q9 t' w1 ^
. J0 a, p0 P% X: R

ADC 具有两个时钟方案:  |& m* y9 p( k' ^: I
● 用于模拟电路的时钟:ADCCLK,所有 ADC 共用" I* z1 w5 Y7 P3 k  D
此时钟来自于经可编程预分频器分频的 APB2 时钟,该预分频器允许 ADC 在 f PCLK2 /2、/4、/6 或 /8 下工作。有关 ADCCLK 的最大值,请参见数据手册。* B/ A/ {: _8 d7 J  t
● 用于数字接口的时钟(用于寄存器读/写访问)
9 y" v* ~1 ?1 Z1 M+ s. Q- i6 l此时钟等效于 APB2 时钟。可以通过 RCC APB2 外设时钟使能寄存器 (RCC_APB2ENR)分别为每个 ADC 使能/禁止数字接口时钟。


7 M) j9 p6 d/ l


$ g7 [  k9 ?3 q* E, `4 d1 z3 ~

06. 通道选择
! I) \# X" w8 O! _2 i& s9 J# Q5 j

有 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] 位。/ r# t  B0 R6 q/ u. f5 g
● 一个 注入转换组最多由 4 个转换构成。必须在 ADC_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位

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

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

● 对于 STM32F40x 和 STM32F41x 器件,温度传感器内部连接到通道 ADC1_IN16。内部参考电压 VREFINT 连接到 ADC1_IN17。6 Y# f- J, B, x$ S3 w6 B2 ^' @
● 对于 STM23F42x 和 STM32F43x 器件,温度传感器内部连接到与 VBAT 共用的通道ADC1_IN18。一次只能选择一个转换(温度传感器或 VBAT)。同时设置了温度传感器和 VBAT 转换时,将只进行 VBAT 转换。

内部参考电压 VREFINT 连接到 ADC1_IN17。. C  N4 z' k& Q# S
V BAT 通道连接到通道 ADC1_IN18。该通道也可转换为注入通道或规则通道。* p  P2 F9 V4 \& T) Z
注意: 温度传感器、 V REFINT 和 V BAT 通道只在主 ADC1 外设上可用。


( a- T5 j0 V( m4 I+ M: W! V

2 J$ s" D% a. z" O6 r# R" @8 Q

07. 转换模式
1 W: R' [* ?9 G: v. a" G& n
8 i6 ^! j) Z' t6 L
% O" g4 c( e0 X) ~" z9 Z9 U

单次转换模式

在单次转换模式下,ADC 执行一次转换。CONT 位为 0 时,可通过以下方式启动此模式:
/ b" @$ e4 a* x7 z+ S4 @9 t0 W● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道)
" j% g$ N+ p" I7 Y, _● 将 JSWSTART 位置 1(适用于注入通道)/ C7 k/ L2 L  |6 [  Y
● 外部触发(适用于规则通道或注入通道)

完成所选通道的转换之后:% @. P. y& a! H4 \$ n' A% q
● 如果转换了规则通道:
# B* m% K) ^& r( @0 {— 转换数据存储在 16 位 ADC_DR 寄存器中! R) h& ~# u: ]) ]
— EOC(转换结束)标志置 1' t: q; n- g4 r: F' ^. E
— EOCIE 位置 1 时将产生中断7 C0 _! `- O3 o; U) i% y
● 如果转换了注入通道:
( ^2 b; y- b! _" i— 转换数据存储在 16 位 ADC_JDR1 寄存器中, X! X) k# C3 c5 R( q4 ^- d
— JEOC(注入转换结束)标志置 1# S# w# X, {% M; Y  _- G+ Y
— JEOCIE 位置 1 时将产生中断2 Y! f% N+ a. C; w, G
然后,ADC 停止。

连续转换模式

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

每次转换之后:2 s8 X  l- w; q" n. t+ ^
● 如果转换了规则通道组:% S/ x! {  N/ k$ J+ i2 ~
— 上次转换的数据存储在 16 位 ADC_DR 寄存器中2 [" K) E5 r7 O& B
— EOC(转换结束)标志置 1
# ^1 i6 Z/ L" j9 b, o— EOCIE 位置 1 时将产生中断

温馨提示

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

7 S- G; r' t1 O6 R9 \0 d. `2 I

: J3 F/ x- O8 X  J+ k1 U" y$ s

08. 时序图* n+ R. V5 G! X+ r( T8 H+ j' r0 _

5 ]3 T$ C, ]+ B

3_meitu_3.jpg

; _, E) i0 N; A! O

; V1 w  ?" _% a* c09. 扫描模式# z2 I6 D! N! F" B3 Q" x" U! b$ k
: A- w3 [* H" W! b( ^1 `

此模式用于扫描一组模拟通道。
/ ~# F! u$ F' }通过将 ADC_CR1 寄存器中的 SCAN 位置 1 来选择扫描模式。将此位置 1 后,ADC 会扫描在 ADC_SQRx 寄存器(对于规则通道)或 ADC_JSQR 寄存器(对于注入通道)中选择的所有通道。为组中的每个通道都执行一次转换。每次转换结束后,会自动转换该组中的下一个通道。如果将 CONT 位置 1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。

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

在以下情况下,ADC_SR 寄存器中的 EOC 位置 1:
9 u( y0 |9 h- X  g" t" y5 u* a● 如果 EOCS 位清零,在每个规则组序列转换结束时
& T6 X/ U. @8 E& U● 如果 EOCS 位置 1,在每个规则通道转换结束时
: T, j% \7 u' }3 H" O5 h) |! o从注入通道转换的数据始终存储在 ADC_JDRx 寄存器中。


1 n- S( R( w" ^! w* x


- ?8 D" L! q" f: Z

10. 数据对齐
! {9 q5 a: O/ V- V
, Z$ ^& S2 O% k

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

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

对于规则组中的通道,不会减去任何偏移量,因此只有十二个位有效。# Z& A( N( d4 x


0 G  G8 D$ N7 Z' u7 }" ~$ }' {4 U- z4 \* r

$ n3 n. R5 b. }- G

11. 寄存器11.1ADC 状态寄存器 (ADC_SR)
3 Q' n$ J  y) v/ C& v# b" ^& N5 ?; d' g" U- }1 |" O

ADC status register/ g* H& u/ g- s+ ^* g
偏移地址:0x00
$ b* v' U- I+ Z. n" q: H- i( I复位值:0x0000 0000
4 {; k' W% \: e# s; F% n, u/ {5 B


0 u- a+ W. Z) u) [% P0 I# e3 P' x0 @2 [5 _7 x) _
# D( l  x0 D. W* I

11.2 ADC 控制寄存器 1 (ADC_CR1): A& W# ?7 Y1 K4 b

ADC control register 1' v  ?& m7 e2 I. g& J2 n6 u* p
偏移地址:0x04; V9 v' F# D4 U4 L+ B: `
复位值:0x0000 00005 y3 P: |2 [8 g. j6 }


% [5 T' [5 T+ T- |' t3 ]
3 m% c9 g* W2 d3 A# J7 ~
- [* y# u, X. R8 F6 P0 C

11.3 ADC 控制寄存器 2 (ADC_CR2)
1 Y. i8 h, @( y9 B* I, H3 }6 u/ L

ADC control register 2
% p+ o4 D; O1 a偏移地址:0x08% b+ n3 F( K5 p# Y: b. D5 T. n
复位值:0x0000 0000
7 r- A- f- m. y: T' k1 O3 O9 A, Q


* h2 x& a% X( u) z: J+ S

                                                      

" t8 t6 J  [/ }$ U& d' p

8 e; I3 H( y5 m4 m


" M: Q- h4 [+ Y7 \! o% Z! O5 ]  k+ t* D* A$ T

11.4 ADC 采样时间寄存器 1 (ADC_SMPR1)( I) w5 T* q1 [% c
' X: p! w$ M5 \# W" E& S

ADC sample time register 1
5 I5 d# i2 O1 A6 l# L偏移地址:0x0C, ]- l" F/ ~# R; T4 T. F" T
复位值:0x0000 0000
$ u1 e! S3 j; |7 [( ^8 H( j3 u

, h. p3 Y2 i; [0 i# l; z$ P3 e
0 K# v1 Y9 q! a/ L: I/ T

; k4 ~. v. I; h1 l- k

11.5 ADC 采样时间寄存器 2 (ADC_SMPR2)
9 q# B( V/ P0 X: d( r% G# b: S* Y5 x& c1 @3 }

ADC sample time register 2  |( Y: }; Y  M1 G0 l4 v* u
偏移地址:0x10/ _2 I1 p& p7 p; N
复位值:0x0000 00002 y% ~+ l1 S. o/ O


( I% }3 d$ D4 Z& u9 ?1 R1 t0 L& a/ r) }

/ @, a" `* i8 F  ]1 D/ \! c

11.6 ADC 注入通道数据偏移寄存器 X (ADC_JOFRx)(x=1…4)
7 o7 g( E$ u7 A6 y. m& ^8 V
; X7 b9 g% _' F! N$ h/ g

ADC injected channel data offset register x3 A0 {5 B4 @: x" K( D' e: ~
偏移地址:0x14-0x20
: I; H# p: `0 `: R8 k7 y复位值:0x0000 0000

3 l2 P5 g( T2 @' o( Z


2 J) N7 b! t4 W( g
0 M4 m) g  l$ d6 G8 P

11.7 ADC 看门狗高阈值寄存器 (ADC_HTR)8 W7 C" h5 \6 K8 [

ADC watchdog higher threshold register) D; y- E8 g) s* ~) E  z1 d
偏移地址:0x24# B1 g4 @9 d2 h, K7 |
复位值:0x0000 0FFF


* t9 b$ p3 I- F2 n6 P. q1 _

: @# I7 u- M0 j. Y. e

4 `' e& t0 h. k: g( S& _

11.8 ADC 看门狗低阈值寄存器 (ADC_LTR); I$ U4 q% E$ G9 ~1 y* a9 G. [# Q

ADC watchdog lower threshold register
0 p% K+ Y" I/ D) B- N偏移地址:0x28  W( \6 s% X/ E5 b$ ?
复位值:0x0000 0000

1 D# x6 A: y4 o1 v

" d, U1 H. @6 U1 T* J: f
% H9 N3 I* a8 }6 V( {* L$ t

11.9 ADC 规则序列寄存器 1 (ADC_SQR1)5 B! I- ?( \" n4 Q0 r$ b; `3 t5 Z8 H

ADC regular sequence register 1: \4 {1 J1 T$ y; O" y9 j7 g' z% n
偏移地址:0x2C
* F. v: j3 M" p( u7 L3 U; e  Q复位值:0x0000 0000


3 _7 ^* {0 X) K0 J4 `

- E& S% ^/ u# d

$ {4 j0 T+ t; y! h  J

7 A# h9 S9 L. P0 v
9 x. y8 J' Z) j

11.10 ADC 规则序列寄存器 2 (ADC_SQR2)
) C1 X0 `, m' L( u3 w3 ?' k! g" v: E* R

ADC regular sequence register 2
  \3 ]* m& p5 {0 ~偏移地址:0x303 g9 i  A9 c6 s7 f3 s0 K& h" V
复位值:0x0000 0000. j, K8 s2 y" f: n

; d; N( ^6 z4 a; U& ?: W

& y& T6 m$ E( q* d+ n0 C  Q! B+ J: [. a$ N. S2 k6 I

11.11 ADC 规则序列寄存器 3 (ADC_SQR3)
- b0 q3 S# t5 k! V) k4 V( p; q! u

ADC regular sequence register 3, {5 N& \9 \4 d) {
偏移地址:0x34
& D* s/ [% U8 g7 R复位值:0x0000 0000
+ W0 X* @( a  k- G# f" f

- M* a# k+ W" m: @9 ~0 L$ {

9 n8 h' M+ y: f! U# p

11.12 ADC 注入序列寄存器 (ADC_JSQR)) O: s; v. X. c  j9 H+ {+ ]

ADC injected sequence register
8 z6 p3 Y$ C2 \' ^* O; Z) J" J# R偏移地址:0x386 x5 i7 ?1 w. a/ @) i
复位值:0x0000 0000

9 A6 X1 w6 O0 ^  }  L) X


# ]% K$ ^' n9 w1 a' d% `, u9 d
6 b8 o' |$ S7 z% ]

11.13 ADC 注入数据寄存器 x (ADC_JDRx) (x= 1…4)
+ j; ]. C+ y& A4 {

ADC injected data register x
" b  W* Z8 w. m' s+ t7 Q  r偏移地址:0x3C - 0x48
6 K* J( c! c% H4 i* C; b复位值:0x0000 0000

( h3 v+ @" p7 y  _6 o


3 ]4 e" _# ~# k1 l* i2 A4 k* I0 i
  B1 z. b8 ]) X, Q! C0 ]

11.14 ADC 规则数据寄存器 (ADC_DR)
8 ~, {5 E  n9 p4 I; p* ?

ADC regular data register
8 X5 a  ?3 j- i% D" Y  f8 E偏移地址:0x4C
' E: O' y* m9 }& p4 `# P8 e" s复位值:0x0000 0000

3 {2 [5 x6 E3 F* \! B

0 h* E  e9 e' _# o+ |0 o+ g

5 e$ l# _: `0 }3 M

11.15 ADC 通用状态寄存器 (ADC_CSR), ]1 L  O1 S" e$ n

ADC Common status register
4 O* ~) s. p& i/ g: t偏移地址:0x00(该偏移地址与 ADC1 基地址 + 0x300 相关)- h* o8 s" z9 J, I8 @7 W3 S( ]8 d  @
复位值:0x0000 0000$ `1 X; p% d5 a. k
该寄存器可提供不同 ADC 的状态位图像。但是,它为只读形式且不允许将不同的状态位清零。必须在对应的 ADC_SR 寄存器中将其写为 0,才能将各个状态位清零。

9 Y8 N9 j. s1 x7 [" @5 N/ N) w

2 v7 w7 f& ~  X: ~8 m5 r+ M
8 R4 u: B' q, u8 Y; G

11.16 ADC 通用控制寄存器 (ADC_CCR)
8 _+ r/ c) n# l1 d, I# g6 W% }' u- p1 ]6 y; b$ f4 @

ADC common control register2 w5 ?# Q( [" Z1 t
偏移地址:0x04(该偏移地址与 ADC1 基地址 + 0x300 相关)
, v  M6 O; n" G' e5 n; e4 b9 D复位值:0x0000 0000


& q1 w/ ~( j4 O1 n5 E, n, i

% L8 Q) c! N5 ?, {7 ]& O
, j, j) C7 n3 z4 [1 u- [! |* H
+ p: [# e9 N- H

11.17 适用于双重和三重模式的 ADC 通用规则数据寄存器(ADC_CDR)% y, x- H1 O. Y9 t/ D9 U; Y7 p' g

ADC common regular data register for dual and triple modes0 N7 o$ T+ |& e5 m, x  y
偏移地址:0x08(该偏移地址与 ADC1 基地址 + 0x300 相关)
, v' D( ~" Z. c复位值:0x0000 0000


$ F) w6 p& F) k# y0 w2 ?, u9 s, A/ z


; m) z+ y4 Z& N, v


! M$ X. r2 G. i' T. ]
; p- e5 @4 ^' y. S5 R/ `  X) t
收藏 1 评论0 发布时间:2020-9-17 11:20

举报

0个回答

所属标签

相似分享

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