Stm32F103R6之ADC

目录

概述

通道选择

转换模式

模拟看门狗

校准

外部触发转换

DMA请求

双ADC模式

温度传感器


概述

模拟/数字转换(ADC) 可测量多个通道的外部和内部信号源。各通道的A/D转换可以单次、连续、扫描或间断模式执行。ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。 模拟看门狗特性允许应用程序检测输入电压是否超出用户定义的高/低阀值。

Stm32F103R6之ADC

图 1ADC框图

通道选择

通常规则通道组中可以安排最多16个通道,而注入通道组可以安排最多4个通道。

注入组的转换会打断规则组的转换。规则通道组的转换好比是程序的正常执行,而注入通道组的转换则好比是程序正常执行之外的一个中断处理程序。

比如你在家里的院子内放了5个温度探头,室内放了3个温度探头;你需要时刻监视室外温度即可,但偶尔你想看看室内的温度;因此你可以使用规则通道组循环扫描室外的5个探头并显示AD转换结果,当你想看室内温度时,通过一个按钮启动注入转换组(3个室内探头)并暂时显示室内温度,当你放开这个按钮后,系统又会回到规则通道组继续检测室外温度。

● 规则组。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。

● 注入组。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。 如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉冲将发送到ADC以转换新选择的组。

● 温度传感器/ VREFINT。内部通道温度传感器和通道ADC1_IN16相连接,内部参照电压VREFINT和ADC1_IN17相连接。可以按注入或规则通道对这两个内部通道进行转换。

转换模式

● 单次转换模式下,ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动,也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。

● 在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。

模拟看门狗

如果被ADC转换的模拟电压低于低阀值或高于高阀值,AWD模拟看门狗状态位被设置。阀值位于ADC_HTR和ADC_LTR寄存器的最低12个有效位中。通过设置ADC_CR1寄存器的AWDIE位以允许产生相应中断。

通过配置ADC_CR1寄存器,模拟看门狗可以作用于1个或多个通道。

Stm32F103R6之ADC

图 2模拟看门狗通道选择

校准

ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。

通过设置ADC_CR2寄存器的CAL位启动校准。一旦校准结束,CAL位被硬件复位,可以开始正常转换。

建议在上电时执行一次ADC校准。校准阶段结束后,校准码储存在ADC_DR中。

外部触发转换

转换可以由外部事件触发(例如定时器捕获,EXTI线)。如果设置了EXTTRIG控制位,则外部事件就能够触发转换。EXTSEL[2:0]和JEXTSEL2:0]控制位允许应用程序选择8个可能的事件中的某一个,可以触发规则和注入组的采样。

注意: 当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。

DMA请求

因为规则通道转换的值储存在一个仅有的数据寄存器中,所以当转换多个规则通道时需要使用DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。

只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户指定的目的地址。

ADC模式

在有2个或以上ADC模块的产品中,可以使用双ADC模式。

在双ADC模式里,根据ADC1_CR1寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是ADC1主和ADC2从的交替触发或同步触发。

注意: 在双ADC模式里,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。但是,主和从ADC的外部触发必须同时被激活。在双ADC模式里,为了在主数据寄存器上读取从转换数据,必须使能DMA位,即使不使用DMA传输规则通道数据。

Stm32F103R6之ADC

图 3双ADC框图

温度传感器

温度传感器可以用来测量器件周围的温度(TA)。 温度传感器在内部和ADC1_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。温度传感器模拟输入推荐采样时间是17.1μs。

温度传感器输出电压随温度线性变化,由于生产过程的变化,温度变化曲线的偏移在不同芯片上会有不同(最多相差45°C)。 内部温度传感器更适合于检测温度的变化,而不是测量绝对的温度。如果需要测量精确的温度,应该使用一个外置的温度传感器。

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: STM32F103R6是一款基于ARM Cortex-M3内核的单片机,具有多个模拟数字转换器(ADC通道,可用于电压信号的采集。 首先,我们需要在STM32F103R6上配置ADC模块。首先选择要使用的ADC通道,并设置ADC模式(单通道或扫描模式)。接下来,我们可以设置ADC的采样时间和采样顺序。采样时间决定了ADC在转换过程中将信号采样多少次,采样顺序确定了ADC转换的顺序。 接下来,我们可以初始化ADC模块并对其进行配置。我们可以设置ADC的分辨率(8位、10位或12位)、工作模式(单次转换或连续转换)、对齐方式(左对齐或右对齐)等。我们还可以配置DMA(直接内存访问)来自动传输ADC转换结果。 当ADC模块配置好后,我们可以开始进行电压采集。首先,我们需要启动ADC模块,这将启动转换过程。然后,我们可以使用适当的函数来读取ADC通道的转换结果。转换结果将根据所选的分辨率进行缩放,以获得正确的电压值。 最后,根据应用需求,我们可以对电压进行进一步的处理。例如,我们可以使用电压值进行数据显示、数据记录、控制逻辑等。在处理电压值时,我们还可以使用运算和校准来提高测量的准确性和精度。 总之,使用STM32F103R6ADC模块,我们可以轻松地进行电压信号的采集和处理,为应用程序提供准确和可靠的电压测量功能。 ### 回答2: STM32F103R6是一款32位ARM Cortex-M3内核的微控制器,具有多个模拟数字转换器(ADC通道,可用于采集电压信号。 STM32F103R6ADC模块可以将物理世界中的模拟电压信号转换为数字信号,并通过内部控制器进行处理和分析。它可以采集范围在0至3.3V之间的电压信号。 在使用STM32F103R6进行ADC采集电压时,首先需要初始化ADC模块,并配置所需的通道和采样率。通常需要设置ADC时钟频率、采样时间和参考电压等参数。 然后,可以通过编程指令启动ADC的转换过程。转换过程中,ADC会将电压信号进行采样和转换,并将结果以数字形式存储在寄存器中。用户可以通过读取这些寄存器来获取转换结果。 另外,STM32F103R6还提供了中断和DMA两种方式来处理ADC转换完成的事件。用户可以根据需要选择合适的方式来获取采集到的电压值。 需要注意的是,由于ADC转换的精度有限,可能存在一定的误差。因此,在实际应用中,可能需要进行校准和调整以提高测量的准确性。 总而言之,通过STM32F103R6ADC模块,我们可以方便地进行电压信号的采集,为后续的数据处理和分析提供基础。这为电子设计和物联网等领域的应用提供了很大的便利。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

丰年稻香

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值