![shequ.stmicroelectronics.cn](./template/st_v1/static/img/logo2.png)
什么是ADC? ADC是模数转换器(Analog-to-Digital Converter)的缩写,它是一种将模拟信号转换为数字信号的设备。在嵌入式系统中,ADC常用于将传感器产生的模拟信号转换为数字信号,以便微控制器进行处理。# r3 D! M% t' M; Z1 V + _5 o2 }$ `: R0 |; S# i / x7 w+ \% B0 R& a9 o, x ADC是非常常用的器件,所以应该学会如何使用。+ J* F! a: ]6 W$ [" g# p$ p& q' @ ![]() 9 r8 `: h F1 u) A+ k # F5 N/ Z1 J9 \ ~ STM32中的ADC STM32微控制器系列是由STMicroelectronics推出的一系列32位ARM Cortex-M处理器的嵌入式系统。STM32系列通常配备了内置的ADC单元,使其能够轻松地进行模拟信号的数字化转换。& W+ m0 e- A' c# ]4 L6 Y8 v- p0 J0 G 5 A9 L$ Z: n2 |2 j0 O ![]() 3 e' l" U) m4 a$ O ?! x7 e h STM32 ADC的主要特点1 s+ q8 {, \/ a( L9 A9 A$ m7 M 1.多通道: STM32 ADC通常具有多个通道,允许同时转换多个模拟信号。每个通道可以连接到不同的传感器或电压源。 2.分辨率: 分辨率表示ADC能够将模拟信号分成多少个离散的步骤。常见的分辨率有12位和16位,分辨率越高,转换精度越高。+ D: A& {( [5 a& { , x; b6 S+ U/ B4 r2 X 3.采样速率: 采样速率是ADC每秒对模拟信号进行转换的次数。STM32 ADC通常具有可调节的采样速率,允许根据应用的要求进行优化。( W' _' {9 f- r* V% y$ ^1 l9 q4 m; V ! l$ D0 _. ^6 g% e8 \( y & j' \. }5 i2 n 4.触发模式: ADC可以通过软件或外部触发启动转换。这使得可以根据需要灵活地控制转换的时机。 0 R- e; G) d s3 }/ a( Q CubeMX初始化 其实STM32的ADC可以分为单通道与多通道两种。0 k5 X* U& t+ Y: `$ a: x) ] v 7 C% d& b( w3 w R( P. d: T8 {8 i1 _ 单通道即使用一个IO来实现ADC,多通道也顾名思义,使用多个通道ADC时如何处理。. u, F1 K+ c) |1 u7 o 2 F0 H9 x! Z9 X* m' v$ O + w' P4 ?; ?" z! w1 R 单通道ADC配置图片3 s! U) ] Z# `- E3 I " K) m [: I0 o0 w* M- Z: d ![]() ( U# q4 P+ @3 i8 ?$ J, i% ]& L z: \ , F* R4 E ^* D. P7 W' V2 g7 ] 在CubeMX中选择好对应的芯片,配置好时钟,开启串口方便调试。$ i5 r+ ?0 u3 i% ]- o' v/ Y ) n b0 J \. F6 p! { ![]() ! B' M; a6 T! o @ u 0 o. }9 f C) H2 P+ \ 5 P2 a3 l" T% x& b9 _ 选择具有ADC功能的IO,点击开启ADC。 , s5 I: O/ J; S4 x E ADC设置 ![]() - c0 J3 u% o6 p 0 a- t5 J. V& W" m 设置ADC的模式,单通道的话大部分都不用改。$ }) x. D! t& Y- z) _ 然后就可以生成我们的工程了。 ; ^0 ~& v" W/ s 代码配置
在Uart.c中重定向我们的串口,方便使用Printf函数。
![]() " {& t" m6 x/ L1 _5 v4 `6 T& ?3 W' d % b0 v3 J5 \. s8 J 可以看到我们实现了单通道ADC。' j/ J: j* e' J( m$ L$ F; Q4 Y 8 M# d0 F* v7 t' W4 [* q8 ` 多通道ADC 多通道ADC,我们使用多通道间断模式 ![]() # Y+ P* H& w9 @" B' C, V; B 开启多个ADC通道。 ![]() $ S: D# I- t& s R8 i* A4 ` ; f4 t' W, {' Z- C. O4 N. Y& H 这里必须使能扫描模式和间断模式" U" P: U- a; C( ^( A/ j' _ ![]() 6 Q& t3 u$ p( u0 f0 a2 f" j 0 q; j) `& q$ Z* b x& k: v$ t 通道数设置为3,顺序为12,13,14.7 {- g& x- y& W+ B, T3 K
这样子ADC返回的值就是按照通道顺序而定。 B; n$ c9 f3 y- n ![]() 3 _! {1 M7 Z! n" X+ I ( `1 W; `* ^ p! \ 可以看到,可以读到ADC的值并打印了出来 转载自: 电路小白 1 K" I* Z5 z+ C5 B, x) X: S 如有侵权请联系删除3 y1 S4 Y9 k; D5 @ : t f4 f, B% i9 r7 C: M# [ ' S6 W" M9 s) m" U( T |
基于STM3的开发环境搭建经验分享
基于STM32的ADC+DMA采样与板载运放跟随经验分享
如何使用CubeMX实现STM32的串口通信以及对printf等函数的重定向
基于STM32F407和Cubemx的ADC采集+DMA传输实现简易示波器经验分享
基于STM32利用ADC+DMA采样显示经验分享
基于STM32CubeMX输入捕获测周法检测频率经验分享
基于STM32使用ADC的多通道采样经验分享
基于STM32的ADC+DMA采样与板载运放跟随经验分享
【STM32C0测评】外部中断控制小灯
意法半导体最具性价比、速度最快的单核MPU STM32MP13现已支持运行RTOS