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 具有模拟看门狗特性,允许应用检测输入电压是否超过了用户自定义的阈值上限或下限。 02. ADC主要特性 ● 可配置 12 位、10 位、8 位或 6 位分辨率 ● 在转换结束、注入转换结束以及发生模拟看门狗或溢出事件时产生中断5 V3 s! c4 I! [. H/ X2 d; \ ● 单次和连续转换模式% ]- D" I1 e3 D5 r ● 用于自动将通道 0 转换为通道“n”的扫描模式 ● 数据对齐以保持内置数据一致性 ● 可独立设置各通道采样时间 ● 外部触发器选项,可为规则转换和注入转换配置极性 ● 不连续采样模式" c6 l( x- n v w' U! g! [ ● 双重/三重模式(具有 2 个或更多 ADC 的器件提供). q9 z( E( r* f; d0 ?1 P ● 双重/三重 ADC 模式下可配置的 DMA 数据存储 ● 双重/三重交替模式下可配置的转换间延迟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 ● ADC 输入范围:V REF— V IN V REF+ ● 规则通道转换期间可产生 DMA 请求, Z& j# f4 d( N+ {- R 注意: V REF— 如果可用(取决于封装),则必须将其连接到 V SSA 。 03. ADC功能说明 框图" P2 }, h! |: E+ w* i. Z- B
04. ADC开关控制. {# @5 y* \& p3 C: e+ j 可通过将 ADC_CR2 寄存器中的 ADON 位置 1 来为 ADC 供电。首次将 ADON 位置 1 时,会将 ADC 从掉电模式中唤醒。 & K. }1 s2 k) \5 ~1 O) D- N SWSTART 或 JSWSTART 位置 1 时,启动 AD 转换。 可通过将 ADON 位清零来停止转换并使 ADC 进入掉电模式。在此模式下,ADC 几乎不耗电(只有几 μA) 05. ADC时钟 ADC 具有两个时钟方案:5 f" g# i) h; W+ ?* E4 J ● 用于模拟电路的时钟:ADCCLK,所有 ADC 共用 此时钟来自于经可编程预分频器分频的 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 使能/禁止数字接口时钟。 ( i3 f }9 H5 v* g* w2 `+ Q* w. | 06. 通道选择 有 16 条复用通道。可以将转换分为两组:规则转换和注入转换。每个组包含一个转换序列,该序列可按任意顺序在任意通道上完成。例如,可按以下顺序对序列进行转换:ADC_IN3、ADC_IN8、ADC_IN2、ADC_IN2、ADC_IN0、ADC_IN2、ADC_IN2、ADC_IN15。; a9 c8 _' i! O) ?2 `) i+ V ● 一个 规则转换组最多由 16 个转换构成。必须在 ADC_SQRx 寄存器中选择转换序列的规则通道及其顺序。规则转换组中的转换总数必须写入 ADC_SQR1 寄存器中的 L[3:0] 位。: @ V5 j- b0 s8 ] ● 一个 注入转换组最多由 4 个转换构成。必须在 ADC_JSQR 寄存器中选择转换序列的注入通道及其顺序。注入转换组中的转换总数必须写入 ADC_JSQR 寄存器中的 L[1:0] 位 ' C# g# k8 }; h! h 如果在转换期间修改 ADC_SQRx 或 ADC_JSQR 寄存器,将复位当前转换并向 ADC 发送一个新的启动脉冲,以转换新选择的组。 / D3 ^" ]8 o3 j( r2 h" B 温度传感器、V REFINT 和 V BAT 内部通道 ( 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。 V BAT 通道连接到通道 ADC1_IN18。该通道也可转换为注入通道或规则通道。: |+ ]- ?% A3 ?, ?: {* }: ^+ _ 注意: 温度传感器、 V REFINT 和 V BAT 通道只在主 ADC1 外设上可用。 07. 转换模式 单次转换模式 在单次转换模式下,ADC 执行一次转换。CONT 位为 0 时,可通过以下方式启动此模式:- P3 _4 {# o- O: s. l ● 将 ADC_CR2 寄存器中的 SWSTART 位置 1(仅适用于规则通道)1 v5 Z/ r/ a5 p ● 将 JSWSTART 位置 1(适用于注入通道) ● 外部触发(适用于规则通道或注入通道) 完成所选通道的转换之后:8 @/ X9 K) s3 d ● 如果转换了规则通道:8 }- l/ `( A% P — 转换数据存储在 16 位 ADC_DR 寄存器中 — 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 寄存器中 — JEOC(注入转换结束)标志置 1 — JEOCIE 位置 1 时将产生中断 然后,ADC 停止。 连续转换模式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 每次转换之后: ● 如果转换了规则通道组: — 上次转换的数据存储在 16 位 ADC_DR 寄存器中 — 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 08. 时序图( B' J- P ~; z7 j" L# _
! S; z0 N/ s/ s5 y. q4 a( P, ?/ | 09. 扫描模式& ?# d v* ?- P 此模式用于扫描一组模拟通道。 通过将 ADC_CR1 寄存器中的 SCAN 位置 1 来选择扫描模式。将此位置 1 后,ADC 会扫描在 ADC_SQRx 寄存器(对于规则通道)或 ADC_JSQR 寄存器(对于注入通道)中选择的所有通道。为组中的每个通道都执行一次转换。每次转换结束后,会自动转换该组中的下一个通道。如果将 CONT 位置 1,规则通道转换不会在组中最后一个所选通道处停止,而是再次从第一个所选通道继续转换。$ I' B; _& R5 ~4 s( Q 如果将 DMA 位置 1,则在每次规则通道转换之后,均使用直接存储器访问 (DMA) 控制器将转换自规则通道组的数据(存储在 ADC_DR 寄存器中)传输到 SRAM。 8 R* B$ Q* v/ u5 X. s 在以下情况下,ADC_SR 寄存器中的 EOC 位置 1:+ {/ \, C3 @9 }2 q9 G ● 如果 EOCS 位清零,在每个规则组序列转换结束时 ● 如果 EOCS 位置 1,在每个规则通道转换结束时 从注入通道转换的数据始终存储在 ADC_JDRx 寄存器中。# [9 }& f2 M% w7 W$ ] : [3 i; f0 K4 }6 [% T0 b4 X1 B 10. 数据对齐 ADC_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
11. 寄存器 11.1ADC 状态寄存器 (ADC_SR)) @- M; b7 L- B9 `# w( @4 T ADC status register; e/ X7 a4 V1 w6 y% u c 偏移地址:0x00 复位值:0x0000 0000 4 k6 n4 W; B( I& \3 k
11.2 ADC 控制寄存器 1 (ADC_CR1) ADC control register 1 偏移地址:0x04( g, _7 w1 v, R4 o# i; p 复位值:0x0000 00002 A. l3 @; C/ w9 ]9 f& Z
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 偏移地址:0x08' G1 _6 F9 V# O. q6 a 复位值:0x0000 0000 & c& w, W# ^0 H9 q3 `
11.4 ADC 采样时间寄存器 1 (ADC_SMPR1) ADC sample time register 1 k, g- L& K' y8 W# W 偏移地址:0x0C# p3 W7 b; X Z$ v! g 复位值:0x0000 0000
% a1 ?$ [! _6 x2 f 11.5 ADC 采样时间寄存器 2 (ADC_SMPR2): p* v% q9 E! L ADC sample time register 2 偏移地址:0x10+ B, o: c$ C+ v! { 复位值:0x0000 0000 9 u) U* {* T- g0 t
+ 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 偏移地址:0x14-0x20) E8 T3 A9 z- L9 _4 k 复位值:0x0000 0000 / H2 a& n# z+ k: I$ S
11.7 ADC 看门狗高阈值寄存器 (ADC_HTR) ADC watchdog higher threshold register( m0 O, E' r) e+ y 偏移地址:0x24- Q- g; z7 I4 h- W 复位值:0x0000 0FFF 3 q( c% }4 L5 p; Z3 I b' P
2 D4 V* `- H8 u, ]1 F4 J* f$ Y 11.8 ADC 看门狗低阈值寄存器 (ADC_LTR) ADC 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
11.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 2 ^: i! y$ c$ L) Z9 W6 P& q4 ~ 11.10 ADC 规则序列寄存器 2 (ADC_SQR2) ADC regular sequence register 2 偏移地址:0x304 M0 @0 T9 {4 F. I9 R* f# e 复位值:0x0000 0000 t. U ^3 J8 C- k6 s" ^ d
# v# Z0 r4 Q+ H$ S" B( W6 W 11.11 ADC 规则序列寄存器 3 (ADC_SQR3) ADC regular sequence register 3 偏移地址:0x34. a: B! H7 O0 _$ S/ Z7 n 复位值:0x0000 00004 F. J2 Y, \ w3 R" [8 ?7 J5 e
11.12 ADC 注入序列寄存器 (ADC_JSQR)" ]( y4 ]' P8 Q8 e& Z ADC injected sequence register 偏移地址:0x38 复位值:0x0000 00007 u* G. G J$ H. {% o . O1 ?* x5 | s) s
11.13 ADC 注入数据寄存器 x (ADC_JDRx) (x= 1…4) ADC injected data register x 偏移地址:0x3C - 0x48 复位值:0x0000 0000) ~% N5 X/ b1 G1 `# o( s4 l4 c
" |5 B. }! v2 ]4 ^$ h+ J- T5 a4 H 11.14 ADC 规则数据寄存器 (ADC_DR) ADC 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
11.15 ADC 通用状态寄存器 (ADC_CSR) ADC 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
11.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 8 N4 }2 S4 Q( M4 b2 B+ w8 ~
0 w1 o+ A; @. n# n4 Z 11.17 适用于双重和三重模式的 ADC 通用规则数据寄存器(ADC_CDR) ADC common regular data register for dual and triple modes4 E/ i" ~, K) s) ~7 q 偏移地址:0x08(该偏移地址与 ADC1 基地址 + 0x300 相关) 复位值:0x0000 0000
' N [7 G- O1 i |
【经验分享】STM32语音识别的智能蓝牙音箱(源程序+原理图+PCB+设计说明书+PPT)
想找个ST芯片
[GPIO] 使用新型抽象开始C++嵌入式编程,从GPIO开始
技术手册stm32f1xx中的一个小问题
【经验分享】STM32 HAL库移植FreeModbus详细步骤
【逢7发帖赢大礼】STM32开发之IC门禁卡UID读取方法!
实战经验 | Keil工程使用NEAI库的异常问题
经验分享 | FDCAN数据段波特率增加后发送失败的问题分析
STM32几种流行开发环境的优缺点
好用软件推荐-TouchGFX Designer
微信公众号
手机版