一. 前言 j: ]8 K3 z. {1 w: X ADC是指模数转化,即将模拟信号转化为数字信号。 世界的信号本质都是模拟信号,如速度、温度、声音,在本质上都是模拟的。但是微控制器和微处理器上运行的电子设备不能直接读取或者解释这些模拟值,因为它们只在0和1上运行。所以我们需要将这些模拟值转换成0和1,以便微控制器和微处理器能够理解它们。这就是我们所说的模拟信号转化为数字信号。与ADC相对应的是DAC,即将数字信号转化为模拟信号。" q7 g3 R! M) C8 I" x# Y) @) f 4 M+ O2 K. n5 e + ]* n1 u4 X" Y) [7 ~! q 二. CubeMX配置% _2 N; f# E4 u. V, j+ t$ x# _ 开发环境:Keil 、 CubeMX 软件版本:5.31 、6.2.1 使用芯片:STM32F103C8T6" [5 `4 F# R0 p! ]1 i. c 开发语言:C $ o& r8 L& @8 d CubeMX的配置非常简单:Analog->ADCx->INx 。 _0 ]- F# f6 D( f9 W 此处选择多通道采集,选择ADC1 ,勾选IN1 、IN2 。配置如下:3 O9 H7 s8 | W# t: U( | t& } 由于是多通道采集,需开启Scan Conversion Mode 扫描模式 。 需要多次读取,因此开启Continuous Conversion Mode 连续转换模式 。$ O$ D- L! O% T- H _$ \0 d 选配Rank,给IN1、IN2选择合适的采样通道和采样周期。) }: f) C% i0 ~7 O. m& E' | 添加DMA通道 ,将模式改为Circular 循环模式 ,这样每次DMA传输成功后会主动开启下一次传输。 * d0 a. P* s, d* x7 z9 n $ E5 `% }! R( a, P 三. ADC读取2 a. Q, w! x4 z% v 启动函数:# D0 c" p- [ e. {
将ADC用于遥杆的读取: 遥杆的本质是一个电位器,通过ADC采集变化的电压可以得到遥杆X、Y轴的遥杆值。按照上面的配置,在生成的Keil工程中加入如下代码可以便可以得到采集的遥杆值。! M$ c8 d9 ~. b, R- w8 l
- S: }; `; I8 N' P# @0 A0 J* h. a$ \ 注意: 如果开启ADC的DMA接收后没办法继续运行主函数可能是因为设置的采样周期太短,频繁触发DMA接受中断导致的。可以在CubeMX中把Rank中通道的采样周期Samplink Time 设长一些,亲测有效。 ————————————————8 P5 o0 |6 L. j7 S0 Q! e 版权声明:冬瓜~, v* n0 K; `& n+ \ |
基于STM32U5系列TIMER+DMA+DAC应用经验分享
基于STM32双定时器+ADC+DMA实战经验分享
基于STM32的定时器触发ADC时可能遇到的情形
基于STM32的ADC片内信号经验分享
基于STM32 DMA传输的两个问题释疑
基于STM32的Timer 结合 DMA 2D 通道实现不同波形输出
TIM DMA burst 输出变频 PWM 波形
基于STM32的 DMA 实验经验分享
基于STM32U5 ADC+DMA配置经验分享
基于STM32H563演示UART+DMA经验分享