STMCU小助手
发布时间:2023-2-26 18:35
|
一. 前言 . s3 j/ {! E* O" E/ D
ADC是指模数转化,即将模拟信号转化为数字信号。 世界的信号本质都是模拟信号,如速度、温度、声音,在本质上都是模拟的。但是微控制器和微处理器上运行的电子设备不能直接读取或者解释这些模拟值,因为它们只在0和1上运行。所以我们需要将这些模拟值转换成0和1,以便微控制器和微处理器能够理解它们。这就是我们所说的模拟信号转化为数字信号。与ADC相对应的是DAC,即将数字信号转化为模拟信号。5 q' K# U a6 [/ n0 |9 b( n! ?$ K& Q 二. CubeMX配置3 g& O1 @) {( P" v, g! |2 @ 开发环境:Keil 、 CubeMX0 _0 ~& p* G( C: v) h: h 软件版本:5.31 、6.2.18 H+ | b4 f7 b 使用芯片:STM32F103C8T6 S8 w4 v. N+ e+ o 开发语言:C. p- Z8 D3 G( T3 c! m - `6 Y+ ^4 ?7 }9 U) W" O CubeMX的配置非常简单:Analog->ADCx->INx 。0 n( E/ Y1 L* `& t$ [* @( k7 h 8 J+ V- z# b. C
2 v0 J2 L: N+ j% U6 Y 此处选择多通道采集,选择ADC1 ,勾选IN1 、IN2 。配置如下:. I- G/ l* w7 s; P4 Z3 X 由于是多通道采集,需开启Scan Conversion Mode 扫描模式 。 需要多次读取,因此开启Continuous Conversion Mode 连续转换模式 。 选配Rank,给IN1、IN2选择合适的采样通道和采样周期。2 |% f- ^ U. S% Q' H: t" o7 R
添加DMA通道 ,将模式改为Circular 循环模式 ,这样每次DMA传输成功后会主动开启下一次传输。 7 M5 R7 o( A% z( w5 h' E; K
三. ADC读取. h3 \& A" c5 y% d1 K 启动函数:' w. a# Y0 y% `, i, Y
将ADC用于遥杆的读取: 遥杆的本质是一个电位器,通过ADC采集变化的电压可以得到遥杆X、Y轴的遥杆值。按照上面的配置,在生成的Keil工程中加入如下代码可以便可以得到采集的遥杆值。. E u- L( w G# H# B
- ?+ |6 b+ y% V
注意: 如果开启ADC的DMA接收后没办法继续运行主函数可能是因为设置的采样周期太短,频繁触发DMA接受中断导致的。可以在CubeMX中把Rank中通道的采样周期Samplink Time 设长一些,亲测有效。0 f$ P' i& J2 M1 |0 {/ b2 ]! m ————————————————* y+ C5 z( r5 v( `# `. k 版权声明:冬瓜~ ( o. r& p7 h% q5 K |
【STM32H5 评测】ADC 电压表
经验分享 | 通过STM32 TIMER的PWM功能模拟输出正弦波
STM32H563 ADC+TIM+DMA应用演示
SPI 32位宽DMA方式收发失败问题
多通道DMA传输为何有一路异常?
经验分享 | STM32N6 ADC DMA 传输失败案例分享
经验分享 | DMA发送函数只能第一次调用有效?
经验分享 | 使用EXIT0同步触发SPI的DMA发送话题
【开发经验】LAT1500 如何通过DMA配合CRC功能
实战经验 | MC SDK V6.x软件HSO功能ADC采样设计说明
微信公众号
手机版