
一. 前言![]() ADC是指模数转化,即将模拟信号转化为数字信号。 世界的信号本质都是模拟信号,如速度、温度、声音,在本质上都是模拟的。但是微控制器和微处理器上运行的电子设备不能直接读取或者解释这些模拟值,因为它们只在0和1上运行。所以我们需要将这些模拟值转换成0和1,以便微控制器和微处理器能够理解它们。这就是我们所说的模拟信号转化为数字信号。与ADC相对应的是DAC,即将数字信号转化为模拟信号。 二. CubeMX配置 开发环境:Keil 、 CubeMX 软件版本:5.31 、6.2.1 使用芯片:STM32F103C8T6 开发语言:C CubeMX的配置非常简单:Analog->ADCx->INx 。 ![]() 此处选择多通道采集,选择ADC1 ,勾选IN1 、IN2 。配置如下: 由于是多通道采集,需开启Scan Conversion Mode 扫描模式 。 需要多次读取,因此开启Continuous Conversion Mode 连续转换模式 。 选配Rank,给IN1、IN2选择合适的采样通道和采样周期。 ![]() 添加DMA通道 ,将模式改为Circular 循环模式 ,这样每次DMA传输成功后会主动开启下一次传输。 ![]() 三. ADC读取 启动函数:
将ADC用于遥杆的读取: 遥杆的本质是一个电位器,通过ADC采集变化的电压可以得到遥杆X、Y轴的遥杆值。按照上面的配置,在生成的Keil工程中加入如下代码可以便可以得到采集的遥杆值。
![]() 注意: 如果开启ADC的DMA接收后没办法继续运行主函数可能是因为设置的采样周期太短,频繁触发DMA接受中断导致的。可以在CubeMX中把Rank中通道的采样周期Samplink Time 设长一些,亲测有效。 ———————————————— 版权声明:冬瓜~ |
经验分享 | STM32双定时器+ADC+DMA实战案例
经验分享 | STM32U5系列TIMER+DMA+DAC应用演示
经验分享 | 基于STM32片内信号的ADC应用演示
经验分享 | STM32F0 ADC结果挪位的问题分析及解决
经验分享 | 基于STM32H7 UART 空闲事件及DMA传输示例
经验分享 | 关于STM32 DMA传输的两个问题释疑
经验分享 | STM32G4 UART+TIMER+DMA应用示例
经验分享 | STM32 TIMER+DMA输出PWM异常二案例
经验分享 | STM32H7 EXTI + SPI +DMA 双缓冲应用演示
经验分享 | 三个 ADC 同步模式配置以及 CubeMx 错误配置的解决方法