
01. ADC简介' \) D5 l& O8 s2 d4 | 12 位 ADC 是逐次趋近型模数转换器。它具有多达 19 个复用通道,可测量来自 16 个外部源、两个内部源和 V BAT 通道的信号。这些通道的 A/D 转换可在单次、连续、扫描或不连续采样模式下进行。ADC 的结果存储在一个左对齐或右对齐的 16 位数据寄存器中。ADC 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。 ) A2 E( K+ v9 G, B/ i 02. ADC主要特性1 r5 S% j$ _, r( J# i$ x9 q ● 可配置 12 位、10 位、8 位或 6 位分辨率 ● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断$ v( m7 d( P$ }" t% Z4 R$ u) m3 n ● 单次和连续转换模式 ● 用于自动将通道 0 转换为通道“n”的扫描模式 ● 数据对齐以保持内置数据一致性 ● 可独立设置各通道采样时间 ● 外部触发器选项,可为规则转换和注入转换配置极性0 a2 l( a! X9 z" m ● 不连续采样模式) M* }/ P6 o# }/ |, T5 \' L ● 双重/三重模式(具有 2 个或更多 ADC 的器件提供)# y" E5 H! t' X5 o ● 双重/三重 ADC 模式下可配置的 DMA 数据存储 ● 双重/三重交替模式下可配置的转换间延迟) [3 M! ~0 q& G3 j' z ● ADC 转换类型(参见数据手册) ● ADC 电源要求:全速运行时为 2.4 V 到 3.6 V,慢速运行时为 1.8 V) _0 z5 o1 j3 V) b- N$ ^* j ● ADC 输入范围:V REF— V IN V REF+; B( t0 ?" S# u' q/ l: C5 F/ R ● 规则通道转换期间可产生 DMA 请求 注意: V REF— 如果可用(取决于封装),则必须将其连接到 V SSA 。8 m: b. q" \1 }& r 03. ADC功能说明 框图2 v, { w& T. N H' x4 j4 W ![]() ![]() 04. ADC开关控制 可通过将 ADC_CR2 寄存器中的 ADON 位置 1 来为 ADC 供电。首次将 ADON 位置 1 时,会将 ADC 从掉电模式中唤醒。$ K" i. e* Q+ P- t% w! v8 b& z" R4 ]" _ SWSTART 或 JSWSTART 位置 1 时,启动 AD 转换。 可通过将 ADON 位清零来停止转换并使 ADC 进入掉电模式。在此模式下,ADC 几乎不耗电(只有几 μA)& d9 k$ d6 [* O , @" U2 X0 T* A1 [, T+ o 05. ADC时钟- Y1 v2 t( C- R0 q+ h ADC 具有两个时钟方案: ● 用于模拟电路的时钟:ADCCLK,所有 ADC 共用3 { R0 T* q% `. h" [3 y 此时钟来自于经可编程预分频器分频的 APB2 时钟,该预分频器允许 ADC 在 f PCLK2 /2、/4、/6 或 /8 下工作。有关 ADCCLK 的最大值,请参见数据手册。 ● 用于数字接口的时钟(用于寄存器读/写访问) 此时钟等效于 APB2 时钟。可以通过 RCC APB2 外设时钟使能寄存器 (RCC_APB2ENR)分别为每个 ADC 使能/禁止数字接口时钟。 06. 通道选择 有 16 条复用通道。可以将转换分为两组:规则转换和注入转换。每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。例如,可按以下顺序对序列进行转换:ADC_IN3、ADC_IN8、ADC_IN2、ADC_IN2、ADC_IN0、ADC_IN2、ADC_IN2、ADC_IN15。+ ~# u$ ]1 q% h) A5 x , v. w" L( R$ I/ R ● 一个 规则转换组最多由 16 个转换构成。必须在 ADC_SQRx 寄存器中选择转换序列的规则通道及其顺序。规则转换组中的转换总数必须写入 ADC_SQR1 寄存器中的 L[3:0] 位。 ● 一个 注入转换组最多由 4 个转换构成。必须在 ADC_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位 如果在转换期间修改 ADC_SQRx 或 ADC_JSQR 寄存器,将复位当前转换并向 ADC 发送一个新的启动脉冲,以转换新选择的组。 # [ k+ R$ O4 u" I% f 温度传感器、V REFINT 和 V BAT 内部通道 ● 对于 STM32F40x 和 STM32F41x 器件,温度传感器内部连接到通道 ADC1_IN16。内部参考电压 VREFINT 连接到 ADC1_IN17。 ● 对于 STM23F42x 和 STM32F43x 器件,温度传感器内部连接到与 VBAT 共用的通道ADC1_IN18。一次只能选择一个转换(温度传感器或 VBAT)。同时设置了温度传感器和 VBAT 转换时,将只进行 VBAT 转换。7 z1 m; m5 O2 z# z! M ; O: ~: q0 k+ Q1 W: q2 ]5 u# N 内部参考电压 VREFINT 连接到 ADC1_IN17。7 I+ |, Y3 _7 H0 n. `" X# a V BAT 通道连接到通道 ADC1_IN18。该通道也可转换为注入通道或规则通道。 注意: 温度传感器、 V REFINT 和 V BAT 通道只在主 ADC1 外设上可用。8 n: w( J: {7 s' i: G! y) J( p 8 m7 C7 O n& ?; u1 x. d: } 07. 转换模式6 [7 K# ^3 E) }; ?$ [! A 单次转换模式 2 N E) t/ F% u2 r) O5 n+ g# C" P 在单次转换模式下,ADC 执行一次转换。CONT 位为 0 时,可通过以下方式启动此模式: ● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道) ● 将 JSWSTART 位置 1(适用于注入通道) ● 外部触发(适用于规则通道或注入通道) % P- i4 f' o: `7 y' E 完成所选通道的转换之后: ● 如果转换了规则通道: — 转换数据存储在 16 位 ADC_DR 寄存器中 — EOC(转换结束)标志置 1 — EOCIE 位置 1 时将产生中断 ● 如果转换了注入通道: — 转换数据存储在 16 位 ADC_JDR1 寄存器中. Z4 c" H: M" C2 x& I — JEOC(注入转换结束)标志置 1 — JEOCIE 位置 1 时将产生中断 然后,ADC 停止。 连续转换模式. b+ R" B/ \, k& H; ^* @ 在连续转换模式下,ADC 结束一个转换后立即启动一个新的转换。CONT 位为 1 时,可通过外部触发或将 ADC_CR2 寄存器中的 SWSTRT 位置 1 来启动此模式(仅适用于规则通道)。7 H% D* Y; X' i G ( J6 c$ l' D6 |/ v5 b+ F' c 每次转换之后: ● 如果转换了规则通道组:6 {0 t2 D+ a% h) O& i2 ~ — 上次转换的数据存储在 16 位 ADC_DR 寄存器中5 B/ c0 o% m4 D — EOC(转换结束)标志置 1+ p( w; E2 t0 r9 A! y1 ~ — EOCIE 位置 1 时将产生中断 ; z! V7 {1 U+ t( N- `8 T 温馨提示 F% z' [" c! O" c8 p. p ! D0 j: V7 v- X. y- ]/ x9 _ 无法连续转换注入通道。连续模式下唯一的例外情况是,注入通道配置为在规则通道之后自动转换(使用 JAUTO 位),请参见自动注入一节 6 A1 f: i0 Q# t, @& o 08. 时序图 4 c: z! d, n% o( ^% a) K B ![]() ) M0 x& L8 Y+ } m @+ E$ r 09. 扫描模式7 N5 Z! ^6 U2 z0 Q" d0 M 此模式用于扫描一组模拟通道。( |2 w6 z% L, w 通过将 ADC_CR1 寄存器中的 SCAN 位置 1 来选择扫描模式。将此位置 1 后,ADC 会扫描在 ADC_SQRx 寄存器(对于规则通道)或 ADC_JSQR 寄存器(对于注入通道)中选择的所有通道。为组中的每个通道都执行一次转换。每次转换结束后,会自动转换该组中的下一个通道。如果将 CONT 位置 1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。( m4 g# g4 ^0 D \6 i- z/ N4 {/ P ! u& ?) D3 y7 e- @4 f/ C" E 如果将 DMA 位置 1,则在每次规则通道转换之后,均使用直接存储器访问 (DMA) 控制器将转换自规则通道组的数据(存储在 ADC_DR 寄存器中)传输到 SRAM。 在以下情况下,ADC_SR 寄存器中的 EOC 位置 1: ● 如果 EOCS 位清零,在每个规则组序列转换结束时 ● 如果 EOCS 位置 1,在每个规则通道转换结束时$ w- P: p. t; l% E1 b8 [! \4 _3 C4 ` 从注入通道转换的数据始终存储在 ADC_JDRx 寄存器中。 * G0 q3 \9 G0 J1 [$ Q' @3 O8 R 10. 数据对齐% t5 `- P P) I% y. F ADC_CR2 寄存器中的 ALIGN 位用于选择转换后存储的数据的对齐方式。可选择左对齐和右对齐两种方式,如 图 38 和 图 39 所示 注入通道组的转换数据将减去 ADC_JOFRx 寄存器中写入的用户自定义偏移量,因此结果可以是一个负值。SEXT 位表示扩展的符号值。 对于规则组中的通道,不会减去任何偏移量,因此只有十二个位有效。 , V# i. p) L1 Y0 g" e ![]() ! a& \8 ]- e5 B9 u& _; W, k; { 11. 寄存器 11.1ADC 状态寄存器 (ADC_SR)0 y4 e; D7 k r' W' a# _4 s; G ADC status register 偏移地址:0x00 复位值:0x0000 0000 3 s0 a1 N3 N0 V0 C9 I- R, m( F ![]() - T5 A1 i9 b& u0 ^% q3 q) T 11.2 ADC 控制寄存器 1 (ADC_CR1)# `; w$ e/ V- F3 W ADC control register 10 F, G% R+ e' {6 I5 b% U) E 偏移地址:0x04 复位值:0x0000 0000 / i& i7 p L/ s" B8 V ![]() 11.3 ADC 控制寄存器 2 (ADC_CR2) ADC control register 2' T0 _/ M& E8 k/ l0 ]- g3 N 偏移地址:0x08, G+ u- @) U( p- K1 l 复位值:0x0000 0000, |/ H. @+ {4 |$ Z1 D7 } ![]() 7 Q% H$ T4 X' |0 U 11.4 ADC 采样时间寄存器 1 (ADC_SMPR1)# r' q7 _ \* T ADC sample time register 14 ]2 b2 S/ f, G, }4 R 偏移地址:0x0C- C0 a3 A6 q: s0 n$ P; l 复位值:0x0000 0000 ![]() a- \! ?- d- n% o& X+ c 11.5 ADC 采样时间寄存器 2 (ADC_SMPR2)2 U* `* [0 q3 m- c3 Z: t ADC sample time register 2 偏移地址:0x10, \- n, X+ z; O: N9 [/ I/ R* K. B 复位值:0x0000 0000: a( r) M0 ~7 |8 F ![]() 11.6 ADC 注入通道数据偏移寄存器 X (ADC_JOFRx)(x=1…4)+ F$ W9 N- Q( j7 I% B1 G ADC injected channel data offset register x 偏移地址:0x14-0x20 复位值:0x0000 0000. E) W$ j7 W1 m+ h; i+ O ![]() 11.7 ADC 看门狗高阈值寄存器 (ADC_HTR)5 A1 K8 j( h7 i( u% W& z ADC watchdog higher threshold register 偏移地址:0x24# g1 F: u$ z& n& e. U2 g% E 复位值:0x0000 0FFF ; m6 o& G1 M6 C( W3 S9 \6 \6 _ ![]() 7 R4 q' z, t7 c' y 11.8 ADC 看门狗低阈值寄存器 (ADC_LTR)" Y8 F% _" \, Z, A) Q ADC watchdog lower threshold register% L7 a! r k$ x a 偏移地址:0x28 复位值:0x0000 00004 H$ O$ N. b* {3 X9 w( B% m ![]() 11.9 ADC 规则序列寄存器 1 (ADC_SQR1) ADC regular sequence register 1 偏移地址:0x2C6 { {8 a1 g8 y 复位值:0x0000 0000' o3 d5 m$ J- J% Q ![]() * Z( z) f0 d: T" _ 11.10 ADC 规则序列寄存器 2 (ADC_SQR2). |" K" E, {& P! @+ }- T; e. i ADC regular sequence register 22 K2 }$ C6 i- E+ Z8 d 偏移地址:0x302 L8 w+ g( n, ` 复位值:0x0000 0000 ![]() 11.11 ADC 规则序列寄存器 3 (ADC_SQR3) ADC regular sequence register 3, A7 X4 D, H! s- s: Z! _5 G 偏移地址:0x345 {/ }0 ~8 O" B1 |0 I 复位值:0x0000 00001 [3 A: p! `- k) ~ 5 v5 P1 o8 c* |: k2 [) [& ~5 m ![]() 11.12 ADC 注入序列寄存器 (ADC_JSQR)( `3 {- M9 i& L/ i ADC injected sequence register 偏移地址:0x383 X8 K1 `4 p6 M4 m Q 复位值:0x0000 0000 - X" F& _* B( X2 u ![]() 11.13 ADC 注入数据寄存器 x (ADC_JDRx) (x= 1…4) ADC injected data register x( u8 n) ^( K5 c. }. C# w. O& q 偏移地址:0x3C - 0x48 复位值:0x0000 00000 {( ?+ Q+ Z$ \3 X1 f ![]() ; n+ j4 e" }6 a* B 11.14 ADC 规则数据寄存器 (ADC_DR)* k4 h* Z5 w8 D5 V& K. y5 W+ D ADC regular data register+ V$ `9 W/ U. {, g 偏移地址:0x4C 复位值:0x0000 0000- r& t e2 x# e4 C6 U6 t ) j& k3 F1 X! ^7 @" |1 T ![]() 7 F( \2 @* m' J2 f 11.15 ADC 通用状态寄存器 (ADC_CSR) ADC Common status register6 {7 n. h- _6 t) A' ]: X 偏移地址:0x00(该偏移地址与 ADC1 基地址 + 0x300 相关)/ p4 Q' w: j+ n) L 复位值:0x0000 00006 ]2 W! L y+ U Y0 j- z 该寄存器可提供不同 ADC 的状态位图像。但是,它为只读形式且不允许将不同的状态位清零。必须在对应的 ADC_SR 寄存器中将其写为 0,才能将各个状态位清零。( k6 w/ e0 p1 N j: F % s( ]8 v3 I# A! q7 z# h ![]() / M8 } f7 Q( p- ?/ L1 N0 l8 v- g 11.16 ADC 通用控制寄存器 (ADC_CCR)7 l6 e* x- ^! J; H9 y ADC common control register3 L- p4 c' B0 L 偏移地址:0x04(该偏移地址与 ADC1 基地址 + 0x300 相关)& V6 x) c% u) m' m! D' V4 h+ y 复位值:0x0000 0000. T) @3 w! s7 v1 ^ ; Q: I5 A4 Z0 t0 L. Z: y8 f$ r ![]() 11.17 适用于双重和三重模式的 ADC 通用规则数据寄存器(ADC_CDR), R/ V7 ^- F0 E; l5 L ADC common regular data register for dual and triple modes1 [7 z* ]) ~6 Q2 }$ t 偏移地址:0x08(该偏移地址与 ADC1 基地址 + 0x300 相关)0 _7 s$ {* X. \, j5 q0 q 复位值:0x0000 0000 & M& ^( V, Z4 u6 k) S! [ ![]() E* N# n) U/ ?" q/ v ; _4 d2 h8 }/ D- r |
【2025·STM32峰会】GUI解决方案实训分享5-调通板载的NRF24L01 SPI接口并使用模块进行无线通信(发送和接收)
【2025·STM32峰会】GUI解决方案实训分享2-编译运行TouchGFX咖啡机例程(含桌面仿真)
实战经验 | Keil工程使用NEAI库的异常问题
STM32 ISP IQTune:真正零门槛的免费ISP调整软件
【经验分享】STM32 新建基于STM32F40x 固件库的MDK5 工程
意法半导体MCU双供应链策略,打消中国客户后顾之忧
【经验分享】基于STM32使用HAL库实现USB组合设备CDC+MSC
2024意法半导体工业峰会:赋能智能电源和智能工业,构筑可持续未来
ST推出灵活、面向未来的智能电表通信解决方案,助力能源转型
意法半导体 x Qu-Bit Electronix:推动新一轮的数字声音合成革命