
一. 前言 " J/ s1 |0 Y- c9 n+ ?9 K ![]() ADC是指模数转化,即将模拟信号转化为数字信号。 世界的信号本质都是模拟信号,如速度、温度、声音,在本质上都是模拟的。但是微控制器和微处理器上运行的电子设备不能直接读取或者解释这些模拟值,因为它们只在0和1上运行。所以我们需要将这些模拟值转换成0和1,以便微控制器和微处理器能够理解它们。这就是我们所说的模拟信号转化为数字信号。与ADC相对应的是DAC,即将数字信号转化为模拟信号。 8 n3 a3 Y2 X4 c$ Y, u8 I 二. CubeMX配置7 n0 F5 R+ _% ^$ e- N3 K# J 开发环境:Keil 、 CubeMX 软件版本:5.31 、6.2.1 使用芯片:STM32F103C8T60 ]2 I! U8 v7 [! L 开发语言:C- b- r2 O& q6 a% r8 P4 S8 O CubeMX的配置非常简单:Analog->ADCx->INx 。 $ d! c2 u4 p" W, G0 }6 L ![]() 9 h5 b( G$ k# M0 w7 C 此处选择多通道采集,选择ADC1 ,勾选IN1 、IN2 。配置如下: 由于是多通道采集,需开启Scan Conversion Mode 扫描模式 。 需要多次读取,因此开启Continuous Conversion Mode 连续转换模式 。. r% U+ d, n: G) y6 [ 选配Rank,给IN1、IN2选择合适的采样通道和采样周期。 / V6 \1 @2 e& I7 k' g+ _/ g0 m/ C" q ![]() , C3 L$ o$ F$ ^- {1 W6 R( T: E 添加DMA通道 ,将模式改为Circular 循环模式 ,这样每次DMA传输成功后会主动开启下一次传输。) u1 T8 Q0 W' K+ U2 x2 Z9 @( j# B7 y ![]() 三. ADC读取 启动函数:9 a, V* b) d+ V, z% u e
将ADC用于遥杆的读取: 遥杆的本质是一个电位器,通过ADC采集变化的电压可以得到遥杆X、Y轴的遥杆值。按照上面的配置,在生成的Keil工程中加入如下代码可以便可以得到采集的遥杆值。; L5 Y$ `* K! S4 Q- ~
& R0 j+ X3 @9 ~% g4 H0 I' z3 D- T ![]() 注意: 如果开启ADC的DMA接收后没办法继续运行主函数可能是因为设置的采样周期太短,频繁触发DMA接受中断导致的。可以在CubeMX中把Rank中通道的采样周期Samplink Time 设长一些,亲测有效。; ^9 b- P) _. `+ N& ]5 _ ———————————————— 版权声明:冬瓜~ o0 x. K8 m* c& H9 c2 z |
实战经验 | TrustZone应用中串口通信的DMA传输失败问题
狂欢三】STM32C031使用TIM定时器DMA方式实现WS2812彩灯输出(三)
stm32使用定时器触发dma传输,启动dma没反应的几种情况的解决方法
STM32的DMA双缓冲模式详解
基于STM32使用ADC的多通道采样经验分享
基于STM32的心率计以DMA方式获取传感器数据经验分享
基于STM32利用ADC+DMA采样显示经验分享
【经验分享】STM32使用DMA接收串口数据
基于STM32的DMA经验分享
基于STM32的ADC+DMA采样与板载运放跟随经验分享