很多人都提到了STM32F407的ADC似乎精度不够。
原子的探索者开发教程里ADC一节最后也用红字提出了STM32F407的ADC精度不怎么好。
实际上STM32F407的ADC精准度真的不够吗?如果其精准度不够,那么其系统误差怎么测试计算?
实际上经过我一系列测试后发现:STM32F407的ADC足够精准,通过设置合理的参数之后,其ADC误差完全可以控制在±0.1%之内
资料上的都是推荐,事实上很多芯片的设计都是有超额余量的,很多人都会超额的利用这些资源,并且很好的工作。
若所看的程序频率是超过14M,也没有错,可能作者的目的在于快速而宁愿损失一些精度,ADC的分辨率是12位,若是超过这个频率也是工作的,只不过采样到的精度可能仅到10位,若这个已到 作者的要求,也无错误之说了。
大概误差不过1LSB
stm32自带的ADC是12位的AD,精度应该在很高的。
影响ADC精度比较明显的几个因素。
1、供电电源电压稳定;
2、基准选择,使用内部参照电压精度好一些;
3、ST-Link调试会对精度有一定影响。
你所提供的参数不足或者问题不准确。STM32输出时钟抖动除了和计数器抖动噪声有关外,和你的参考时钟也有关系,如果你的参考时钟准确度不高,你的输出时钟自然也不会太好。若你使用的是恒温晶振,初始在一般在0.1个ppm,加上器件本身门电路的抖动噪声,STM32输出的时钟精度一定是大于此值。
你的题目上说的是时间,时间的精度和时钟的精度其实概念上有点区别,但是没有明确的定义。时间的精度 比如年月日时分秒,此时一般对秒进行描述,一般说的是时间的同步精度,及同步误差为多少ns或者多少ps,时钟的精度我们可以认为是时钟频率的精度,时钟频率的特性有准确度、稳定度等,其中你说的精度应该对应的是时钟的准确度。
我觉得那个不稳定也很正常把。。。我上次试了下,好像波动也就零点几度啊。。。而且那个芯片内部的温度本来就不会那么的恒定!!同求解释
STM32F1的单片机内部自带12位的ADC处理器,如果12位已经满足了采样要求,那么不用另外接入ADC芯片(这类芯片一般很贵),可以外接的ADC芯片比如ads1256(24位)、AD7689(16位)。
ADC的输入时钟不得超过14MHz,它是由PCLK2经分频产生。转换时最快为1us,当ADC的输入时钟超过14MHz 时其会损失一些精度。也就是说,可以牺牲采样速度来获取采样精度,也可以牺牲采样精度来获取采样速度,当然精度要满足任务要求。
时钟分频:ADC 时钟 ADC 接在APB2 上,APB2的时钟为72MHz,通过分频的方式给ADC 提供时钟,预分频主要有2、4、6、8 四种分频方式。比如,如果打算选择分频6,那么就是ADC采样时钟频率就是72MHz/6=12MHz
转换时间:转换时间TCONV = 采样时间+ 12.5 个周期(12.5个周期采集12位AD时间是固定的周期)
例如:当ADCCLK=14MHz和1.5周期的采样时间
TCONV = 1.5 + 12.5 = 14
周期=1μs
例如:当ADCCLK=14MHz 和1.5 周期的采样时间 TCONV = 1.5 + 12.5 = 14 周期 = 1μs
1)一般情况,如果是软件启动,那么转换时间即是采样周期。
2)若通过定时器进行触发启动ADC,则还需要加上定时器的相关时间。
采样周期:采样周期对于转换时间/采样时钟频率
STM32—ADC详解
STM32的ADC采样时间
本文标签:stm32的精度损失