网站优化需要什么软件,北滘网站建设公司,广东移动网站,网站建设分金手指排名二五STM32F407 ADC 模式详解#xff1a;单次转换、连续转换、扫描模式、非扫描模式
前言
在 STM32F407 中#xff0c;ADC#xff08;模数转换器#xff09;模块常用于采集模拟信号#xff0c;比如读取光敏电阻、电压、电流、温度传感器等。STM32 的 ADC 模式较多#xff0c…STM32F407 ADC 模式详解单次转换、连续转换、扫描模式、非扫描模式
前言
在 STM32F407 中ADC模数转换器模块常用于采集模拟信号比如读取光敏电阻、电压、电流、温度传感器等。STM32 的 ADC 模式较多初学者常常会混淆
单次转换和连续转换的区别扫描模式和非扫描模式分别用于什么场景
本篇文章将全面讲解 STM32F407 中 ADC 的四种核心工作模式带你从概念到应用搞懂它们的配置和组合。
一、ADC 模式分类总览
STM32F407 的 ADC 模式可以从两个维度理解
分类方向模式名称功能说明转换行为单次转换模式转换一次即停止不自动继续连续转换模式一次启动后自动不断采样通道采样方式扫描模式支持多个通道依次采样非扫描模式只采样一个通道
这两个方向的模式可以自由组合使用形成不同的采样逻辑例如“连续非扫描”、“单次扫描”等。
二、单次转换模式Single Conversion Mode
详细解释通俗专业
在单次转换模式下ADC 只进行一次采样与转换完成后会自动停止。
通俗理解你按一下按钮它就采一口“模拟信号”转成数字值然后就不动了想要再采一次必须手动再触发。
专业说明
控制寄存器ADC_CR2.CONT 0关闭连续模式触发方式软件触发或外部事件一次转换后EOC转换完成标志位置位ADC停止工作
使用场景示例
需要用户操作或定时器触发时才采样一次例如测量温度、电压快照等
三、连续转换模式Continuous Conversion Mode
详细解释通俗专业
在连续转换模式下ADC 在启动后会自动不断重复采样适用于实时性要求较高的场合。
通俗理解你一打开开关它就像一个不停喝水的家伙一直把模拟信号喝进来转成数字除非你强行关掉它。
专业说明
控制寄存器ADC_CR2.CONT 1打开连续模式启动后ADC 会在每次转换完成后自动立即开始下一次通常配合 DMA 或中断读取提高效率
使用场景示例
实时电压监控、传感器数据流读取等
四、扫描模式Scan Mode
详细解释通俗专业
扫描模式允许 ADC 在一次触发下自动依次转换多个通道的模拟信号适用于同时采集多个传感器数据的应用场景。
通俗理解ADC 就像一个机器人它按照你设定的清单依次去采集第1个通道、第2个通道、第3个……直到完成一轮。
专业说明
控制寄存器ADC_CR1.SCAN 1打开扫描模式转换通道顺序通过 SQR1~SQR3 配置例如通道数量、通道顺序等每个通道转换结果会顺序写入 ADC_DR 数据寄存器通常配合 DMA 搬运
使用场景示例
项目中使用多个 ADC 输入如光敏、电压、气体、温度传感器一次采样全部获取
五、非扫描模式No Scan Mode
详细解释通俗专业
非扫描模式是默认模式表示一次转换只采样一个通道的模拟电压值适用于只需要采一个信号源的应用场景。
通俗理解ADC 盯着一个传感器看一次只测它不关心其他通道。
专业说明
控制寄存器ADC_CR1.SCAN 0关闭扫描采样通道由 ADC_SQR3 指定例如 ADC_SQR3 5 表示采样 ADC_IN5数据输出在 ADC_DR 寄存器中
使用场景示例
项目中只有一个传感器输入逻辑简单代码结构清晰
六、四种模式组合行为汇总
STM32 的这两类模式是可以任意组合的。以下是组合后的行为总结
扫描模式连续模式行为描述关闭关闭只采一个通道采一次停止关闭开启只采一个通道自动不断采样开启关闭多个通道依次采样采一轮停止开启开启多个通道依次采样不断重复整个过程
这些组合中的“多通道自动轮询”非常适合使用 DMA 自动搬数据避免主循环里占用 CPU 资源。
七、常见应用组合推荐
实际需求推荐配置读取一个通道一次采样非扫描 单次转换实时读取一个通道非扫描 连续转换轮流读取多个通道采一轮扫描 单次转换连续轮流读取多个通道扫描 连续转换 DMA
八、示例代码使用寄存器配置
以下代码展示了一个连续采样 ADC_IN10 通道的最简初始化配置
void ADC1_Init(void)
{// 1. 打开时钟RCC-APB2ENR | (1 8); // ADC1 时钟使能RCC-AHB1ENR | (1 0); // GPIOA 时钟使能// 2. 设置PA0为模拟模式假设IN0GPIOA-MODER | (3 (0 * 2)); // 模拟模式// 3. ADC 配置ADC1-CR1 ~(1 8); // 关闭扫描模式ADC1-CR2 | (1 1); // 开启连续转换ADC1-SQR3 0; // 通道0ADC1-CR2 | (1 0); // 使能ADCADC1-CR2 | (1 30); // 软件启动
}如果你需要扫描两个通道配合 DMA还可以增加以下配置
ADC1-CR1 | (1 8); // 开启扫描模式
ADC1-SQR1 (2 - 1) 20; // 转换2个通道
ADC1-SQR3 (10 0) | (11 5); // 第一个是IN10第二个是IN11九、结尾总结
STM32F407 的 ADC 模式虽然看起来复杂但只要掌握以下两点就能灵活应对各种应用场景
是否连续转换转换一次就停 or 一直采样是否扫描多个通道单通道 or 多通道轮流
掌握这两对组合就能轻松根据项目需求灵活配置 ADC。
如果你正在调试 ADC建议一开始使用非扫描 单次转换调试通道然后逐步扩展到扫描 DMA 模式循序渐进、效率最高。 如果你需要后续内容如 DMA 配置讲解、ADC 中断读取等也可以留言告诉我后续我会写专门的篇章补充。希望本文对你有帮助感谢阅读。