当前位置:   article > 正文

STM32f103--ADC配置_stm32f103 adc

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)
STM32F101xx基本型产品:时钟为28MHz时为1μs(时钟为36MHz为1.55μs)
STM32F102xxUSB型产品:时钟为48MHz时为1.2μs
STM32F105xx和STM32F107xx产品:时钟为56MHz时为1μs(时钟为72MHz为1.17μs)
● ADC供电要求:2.4V到3.6V
● ADC输入范围:VREF- ≤ VIN ≤ VREF+
● 规则通道转换期间有DMA请求产生。

注意: 如果有VREF-引脚(取决于封装),必须和VSSA相连接

 1.ADC3的规则转换和注入转换触发与ADC1和ADC2的不同。
2.TIM8_CH4和TIM8_TRGO及它们的重映射位只存在于大容量产品中。

 ADC开关控制:

通过设置ADC_CR2寄存器的ADON位可给ADC上电。当第一次设置ADON位时,它将ADC从断
电状态下唤醒。
ADC上电延迟一段时间后(tSTAB),再次设置ADON位时开始进行转换。
通过清除ADON位可以停止转换,并将ADC置于断电模式。在这个模式中,ADC几乎不耗电(仅
几个μA)。

ADC时钟:

由时钟控制器提供的ADCCLK时钟和PCLK2(APB2时钟)同步。RCC控制器为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以转换新选择的组。
温度传感器/ VREFINT内部通道
温度传感器和通道ADC1_IN16相连接,内部参照电压VREFINT和ADC1_IN17相连接。可以按注入
或规则通道对这两个内部通道进行转换。
注意: 温度传感器和VREFINT只能出现在主ADC1中。

单次转换模式:

单次转换模式下,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在开始精确转换前需要一个稳定时间tSTAB。在开始ADC转换和14个时钟周期
后,EOC标志被设置,16位ADC数据寄存器包含转换的结果。

 模拟看门狗:

如果被ADC转换的模拟电压低于低阀值或高于高阀值,AWD模拟看门狗状态位被设置。阀值位
于ADC_HTR和ADC_LTR寄存器的最低12个有效位中。通过设置ADC_CR1寄存器的AWDIE位
以允许产生相应中断。
阀值独立于由ADC_CR2寄存器上的ALIGN位选择的数据对齐模式。比较是在对齐之前完成的
通过配置ADC_CR1寄存器,模拟看门狗可以作用于1个或多个通道。

扫描模式:

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

校准:

ADC有一个内置自校准模式。校准可大幅减小因内部电容器组的变化而造成的准精度误差。在
校准期间,在每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换
中每个电容器上产生的误差。
通过设置ADC_CR2寄存器的CAL位启动校准。一旦校准结束,CAL位被硬件复位,可以开始正
常转换。建议在上电时执行一次ADC校准。校准阶段结束后,校准码储存在ADC_DR中。
注意: 1建议在每次上电后执行一次校准。
2启动校准前,ADC必须处于关电状态(ADON=’0’)超过至少两个ADC时钟周期。

 

 数据对齐:

ADC_CR2寄存器中的ALIGN位选择转换后数据储存的对齐方式。数据可以左对齐或右对齐,如
注入组通道转换的数据值已经减去了在ADC_JOFRx寄存器中定义的偏移量,因此结果可以是一
个负值。SEXT位是扩展的符号值。
对于规则组通道,不需减去偏移值,因此只有12个位有效。

 可编程的通道采样时间:

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

外部触发转换:

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

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

 1.TIM8_TRGO事件只存在于大容量产品
2.对于规则通道,选中EXTI线路11或TIM8_TRGO作为外部触发事件,可以分别通过设置ADC1和ADC2的ADC1_ETRGREG_REMAP位和ADC2_ETRGREG_REMAP位实现。

 软件触发事件可以通过对寄存器ADC_CR2的SWSTART或JSWSTART位置’1’产生。
规则组的转换可以被注入触发打断。

DMA请求:

因为规则通道转换的值储存在一个仅有的数据寄存器中,所以当转换多个规则通道时需要使用
DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。
只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户
指定的目的地址。
注:
只有ADC1和ADC3拥有DMA功能。由ADC2转化的数据可以通过双ADC模式,利用ADC1的
DMA功能传输。

双ADC模式:

在双ADC模式里,根据ADC1_CR1寄存器中DUALMOD[2:0]位所选的模式,转换的启动可以是
ADC1主和ADC2从的交替触发或同步触发。
注意: 在双ADC模式里,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。但是,主和从ADC的外部触发必须同
时被激活

注意: 在双ADC模式里,为了在主数据寄存器上读取从转换数据,必须使能DMA位,即使不使用DMA传输规则通道数据。

1.外部触发信号作用于ADC2
2.在某些双ADC模式中,在完整的ADC1数据寄存器(ADC1_DR)中包含了ADC1和ADC2的规则转换数据。

0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0-0--0-0-0-0-0-0-0-0-

 

ADC_DeInit将外设 ADCx 的全部寄存器重设为缺省值
ADC_Init根据 ADC_InitStruct 中指定的参数初始化外设 ADCx 的寄存器
ADC_StructInit把 ADC_InitStruct 中的每一个参数按缺省值填入
ADC_Cmd使能或者失能指定的 ADC
ADC_DMACmd使能或者失能指定的 ADC 的 DMA 请求
ADC_ITConfig使能或者失能指定的 ADC 的中断
ADC_ResetCalibration重置指定的 ADC 的校准寄存器
ADC_GetResetCalibrationStatus获取 ADC 重置校准寄存器的状态
ADC_StartCalibration开始指定 ADC 的校准程序
ADC_GetCalibrationStatus获取指定 ADC 的校准状态
ADC_SoftwareStartConvCmd使能或者失能指定的 ADC 的软件转换启动功能
ADC_GetSoftwareStartConvStatus获取 ADC 软件转换启动状态
ADC_DiscModeChannelCountConfig对 ADC 规则组通道配置间断模式
ADC_DiscModeCmd使能或者失能指定的 ADC 规则组通道的间断模式
ADC_RegularChannelConfig设置指定 ADC 的规则组通道,设置它们的转化顺序和采样时间
ADC_ExternalTrigConvConfig使能或者失能 ADCx 的经外部触发启动转换功能
ADC_GetConversionValue返回最近一次 ADCx 规则组的转换结果
ADC_GetDuelModeConversionValue返回最近一次双 ADC 模式下的转换结果
ADC_AnalogWatchdongThresholdsConfig设置模拟看门狗的高/低阈值
ADC_AnalogWatchdongSingleChannelCon
fig
对单个 ADC 通道设置模拟看门狗
ADC_TampSensorVrefintCmd使能或者失能温度传感器和内部参考电压通道
ADC_GetFlagStatus检查制定 ADC 标志位置 1 与否
ADC_ClearFlag清除 ADCx 的待处理标志位
ADC_GetITStatus检查指定的 ADC 中断是否发生
ADC_ClearITPendingBit清除 ADCx 的中断待处理位

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/正经夜光杯/article/detail/805836
推荐阅读
相关标签
  

闽ICP备14008679号