STM32F系列ARMCortexM3核微控制器开发与应用第十一章Word文档格式.docx
- 文档编号:16227151
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:69
- 大小:657.44KB
STM32F系列ARMCortexM3核微控制器开发与应用第十一章Word文档格式.docx
《STM32F系列ARMCortexM3核微控制器开发与应用第十一章Word文档格式.docx》由会员分享,可在线阅读,更多相关《STM32F系列ARMCortexM3核微控制器开发与应用第十一章Word文档格式.docx(69页珍藏版)》请在冰豆网上搜索。
VREF+
输入,模拟参考正极
ADC使用的高端/正极参考电压,2.4V≤VREF+≤VDDA
VDDA
输入,模拟电源
等效于VDD的模拟电源且:
2.4V≤VDDA≤VDD(3.6V)
VREF-
输入,模拟参考负极
ADC使用的低端/负极参考电压,VREF-=VSSA
VSSA
输入,模拟电源地
等效于VSS的模拟电源地
ADC_IN[15:
0]
模拟输入信号
16个模拟输入通道
1.ADC开关控制
通过设置ADC_CR1寄存器的ADON位可给ADC上电。
当第一次设置ADON位时,它将ADC从断电状态下唤醒。
通过调用库函数ADC_Cmd(ADC1,ENABLE);
可以实现将ADON位置位。
ADC上电延迟一段时间后(tSTAB),再次设置ADON位时开始进行转换。
通过清除ADON位可以停止转换,并将ADC置于断电模式。
在这个模式中,ADC几乎不耗电(仅几个μA)。
2.ADC时钟
由时钟控制器提供的ADCCLK时钟与PCLK2(APB2时钟)同步。
RCC控制器为ADC时钟提供一个专用的可编程预分频器,详见复位和时钟控制(RCC)章节。
3.通道选择
有16个多路通道。
可以把转换分成两组:
规则的和注入的。
在任意多个通道上以任意顺序进行的一系列转换构成成组转换。
例如,可以如下顺序完成转换:
通道3、通道8、通道2、通道2、通道0、通道2、通道2、通道15。
规则组由多达16个转换组成。
规则通道和它们的转换顺序在ADC_SQRx寄存器中选择。
规则组中转换的总数写入ADC_SQR1寄存器的L[3:
0]位中。
注入组由多达4个转换组成。
注入通道和它们的转换顺序在ADC_JSQR寄存器中选择。
注入组里的转换总数目必须写入ADC_JSQR寄存器的L[1:
如果ADC_SQRx或ADC_JSQR寄存器在转换期间被更改,当前的转换被清除,一个新的启动脉冲将发送到ADC以转换新选择的组。
温度传感器/VREFINT内部通道。
温度传感器和通道ADCx_IN16相连接,内部参照电压VREFINT和ADCx_IN17相连接。
可以按注入或规则通道对这两个内部通道进行转换。
注意:
传感器和VREFINT只能出现在主ADC1中。
4.单次转换模式
单次转换模式下,ADC只执行一次转换。
该模式既可通过设置ADC_CR2寄存器的ADON位(只适用于规则通道)启动也可通过外部触发启动(适用于规则通道或注入通道),这时CONT位为0。
一旦选择通道的转换完成:
1》如果一个规则通道被转换:
转换数据被储存在16位ADC_DR寄存器中;
EOC(转换结束)标志被设置;
如果设置了EOCIE,则产生中断。
2》如果一个注入通道被转换:
转换数据被储存在16位的ADC_DRJ1寄存器中;
JEOC(注入转换结束)标志被设置然后ADC停止。
5.连续转换模式
在连续转换模式中,当前面ADC转换一结束马上就启动另一次转换。
此模式可通过外部触发启动或通过设置ADC_CR2寄存器上的ADON位启动,此时CONT位是1。
每个转换后:
转换数据被储存在16位的ADC_DR寄存器中;
EOC(转换结束)标志被设置;
2》如果一个注入通道被转换:
JEOC(注入转换结束)标志被设置;
如果设置了JEOCIE位,则产生中断。
6.时序图
如图11-1-1所示,ADC在开始精确转换前需要一个稳定时间tSTAB。
在开始ADC转换和14个时钟周期后,EOC标志被设置,16位ADC数据寄存器包含转换的结果。
图11-1-1ADC转换时序
7.扫描模式
此模式用来扫描一组模拟通道。
扫描模式可通过设置ADC_CR1寄存器的SCAN位来选择。
一旦这个位被设置,ADC扫描所有被ADC_SQRX寄存器(对规则通道)或ADC_JSQR(对注入通道)选中的所有通道。
在每个组的每个通道上执行单次转换。
在每个转换结束时,同一组的下一个通道被自动转换。
如果设置了CONT位,转换不会在选择组的最后一个通道上停止,而是再次从选择组的第一个通道继续转换。
如果设置了DMA位,在每次EOC后,DMA控制器把规则组通道的转换数据传输到SRAM中。
而注入通道转换的数据总是存储在ADC_JDRx寄存器中。
8.注入通道管理
1》触发注入
清除ADC_CR1寄存器的JAUTO位,并且设置SCAN位,即可使用触发注入功能。
利用外部触发或通过设置ADC_CR2寄存器的ADON位,启动一组规则通道的转换。
如果在规则通道转换期间产生一外部注入触发,当前转换被复位,注入通道序列被以单次扫描方式进行转换。
然后,恢复上次被中断的规则组通道转换。
如果在注入转换期间产生一规则事件,注入转换不会被中断,但是规则序列将在注入序列结束后被执行。
注:
当使用触发的注入转换时,必须保证触发事件的间隔长于注入序列。
例如:
序列长度为28个ADC时钟周期(即2个具有1.5个时钟间隔采样时间的转换),触发之间最小的间隔必须是29个ADC时钟周期。
2》自动注入
如果设置了JAUTO位,在规则组通道之后,注入组通道被自动转换。
这可以用来转换在ADC_SQRx和ADC_JSQR寄存器中设置的多至20个转换序列。
在此模式里,必须禁止注入通道的外部触发。
如果除JAUTO位外还设置了CONT位,规则通道至注入通道的转换序列被连续执行。
对于ADC时钟预分频系数为4至8时,当从规则转换切换到注入序列或从注入转换切换到规则序列时,会自动插入1个ADC时钟间隔;
当ADC时钟预分频系数为2时,则有2个ADC时钟间隔的延迟。
延时时序见图11-1-2。
不可能同时使用自动注入和间断模式。
图11-1-2注入转换延时时序
11.1.3校准
ADC有一个内置自校准模式。
校准可大幅减小因内部电容器组的变化而造成的准精度误差。
在校准期间,每个电容器上都会计算出一个误差修正码(数字值),这个码用于消除在随后的转换中每个电容器上产生的误差。
通过设置ADC_CR2寄存器的CAL位启动校准。
一旦校准结束,CAL位被硬件复位,可以开始正常转换。
建议在上电时执行一次ADC校准。
校准阶段结束后,校准码储存在ADC_DR中。
图11-1-3为ADC校准时序图。
1建议在每次上电后执行校准。
2启动校准前,ADC必须处于关电状态(ADON=’0’)超过至少两个ADC时钟周期。
图11-1-3校准时序图
11.1.4数据对齐
ADC_CR2寄存器中的ALIGN位选择转换后数据储存的对齐方式。
数据可以左对齐或右对齐,如图11-1-4和图11-1-5所示。
注入组通道转换的数据值已经减去了在ADC_JOFRx寄存器中定义的偏移量,因此结果可以是一个负值。
SEXT位是扩展的符号值。
对于规则组通道,不需减去偏移值,因此只有12个位有效。
1》数据右对齐
注入组
SEXT
D11
D10
D9
D8
D7
D6
D5
D4
D3
D2
D1
D0
规则组
图11-1-4
2》数据左对齐
图11-1-5
11.1.5可编程的通道采样时间
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
11.1.6外部触发转换
转换可以由外部事件触发(例如定时器捕获,EXTI线)。
表11-1-2、表11-1-3、表11-1-4、表11-1-5描叙了不同通道外部触发的EXTSEL位设定值。
如果设置了EXTTRIG控制位,则外部事件就能够触发转换。
EXTSEL[2:
0]和JEXTSEL2:
0]控制位允许应用程序选择8个可能的事件中的某一个可以触发规则和注入组的采样。
当外部触发信号被选为ADC规则或注入转换时,只有它的上升沿可以启动转换。
表11-1-2ADC1和ADC2用于规则通道的外部触发
触发源
类型
定时器1的CC1输出
片上定时器的内部信号
000
定时器1的CC2输出
001
定时器1的CC3输出
010
定时器2的CC2输出
011
定时器3的TRGO输出
100
定时器4的CC4输出
101
EXTI线11
外部管脚
110
SWSTART
软件控制位
111
TIM8_TRGO事件只存在于大容量产品
对于规则通道,选中EXTI线路11和TIM8_TRGO作为外部触发事件,可以通过设置ADC1和ADC2的ADC1_ETRGREG_REMAP位和ADC2_ETRGREG_REMAP位实现。
表11-1-3ADC1和ADC2用于注入通道的外部触发
JEXTSEL[2:
定时器1的TRGO输出
定时器1的CC4输出
定时器2的TRGO输出
定时器2的CC1输出
定时器3的CC4输出
定时器4的TRGO输出
EXTI线15
TIM8_CC4事件只存在于大容量产品
对于规则通道,选中EXTI线路15和TIM8_CC4作为外部触发事件,可以通过设置ADC1和ADC2的ADC1_ENTRGINJ_REMAP位和ADC2_ENTRGINJ_REMAP位实现。
表11-1-4ADC3用于规则通道的外部触发
定时器3的CC1输出
定时器2的CC3输出
定时器8的CC1输出
定时器8的TRGO输出
定时器5的CC1输出
定时器5的CC3输出
表11-1-5ADC3用于注入通道的外部触发
定时器4的CC3输出
定时器8的CC2输出
定时器8的CC4输出
定时器5的TRGO输出
定时器5的CC4输出
软件触发事件可以通过对寄存器ADC_CR2的SWSTART或JSWSTART位置’1’产生。
规则组的转换可以被注入触发打断。
11.1.7DMA请求
因为规则通道转换的值储存在一个唯一的数据寄存器中,所以当转换多个规则通道时需要使用DMA,这可以避免丢失已经存储在ADC_DR寄存器中的数据。
只有在规则通道的转换结束时才产生DMA请求,并将转换的数据从ADC_DR寄存器传输到用户指定的目的地址。
只有ADC1和ADC3拥有DMA功能。
由ADC2转化的数据可以通过双ADC模式,利用ADC1的DMA性能来实现。
11.1.8双ADC模式
在有2个或以上ADC的器件中,可以使用双ADC模式。
在双ADC模式里,根据ADC1_CR1寄存器中DUALMOD[2:
0]位所选的模式,转换的启动可以是ADC1主和ADC2从的交替触发或同时触发。
在双ADC模式里,当转换配置成由外部事件触发时,用户必须将其设置成仅触发主ADC,从ADC设置成软件触发,这样可以防止意外的触发从转换。
但是,主和从ADC的外部触发必须同时被激活。
共有6种可能的模式:
1》同时注入模式
2》同时规则模式
3》快速交替模式
4》慢速交替模式
5》交替触发模式
6》独立模式
还有可以用下列方式组合使用上面的模式:
1》同时注入模式+同时规则模式
2》同时规则模式+交替触发模式
3》同时注入模式+交替模式
在双ADC模式里,为了从主数据寄存器上读取从转换数据,DMA位必须被使能,即使并不用它来传输规则通道数据。
11.1.9温度传感器
温度传感器可以用来测量器件周围的温度(TA)。
温度传感器在内部和ADCx_IN16输入通道相连接,此通道把传感器输出的电压转换成数字值。
温度传感器模拟输入推荐采样时间是17.1μs。
图11-1-6是温度传感器的方框图。
当没有被使用时,传感器可以置于关电模式。
必须设置TSVREFE位激活内部通道:
ADCx_IN16(温度传感器)和ADCx_IN17(VREFINT)的转换。
1.主要特征
支持的温度范围:
-40到125度
精确度:
+/-1.5°
C
温度传感器和VREFINT通道框图
图11–1-6温度传感器框架图
2.读温度
为使用传感器:
1》选择ADCx_IN16输入通道
2》选择采样时间大于2.2μs
3》设置ADC控制寄存器2(ADC_CR2)的TSVREFE位,以唤醒关电模式下的温度传感器
4》通过设置ADON位启动ADC转换(或用外部触发)
5》读ADC数据寄存器上的VSENSE数据结果
6》利用下列公式得出温度
温度(°
C)={(V25-VSENSE)/Avg_Slope}+25
这里:
V25=VSENSE在25°
C时的数值
Avg_Slope=温度与VSENSE曲线的平均斜率(单位为mV/°
C或μV/°
C)
参考电气特性章节中V25和Avg_Slope的实际值。
传感器从关电模式唤醒后到可以输出正确水平的VSENSE前,有一个建立时间。
ADC在上电后也有一个建立时间,为了缩短延时,应该同时设置ADON和TSVREFE位。
11.1.10ADC中断
规则和注入组转换结束时能产生中断,当模拟看门狗状态位被设置时也能产生中断。
它们都有独立的中断使能位。
表11-1-6为ADC中断表
ADC1和ADC2的中断映射在同一个中断向量上,而ADC3的中断有自己的中断向量。
ADC_SR寄存器中有2个其他标志,但是它们没有相关联的中断:
JSTRT(注入组通道转换的启动)
STRT(规则组通道转换的启动)
表11-1-6ADC中断
中断事件
事件标志
使能控制位
规则组转换结束
EOC
EOCIE
注入组转换结束
JEOC
JEOCIE
设置模拟看门狗状态位
AWD
AWDIE
11.2实现ADC最佳精度
11.2.1ADC模块自身相关的误差
在STM32F10xxx的数据手册中,给出了不同类型的ADC精度误差数值。
通常,精度误差是以LSB为单位表示。
电压的分辨率与参考电压相关。
电压误差是按照LSB的倍数计算:
1LSB=VREF+/212或VDDA/212。
1.偏移误差
这是定义为从第一次实际的转换至第一次理想的转换之间的偏差。
当ADC模块的数字输出从0变为1的时刻,发生了第一次转换。
理想情况下,当模拟输入信号介于0.5LSB至1.5LSB表达的范围之内时,数字输出应该为1;
即理想情况下,第一次转换应该发生在输入信号为0.5LSB时。
偏移误差以EO标注。
例子说明
对于STM32F10xxx的ADC模块,最小的可检测到的电压增量变化,按LSB表示为:
1LSB=VREF+/4096(或对于没有VREF+管脚的产品:
VDDA/4096)
如果VREF+=3.3V,理想情况下输入402.8μV(0.5LSB=0.5x805.6μV)时,产生数字输出1。
然而实际上,这时ADC模块的读数可能仍然为0。
如果在输入电压达到550μV时,才能得到数字输出1,则:
偏移误差EO=实际的转换-理想的转换
EO=550μV-402.8μV=141.2μV
EO=141.2μV/805.6μV=0.17LSB
当输入的模拟电压大于0.5LSB产生第一次的转换,则偏移误差是正值。
图11-2-1显示了正的偏移误差:
图11-2-1正的偏移误差
当输入的模拟电压小于0.5LSB产生第一次的转换,则偏移误差是负值。
下图显示了负的偏移误差。
如果输入的模拟电压VAIN=VSSA并且ADC产生了一个非0的数字输出,则偏移误差是负值,即一个负电压产生了第一次的转换。
2.增益误差
增益误差定义为最后一次实际转换与最后一次理想转换之间的偏差。
增益误差以EG标注。
最后一次实际转换是从FFEh至FFFh的变换。
理想情况下,当模拟输入电压等于VREF+–0.5LSB时产生从FFEh至FFFh的变换,因此对于VREF+=3.3V的情况,最后一次理想转换应该在3.299597V。
如果ADC数字输出为FFFh时,VAIN<
VREF+–0.5LSB,则增益误差为负值。
例子说明
增益误差EG=最后一次实际转换–最后一次理想转换
如果VREF+=3.3V并且VAIN=3.298435V时产生了从FFEh至FFFh的变换,则:
EG=3.298435V–3.299597V
EG=–1162μV
EG=(–1162μV/805.6μV)LSB=–1.44LSB
如果在VAIN等于VREF+时不能得到满量程的读数(FFFh)时,增益误差是正值,即需要一个大于VREF+的电压才能产生最后一次变换。
3.微分线性误差
微分线性误差(DLE)定义为实际步长与理想步长之间的最大差别。
这里的“理想”不是表示理想的转换曲线,而是表示ADC的分辨率。
ED=实际转换步长–1LSB
理想情况下,当模拟输入电压改变1LSB应该在数字输出上同时产生一次改变。
如果数字输出上的改变需要输入电压大于1LSB的改变,则ADC具有微分线性误差。
因此,DLE对应于需要改变一个数字输出所需的最大电压增量。
一个给定的数字输出,应该对应到一个模拟输入的范围。
理想情况下,步长应为1LSB。
假定在模拟输入电压在1.9998V至2.0014V,得到了相同的数字输出,则步长宽度是2.0014V–1.9998V=1.6mV,此时ED是高端(2.0014V)与低端(1.9998V)的差减去1LSB对应的电压。
如果VREF+=3.3V,模拟输入1.9998V(9B1h)可以产生的输出结果介于9B0h和9B2h之间;
同样,模拟输入2.0014V(9B3h)可以产生的输出结果介于9B2h和9B4h之间。
这样对应9B2h的综合电压变化范围是:
9B3h–9B1h,即:
2.0014V–1.9998V=1.6mV(1660μV)
ED=1660μV–805.6μV
ED=854.4μV
ED=(854.4μV/805.6μV)LSB
ED=1.06LSB
这里我们假定高于2.0014V的电压都不能得到9B2h的数字输出结果。
当步长宽度小于1LSB,误差ED是负值。
4.积分线性误差
积分线性误差(ILE)是所有实际转换点与终点连线之间的最大差别。
ILE以EL标注。
终点连线可以理解为在A/D转换曲线上,第一个实际转换与最后一个实际转换之间的连线;
EL是每一个转换与这条线之间的偏差。
因此,终点连线对应于实际转换曲线,而与理想转换曲线无关。
ILE也被称为积分非线性误差(INL),ILE是DLE在所有范围内的积分。
如果第一次转换(从0至1)发生在550μV,而最后一次转换(从FFEh至FFFh)发生在3.298435V(增益误差),则在转换曲线上,实际数字输出1h至FFFh之间的连线就是终点连线。
5.总未调整误差
总未调整误差(TUE)定义为实际转换曲线和理想转换曲线之间的最大偏差。
这个参数表示所有可能发
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- STM32F 系列 ARMCortexM3 控制器 开发 应用 第十一