合泰 单片机 c语言 12位ad转换,单片机是10位的AD如何通过程序的方法达到12位的分辨率...

单片机是10位ADC,是能用软件扩成12位结果的。

方法其实很简单,但却是伪12位的结果。

下面通过实例进行扩位演算,看看伪12位结果,在使用上的局限性。

10位二进制数的扩位和缩位

二进制数位的扩位和缩位,为保证结果能在全域范围被表示,使用最高位对齐、左右移位的方法进行扩位或缩位。

是以损失最低位得到扩缩结果,因为最低位的数值表达绝对值是最小的。

对于扩位,扩位几位,二进制数就左移几位,数位扩展以后,实际精度为原有数位的精度,精度没有任何提升。

对于缩位,缩位几位,二进制数就右移几位,数位缩减以后,实际精度为现有数位的精度,精度反而下降。

实例:下图是用最高位对齐、左右移位的方法进行扩位和缩位的演算

744f42bc58fb5e07e5926982968fa4c1.png

从上图中的实例,可看出,10位扩位成12位后,最小计数值变成了二进制的‘100’,是伪12位分辨率,实际分辨率不变,最低2位是无法通过计算,补上实际数值的。

从上图中的实例,可看出,10位缩位成8位后,最小计数值依然是二进制的‘1’,但是最大技术值缩小了4倍,实际分辨率降低,原来的最低2丢弃了。

正所谓“巧妇难为无米之炊”对于ADC而言,硬件决定了最高精度,软件是无法通过计算弥补缺失的精度的。因为,任何数学计算,只能从高精度降到低精度,而无法从低精度升高到高精度。

数位丢失了,是无法凭空臆造出来。因此在系统设计时,对精度的预估,只能高不能低,因为高了,可以降低,低了无法提高。

如何真正解决单片机ADC不足的问题

很多时候,处于成本、设计、专利、源码等原因。

所使用的单片机,可能只有10位精度的ADC,但是系统要求12位精度的ADC结果来参与计算,实现软件接口的通用性。

如果实际产品可以接收10位精度的ADC,仅仅只是软件接口需要12位精度数值,就可以通过高位对齐左移扩位的方式来实现。

如果实际产品必须要求12位精度的ADC,那么就只有通过片外增加独立的高精度ADC,比如下图的这个ADC芯片。

片外增加的独立ADC精度可能高于12位。

那么就可以通过高位对齐右移缩位的方式来实现。

这样降低精度的计算,仍然可以保持精度为12位,完全不会丧失系统对ADC的精度要求,甚至还有在未来提高精度的可能性。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值