STM32开发(十一)STM32F103 片内资源 —— ADC 详解


ADC介绍

  • 12位ADC是一种逐次逼近型模拟数字转换器。
  • 有多达18个通道,可测量16个外部和2个内部信号源。
  • 各通道的A/D转换可以单次、连续、扫描或间断模式执行。
  • ADC的结果可以左对齐或右对齐方式存储在16位数据寄存器中。
  • ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。

ADC特征

12位分辨率
转换结束、注入转换结束和发生模拟看门狗事件时产生中断
支持单次和连续转换模式、从通道0到通道n的自动扫描模式、间断模式、双重模式(带2个或以上ADC的器件)
自校准
带内嵌数据一致性的数据对齐
采样间隔可以按通道分别编程
规则转换和注入转换均有外部触发选项
ADC转换时间:STM32F103xx 时钟为56MHz时为1μs(时钟为72MHz为1.17μs)
规则通道转换期间有DMA请求产生。
ADC供电要求: 2.4V到3.6V


ADC 内部框图

在这里插入图片描述
1、ADCx_IN0-IN15共16通道,两个内部通道分别用于温度传感器和基准电压采集。
2、ADC采集可以通过外部中断进行触发EXTI_15和EXTI_11
3、18路ADC通道通过模拟至数字转换器中的注入通道和规则通道,将数据传输到对应的寄存器中,可以通过地址/数据总线采集到对应数据。
4、ADCCLK是由PCLK2经分频产生,供转换器工作。
5、ADC转换结束或者模拟看门狗事件触发,产生中断信号。


通道选择

有16个多路通道。**可以把转换组织成两组:规则组和注入组。**在任意多个通道上以任意顺序进行的一系列转换构成成组转换。
例如,可以如下顺序完成转换:通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。
● 规则组由多达16个转换组成。规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。规则组中转换的总数应写入ADC_SQR1寄存器的L[3:0]位中。
● 注入组由多达4个转换组成。注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。注入组里的转换总数目应写入ADC_JSQR寄存器的L[1:0]位中。
如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉冲将发送到ADC以转换新选择的组。


工作模式

单次转换模式

单次转换模式下, ADC只执行一次转换。该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。
一旦选择通道的转换完成:
● 如果一个规则通道被转换:─ 转换数据被储存在16位ADC_DR寄存器中─ EOC(转换结束)标志被设置─ 如果设置了EOCIE,则产生中断。
● 如果一个注入通道被转换:─ 转换数据被储存在16位的ADC_DRJ1寄存器中─ JEOC(注入转换结束)标志被设置─ 如果设置了JEOCIE位,则产生中断。


连续转换模式

在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。
每个转换后:
● 如果一个规则通道被转换:─ 转换数据被储存在16位的ADC_DR寄存器中─ EOC(转换结束)标志被设置─ 如果设置了EOCIE,则产生中断。
● 如果一个注入通道被转换:─ 转换数据被储存在16位的ADC_DRJ1寄存器中─ JEOC(注入转换结束)标志被设置─ 如果设置了JEOCIE位,则产生中断。
在这里插入图片描述


扫描模式

此模式用来扫描一组模拟通道。扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。
一旦这个位被设置, ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道。
在每个组的每个通道上执行单次转换。
在每个转换结束时,同一组的下一个通道被自动转换。
如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。
如果设置了DMA位,在每次EOC后, DMA控制器把规则组通道的转换数据传输到SRAM中。
而注入通道转换的数据总是存储在ADC_JDRx寄存器中。


ADC校准

通过设置ADC_CR2寄存器的CAL位启动校准。一旦校准结束, CAL位被硬件复位,可以开始正常转换。
建议在每次上电后执行一次校准。
启动校准前, ADC必须处于关电状态(ADON=’0’)超过至少两个ADC时钟周期
校准阶段结束后,校准码储存在ADC_DR中。
在这里插入图片描述


可编程的通道采样时间

ADC使用若干个ADC_CLK周期对输入电压采样,采样周期数目可以通过ADC_SMPR1和ADC_SMPR2寄存器中的SMP[2:0]位更改。每个通道可以分别用不同的时间采样。
总转换时间如下计算:TCONV = 采样时间+ 12.5个周期
如:当ADCCLK=14MHz,采样时间为1.5周期 TCONV = 1.5 + 12.5 = 14周期 = 1μs

猜你喜欢

转载自blog.csdn.net/weixin_43564241/article/details/130001179