stm32,100脚以下的,ADCstm32f0 adc 参考电压压怎么办噢

 上传我的文档
 下载
 收藏
该文档贡献者很忙,什么也没留下。
 下载此文档
STM32如何得到最佳ADC精度
下载积分:20
内容提示:STM32如何得到最佳ADC精度
文档格式:PDF|
浏览次数:589|
上传日期: 11:50:52|
文档星级:
全文阅读已结束,如果下载本文需要使用
 20 积分
下载此文档
该用户还上传了这些文档
STM32如何得到最佳ADC精度
官方公共微信请问stm32ADC检测时,100管脚一下芯片没有Vref,那参考电压是不是就取3.3v? - 【stm32/stm8】 - 电子工程世界-论坛
后使用快捷导航没有帐号?
请完成以下验证码
查看: 554|回复: 3
请问stm32ADC检测时,100管脚一下芯片没有Vref,那参考电压是不是就取3.3v?
在线时间29 小时
TA的帖子TA的资源
一粒金砂(中级), 积分 48, 距离下一级还需 152 积分
一粒金砂(中级), 积分 48, 距离下一级还需 152 积分
如果有VREV引脚的是不是还要接到2.56v上?那不是还要专门搭一个2.56v降压电路吗?还是stm32自己本身可以有2.56v。
&&&&&&&&&&
在线时间782 小时
威望1806分
芯币4755枚
E金币414枚
TA的帖子TA的资源
你得先去看看datasheet里面的相关说明,有的会有内部基准的,如果是2.56V建议去查一下基准芯片,印像中没有这个电压基准,所以一般不会用这个作为Vref ,如果要实在要用就需要做一个分压电路了,如果没有Vref一般的情况下就是使用电源电压!
在线时间348 小时
芯币4362枚
E金币100枚
TA的帖子TA的资源
有verf脚,直连了vcc
在线时间1338 小时
威望5867分
芯币3276枚
E金币102枚
TA的帖子TA的资源
五彩晶圆(中级), 积分 5867, 距离下一级还需 133 积分
五彩晶圆(中级), 积分 5867, 距离下一级还需 133 积分
这个你要根据具体的芯片型号,去st的官网下载其datasheet,我记得在datasheet里有专门的说明的。
论坛测评队员
EEWORLD 官方微信
EE福利 唾手可得
Powered bySTM32F103ADC的工作模式和触发方式的探索与理解,结合自我..... - STM32 - 意法半导体STM32/STM8技术社区
后使用快捷导航没有帐号?
查看: 14738|回复: 80
STM32F103ADC的工作模式和触发方式的探索与理解,结合自我.....
在线时间135 小时
ST金币1307
主题帖子好友
金牌会员, 积分 1841, 距离下一级还需 3159 积分
金牌会员, 积分 1841, 距离下一级还需 3159 积分
ADC的工作模式和触发方式的探索与理解,结合自我探索分享。
前段时间做开发用到了STM32规则通道的,因为需要定时采集,所以使用了外部触发方式。初次接触到STM32的ADC感觉还可以驾驭,但随着开发的推进,发现自己对于STM32ADC的不知之处还有好多,现将开发过程中的心得与大家分享。
1、中不足100脚的芯片ADC参考电压在芯片内部接到Vadd管脚上,这个是无论如何都不能通过设置寄存器更改的。那么STM32内部有没有参考电压呢,答案是否定的,参考电压是没有的,参照倒是有一个1.2V的。说实话,一开始我也以为这个参照电压就是参考电压,但是随着学习的跟进,发现这个参照电压的作用仅仅是可以”参照“而已,前面也讲了参考电压Vref已经接到Vadd上了,那么这个参照电压和Vref不是一回事了。只是用于修正你所读到的ADC值而已。举个例子吧:假设Vref=Vadd=3.3,在AD采集的时候要一次读取ADC通道的值和通道17即参照电压的值,假设此时读到的AD值为2000,读到通道17的值为1500。此时如果参照电压是准的,Vadd是波动的,那么Vref实际的值应该是/V,那么AD值2000对应的电压应该为.27V=1.597V。这样大家就可以理解参照电压的作用了,如果大家还不满足内部参照电压的精度的话,可以再开辟一个AD通道,外接外部基准电压芯片。AD采集之后的计算方式与内部参照电压是相同的。
2、STM32F103ADC通道转换模式的问题:
STM32的ADC有单次转换和连续转换2种模式,这两种模式又可以选择是否结合扫描模式。
CONT=0,SCAN=0& & 单次转换模式(Single conversion mode)单次扫描1通道
CONT=1,SCAN=0& & 连续转换模式(Continuous conversion mode) 连续扫描1通道
CONT=0,SCAN=1& & 扫描转换模式(Scan mode):所有ADC_SQR序列通道转换一次后停止。(单次扫描组)
CONT=1,SCAN=1& & 扫描转换模式(Scan mode):所有ADC_SQR序列通道转换一次后,再从第一个通道循环。连续扫描一组
需要注意的是,如果你的转换序列当中有超过一个通道需要转换的话,那么必须要开启扫描模式,否则的话,始终只转换第一通道。
用ADC1,Regular通道的顺序为Ch0,Ch1,Ch2,Ch3,启动Scan模式
在单次转换模式下:
启动ADC1,则
1. 开始转换Ch0
2. 转换完成后自动开始转换Ch1
3. 转换完成后自动开始转换Ch2
4. 转换完成后自动开始转换Ch3
5. 转换完成后停止,等待ADC的下一次启动。下一次ADC启动从第一步开始
在连续转换模式下:
启动ADC1,则
1. 开始转换Ch0
2. 转换完成后自动开始转换Ch1
3. 转换完成后自动开始转换Ch2
4. 转换完成后自动开始转换Ch3
5. 转换完成后回到第一步
如果没启动Sacn模式则上述过程中没有2、3、4这三个步骤
上述前提是Discontinuous模式没有启用。
关于这个扫描模式,着实让我纠结了好久,一开始,根据中文手册上的来。咱玩包含两个通道的规则通道采集,完了还不带DMA的。
1.jpg (201.54 KB, 下载次数: 15)
手册中对规则通道转换的描述
22:12 上传
,手册说了每一个规则通道转换完毕都置位EOC,那就是每转换一个通道都可以进中断喽,那这样的话,咱还用啥DMA啊,直接中断吧,好吧。就这么办,程序写好了,跟踪调试发现,中断虽然进了,但是只有第二组数据。为什么不行呢,手册中讲的好好的,怎么就不行了呢,带着这个疑问,楼主开始了探索之旅
首先继续不用DMA,在主函数中采用以下语句读取ADC数据。
& & while (1)
& && && && && & if((ADC1-&SR)&0x02)//读取判断EOC位
& && && && && & {
& && && && && && && && &adcx = ADC_GetConversionValue(ADC1);& && &&&//返回最近一次ADC1规则组的转换结果
& && && && && && && && &Filter_Table[ Filter_Tab_Count++ ] =
& && && && && & }
还是只有最后一组数据。好吧,那这样好了:
& & while (1)
& && && && && & adcx = ADC_GetConversionValue(ADC1);& && &&&//返回最近一次ADC1规则组的转换结果
& && && && && & Filter_Table[ Filter_Tab_Count++ ] =
终于凑效了,可以在跟踪的时候,在不同时间停下的时候读到第一组和第二组数据了,这是为什么呢,这说明第一通道也是在转换的,只是在转换完毕的时候没有置位EOC罢了,当然也就不能触发ADC中断了。
看来又被手册忽悠了,多个通道用中断的方式是不行的。PS:手册中的一个规则通道应该指的是一个规则通道组。
好吧,那启用DMA好了,那么问题来了,手册扫描模式中讲到
2.jpg (401.87 KB, 下载次数: 1)
手册中对规则通道扫描模式的描述
22:12 上传
,EOC置位后DMA才来搬运数据,那么岂不是要丢好多数据!当然中文手册也讲了,以英文手册为准,既然有疑问,那咱翻翻英文手册好了
3.jpg (498.76 KB, 下载次数: 4)
22:27 上传
英文手册中讲到,在ADC_DR寄存器每次更新后,DMA才会搬运数据。总结:ADC在采用规则通道组采集的时候必须启用扫描模式,并且启用DMA传输支持。
好了,终于写的差不多了,由于个人能力有限,有表达不清的地方还请斧正,我一定更改,这么晚了,洗洗睡去了。
在线时间4 小时
主题帖子好友
中级会员, 积分 244, 距离下一级还需 256 积分
中级会员, 积分 244, 距离下一级还需 256 积分
u16 TestAdc(void)
while(ADC_GetFlagStatus(ADC1, ADC_FLAG_EOC)==RESET); //检查制定ADC标志位置1与否 ADC_FLAG_EOC 转换结束标志位
adc=ADC_GetConversionValue(ADC1);
//返回最近一次ADCx规则组的转换结果
}查询方式获取AD值
在线时间135 小时
ST金币1307
主题帖子好友
金牌会员, 积分 1841, 距离下一级还需 3159 积分
金牌会员, 积分 1841, 距离下一级还需 3159 积分
STM32的定时器功能石灰厂强大的,当然学习起来也是很难的,当时跳ADC的时候也走了很多的弯路,而官方这方面 ...
STM32的定时器理解起来确实很费脑细胞
在线时间135 小时
ST金币1307
主题帖子好友
金牌会员, 积分 1841, 距离下一级还需 3159 积分
金牌会员, 积分 1841, 距离下一级还需 3159 积分
哈哈,狗曲折的,中文版的手册太旧太狗血了。纸上得来终觉浅,绝知此事要躬行。 ...
似的,做技术苦逼没玩没了
在线时间135 小时
ST金币1307
主题帖子好友
金牌会员, 积分 1841, 距离下一级还需 3159 积分
金牌会员, 积分 1841, 距离下一级还需 3159 积分
自己顶上去,睡觉了。
在线时间7 小时
主题帖子好友
中级会员, 积分 404, 距离下一级还需 96 积分
中级会员, 积分 404, 距离下一级还需 96 积分
学习了,研究下。
在线时间11 小时
主题帖子好友
中级会员, 积分 355, 距离下一级还需 145 积分
中级会员, 积分 355, 距离下一级还需 145 积分
最近正在做ADC采集,学习了。
在线时间1 小时
主题帖子好友
新手上路, 积分 16, 距离下一级还需 34 积分
新手上路, 积分 16, 距离下一级还需 34 积分
中文手册仅供参考,请以英文手册为准,说实话我也上过当
在线时间135 小时
ST金币1307
主题帖子好友
金牌会员, 积分 1841, 距离下一级还需 3159 积分
金牌会员, 积分 1841, 距离下一级还需 3159 积分
(2.78 KB, 下载次数: 159)
09:36 上传
点击文件名下载附件
ADC初始化设置
在线时间52 小时
主题帖子好友
高级会员, 积分 571, 距离下一级还需 429 积分
高级会员, 积分 571, 距离下一级还需 429 积分
分辨率实际效果如何谢谢
在线时间135 小时
ST金币1307
主题帖子好友
金牌会员, 积分 1841, 距离下一级还需 3159 积分
金牌会员, 积分 1841, 距离下一级还需 3159 积分
分辨率实际效果如何谢谢
还没有研究过分辨率
在线时间78 小时
主题帖子好友
金牌会员, 积分 1042, 距离下一级还需 3958 积分
金牌会员, 积分 1042, 距离下一级还需 3958 积分
103有十二位的ADC 其分辨率是不是1/4096?
在线时间2 小时
主题帖子好友
中级会员, 积分 257, 距离下一级还需 243 积分
中级会员, 积分 257, 距离下一级还需 243 积分
应该是4095分之一,分辨率和采集速度设置什么的没什么关系
站长推荐 /1
Tel: 3-8064
备案号: 苏ICP备号-2
|||意法半导体STM32/STM8技术社区
Powered by2.1如何得到最佳的ADC精度减小与ADC模块相;TUE不是EO、EG、EL、ED之和,这个参数表;因为ILE是DLE的积分,它可以被看成是最大误差;ILE和DLE依赖于ADC模块的设计,校准它们是;偏移和增益误差可以简单地使用STM32F10xx;在数据手册中给出的最大误差数值,是在实验室环境下;2.2;2.2.1如何减小与外部环境相关的ADC误差减小;电
2.1 如何得到最佳的ADC精度 减小与ADC模块相关的ADC误差的建议
TUE不是EO、EG、EL、ED之和,这个参数表示理想数字输出与实际数字输出之间的最大偏差,它可以是一个或多个误差的综合结果。
因为ILE是DLE的积分,它可以被看成是最大误差的标示。不要把DLE和ILE相加,试图得到每个数字步长的最大误差。
ILE和DLE依赖于ADC模块的设计,校准它们是困难的。进行多次转换再做平均可以减小它们的影响。
偏移和增益误差可以简单地使用STM32F10xxx ADC模块的自校准功能补偿。
在数据手册中给出的最大误差数值,是在实验室环境下,对全部的电压范围,测量出的最差的误差数值。
2.2.1 如何减小与外部环境相关的ADC误差 减小电源噪声
从噪声角度讲,线性稳压器具有较好的输出。市电经降压、整流和滤波,再经过线性稳压器。强烈建议在整流输出端连接滤波电容。请参考线性稳压器的数据手册。
如果使用开关型电源,建议使用一个线性稳压器为模拟部分供电。
建议在电源线和地线之间连接具有好的高频特性的电容,即在靠近电源一端应放置一个0.1μF和一个1至10μF的电容。
电容允许交流信号通过,小容量的电容过滤高频率的噪声,大容量的电容过滤低频率的噪声。通常瓷介电容具有较小的容值(1pF至0.1μF),和较小的耐压(16V至50V)。建议在靠近主电源(VDD和VSS)和模拟电源(VDDA和VSSA)管脚的地方,放置这样的瓷介电容。这样的电容可以过滤由PCB线路引出的噪声。小容值的电容可以响应电流的快速变化,并快速地放电适应快速的电流变化。
钽电容也可以与瓷介电容一道使用。可以使用大容值的电容(10μF至100μF)过滤低频率的噪声,通常可以使用电解电容。建议把它们放在靠近电源端。
可以使用在电源线上串联铁氧体电感滤除高频噪声。因为串联的电阻非常小,除非电流非常大,这个方法可以产生非常小的(可以忽略的)直流损失。在高频时,它的电阻很大。
STM32F10xxx端
多数的STM32F10xxx微控制器的VDD和VSS管脚都是互相靠近的,VREF+和VSSA也是靠近的。因此可以在非常靠近微控制器的地方放置一个电容器。每一对VDD和VSS管脚都需要使用单独的去藕电容器。
VDDA管脚必须连接到2个外部的去藕电容器(10nF瓷介电容+1μF的钽电容或瓷介电容)。参见图14和图15的去藕电路例子。
对于100脚和144脚封装的产品,可以在VREF+上连接一个外部的ADC的参考输入电压,从而改善对输入低电压的精度(参见2.2.4节)。在VREF+上的电压范围是2.4V至VDDA。如果在VREF+上单独提供参考电压,必须在这个管脚上连接2个电容器,10nF和1μF,而且VREF+不能超出2.4V至VDDA的范围。
图14 100脚和144脚封装的电源和参考电压去藕电路
图15 36脚、48脚和64脚封装的电源和参考电压去藕电路
2.2.2 电源稳压的建议
供电系统应该有好的线性和负载调节特性,因为ADC模块使用VREF+或VDDA作为模拟参考,数字数值的输出是这个参考电压与模拟输入信号的比值,VREF+必须在各种负载情况下保持稳定。
任何时候,不管因为开启了一部分的电路导致负载增加,电流的增加不应引起电压的下降。如果在宽的电流范围内能够保持电压的稳定,这样的电源具有好的负载调节特性。
例如:LD电压调压器,在VIN从2.8V至16.5V的范围内(Iload = 10mA)的典型线性调节是0.035%,在Iload从0至1.5A的范围内的负载调节是0.2%(详见LD1086的数据手册)。
线性调节的数值越低,稳压性能越好。同样,负载调节数值越低,稳压性能越好,输出的电压越稳定。
还可以使用诸如LM236作为VREF+的参考电压,这是一个2.5V的电压参考二极管(详见LM236数据手册)。
2.2.3 消除模拟输入信号的噪声
平均值方法
平均值法是一个简单的技术,通过对一个模拟输入信号的多次采样和软件计算取平均值实现。这个技术有利于消除那些不频繁变化的模拟输入信号上的噪声。
平均值法需要在一个相同的模拟输入电压上进行多次采样,保证模拟输入信号在转换完成之前,保持在相同的电压,否则模拟输入的变化将会出现在结果数值中,从而引入新的误差。
增加一个外部滤波器
使用一个外部滤波器可以消除高频噪声,没有必要使用昂贵的滤波器去处理超出需要频率之外的频率分量。因此,一个相对简单的具有阻断频率fC,刚好超过需要频率的低通滤波器,可以有效地限制噪声和假波。采样速率超过最高的需要频率即可,通常为2~5倍于fC。
注: 组成外部滤波器的R和C数值,应该满足2.2.5节和2.2.6节的要求。
2.2.4 将最大的信号幅度与ADC动态范围匹配
这个方法可以通过合理地选择参考电压或使用一个前级放大器,使用ADC的全量程输出,得到最大可能分辨率,从而提高精度。
选择参考电压(仅适合于100脚和144脚封装的产品)
在要测量信号希望的范围内选择参考电压。如果要测量的信号有偏移,则参考电压也应该有相应的偏移。如果要测量的信号有由一个最大的幅度,则参考电压也应该有相应的最大幅值。这个参考电压与要测量信号的幅值匹配,就能够使用ADC模块的全范围输出,得到最大的分辨率。
在100脚和144脚封装的STM32F10xxx产品中,ADC参考电压由外部的VREF+提供,VREF-管脚必须与地线相连。VREF+管脚为上述匹配方法提供了可能。
例如:如果要测量的信号在0V至2.5V之间变化,建议选用VREF+ = 2.5V;可以选用LM235作为参考电压(详见LM235的数据手册),下图示范了这些条件。
注: VREF+上的电压必须处于2.4V和VDDA之间。
图16 选择参考电压
使用前置放大器
如果要测量的信号太小(与ADC的测量范围相比),则最好使用一个外部的前级放大器,这个方法可以用于所有封装的STM32F10xxx产品,特别是那些没有VREF+管脚的封装。
例如:如果要测量的信号变化范围是0V至1V之间,而VDDA是3V,这个信号可以被放大,使它的峰-峰幅度与VDDA的数值相同,增益为3。图17示范了这个例子。
这个放大器可以把输入信号的范围转换至ADC模块的范围,它同样可以在输入信号与ADC输入之间引入偏移量。特别要注意设计这个放大器时不要引入额外的误差(如额外的偏移,放大镜增益的稳定性、线性度、频率响应等)。
图17 前置放大
2.2.5 模拟信号源的阻抗计算
假定最大允许的误差是1/4LSB,下面计算一下最大允许信号源的阻抗。
VC是内部CADC电容器上的电压(参见图9)。
这样得到:误差 = VAIN C VC = ? LSB
图18 最差情况下的误差:VAIN = VREF+
令tS是采样时间。
tS = TS / fADC,其中TS是按周期计算的采样时间 (1)
对于给定的tS,对应VAIN = VREF+的误差大于对应VAIN & VREF+时的误差,这是因为把CADC从0V充电至VAIN,在VAIN = VREF+时需要比在VAIN & VREF+时需要更多的时间(参见图18)。因此VAIN = VREF+时是计算最大允许信号源阻抗时需要考虑的最坏情况。
● Rmax = (RAIN + RADC)max
● N是ADC的分辨率(对于STM32而言,N = 12)
这样得到:
综合表达式(1)、(2)和(3),我们得到:
因此: (2)
对于TS = 7.5,fADC = 14MHz,CADC = 12pF和RADCmax = 1k?,在要求误差为1/4 LSB时的最大
允许信号源阻抗为:
即:RAINmax = 3.6k?
注: 使用一个跟随放大器可以减小信号源的阻抗效应,这是因为放大器具有高的输入阻抗和非常低
的输出阻抗,它把RAIN与RADC隔离开来。但是,放大器引入的偏移误差必须加以考虑。
2.2.6 信号源频率条件与源电容和分布电容的关系
当外部电路的电容没有被模拟信号源完全充电的情况下,模拟输入信号的电压不会与模拟输入的电压VAIN相同。如果模拟输入信号产生变化,它的变化频率(FAIN)的周期至少应该满足:
10 x RAIN x (CAIN + CP)
TAIN = 模拟信号的周期 = 1/FAIN
因为:TAIN ≥ 10 x RAIN x (CAIN + CP)
因此:FAIN ≤ 1 / [10 x RAIN x (CAIN + CP)]
对于RAIN = 25k?,CAIN = 7pF,CP =
FAINmax = 1 / [10 x 25x103 x (7 + 3)x10-12]
即信号源的最高频率FAINmax = 400kHz。
对于上述给出的信号源特性(容抗与阻抗),它的频率不能超过400kHz,否则ADC的转换结果将是不准确的。
图19 建议的RAIN与CAIN值与信号源频率FAIN的关系
2.2.7 温度效应补偿
一个方法是根据不同的温度范围,测量出完整的偏移和增益变化,再在存储器中建立一个对照表。这样的方式需要额外的费用和时间。
另一个方式是当温度达到某个数值时,使用内部的温度传感器和ADC看门狗功能,重新校准。
2.2.8 注入电流最小化
检查你的设计,确认是否有任何数字或模拟输入可能低于VSS或VSSA,如果存在这种情况,则从这个管脚会有负的注入电流进入。如果一个数字输入靠近要进行转换的模拟输入,则注入电流会对精度产生较大影响。
应该避免在任何标准的模拟输入管脚上引入负的注入电流,这会极大地减低在其它管脚上正在进行转换的精度。
建议在可能产生负的注入电流的I/O管脚于VSSA之间连接一个肖特基二极管。
ADC的精度不会受到正的注入电流的影响,只要它是在规定的范围内,详见相应的STM32F10xxx数据手册中,I/O端口特性部分关于IINJ(PIN)和ΣIINJ(PIN)的参数。
2.2.9 减小I/O脚串扰
在模拟信号线的周围布置地线产生屏蔽可以有效地减小串扰干扰噪声。下图显示了在信号线之间安排地线的情况。
三亿文库包含各类专业文献、各类资格考试、应用写作文书、高等教育、文学作品欣赏、幼儿教育、小学教育、STM32如何得到最佳ADC精度80等内容。 
 STM32F10xxx 中如何得到最佳的 ADC 精度 在 STM32F10xxx 中如何得到最佳的 ADC 精度 英文文档 在 STM32F10xxx 中如何得到最佳的 ADC 精度 中文文档 22.AN...  (A)12 位精度 (B)单一转换模式 (C)按通道配置...( X ) 44.STM32 ADC 只可以在单一模式下工作。...到输入数据寄存器, 对 IDR 的 读访问可得到 I/O...  9.28.STM32 系列 ARM Cortex-M3 芯片支 持三种...输 RTC 文件,为 19.ADC 转换过程正确的是( A ...(A)12 位精度 模式 (C)按通道配置采样时间(D)...  STM32 ADC 描述正确的是( B )(A)STM32 ADC 是...(A)12 位精度 (B)单一转换模式 (C)按通道配置...输入数据寄存器 的读访 对 问可得到 I/O 状态。...  STM32F103ADC的工作模式和触发方式的探索与理解_军事/政治_人文社科_专业资料。...这样大家就可以理解参照电压 的作用了,如果大家还不满足内部参照电压的精度的话,...  精度高,处理成本低以及对环境没有特殊要求等优点。 ...得插值滤波器,其频响即为为在 2π以内作 M 倍...ADC MCU STM32 FFT变换 TLV5636 DAC 主控处理器 ...  STM32 的 ADC: STM32 的 ADC 是一种逐次逼近型模拟数字转换器,精度为 12 ...当然还有我们用户获取 ADC 转换结果的数据寄存器。 规则组和注入组: STM32 的 ...  这个快速采集,高性能的ADC 就是一个很 好的体现,12 位精度,最快1uS 的转换速度,通常具备2 个以上独 立的ADC 控制器,这意味着,STM32 可以同时对多个模拟量...  STM32ADC 通道: 第16章 模数转换器模块 STM32 ...然而这并不意味着延时的精度 是 1 个时钟节拍,...消息队列 等待一个事件 无等待的获得一个事件 发送...

我要回帖

更多关于 stm32f0 adc 参考电压 的文章

 

随机推荐