`
hulianwang2014
  • 浏览: 691655 次
文章分类
社区版块
存档分类
最新评论
  • bcworld: 排版成这样,一点看的欲望都没有了
    jfinal

CC2430 CC2530 AD转换分辨率之“争”

 
阅读更多

本周五开始就开始学习CC2430的AD转换模块。看似简单,但是费了我休息日全部的时间。其中最严重的问题——这个片内的AD转换的分辨率到底是多少位,12位还是14位。

开门见山:经过多次试验和查找的资料,我认为TI的数据手册是对的,最高分辨率为12位,分为4档 7位,9位,10位和12位。毫无疑问,CC2430/CC2530中的片内AD转换器采用simga-delta原理,和大多数的逐次比较式不同。

下面我们来简单看看,各派是如何描述的,为什么会有这个分歧。


1 数据手册

中文和英文的数据手册写的非常清楚,AD转换可以达到12位精度,可以分为4档,分别是7位,9位,10位,12位。

虽然数据手册写的非常清楚,但是也留给人一点悬念。第一,数据手册中出现了一个大家都比较陌生的抽取率,这个概念或许是sigma-delta类型AD所特有的。第二,有关ADCL和ADCH寄存器,其中ADCH位8位,全部使用;而ADCL使用了高6位,而低2位没有使用。所以ADC结果寄存器组成了一个14位有效的寄存器,这就给人很大的想象空间,到底这个AD的分辨率有多少!!!


2 网上和图书资料

学习CC2430就只有一本书,该书关于片内AD章节中,第一句话就提到AD转换为14位分辨率(见Zigbee技术实践教程 北航出版社 P157)。在本书的寄存器说明中,提到分辨率有关的设置时,是这样写的:

00:7比特

01:9比特

10:10比特

11:12比特

在书中的ADCCON2和ADCCON3寄存器中可以看到。而英文手册中,却是写的抽取率,括号中写了分辨率。本书该部分由点含糊其次。书中提供了AD转换的相关代码,把这些寄存器的操作写成一组宏定义:代码是这样的:

// Resolution (decimation rate):

#define ADC_8_BIT           0x00     //  64 decimation rate

#define ADC_10_BIT          0x10     // 128 decimation rate

#define ADC_12_BIT          0x20     // 256 decimation rate

#define ADC_14_BIT          0x30     // 512 decimation rate

看宏定义的名称,我自然认为ADC的分辨率为8,10,12,14四个档位。

再者,华中科技大学 刘志鹏同学写了一篇ZigBee ADC使用的文章,名为《Zigbee之旅(六):几个重要的CC2430基础实验——ADC单次采样》,文中也提到AD的分辨率为14位,而不是数据手册中的12位。

http://www.cnblogs.com/hustlzp/archive/2011/02/25/1962572.html

3 和我一样的纠结者

但是网上也有一些纠结于此问题的同仁。例如飞比论坛中的shamiexiaotan同学,他也在这个问题上纠结很久,发了几个帖子,最后写了关于《CC2530的AD重大发现》一文,里面描述了CC2530 ZigBee协议栈中代码和数据手册不符的情况。

http://www.feibit.com/forum.php?mod=viewthread&tid=3167

国内有觉得有问题的,国外也有人觉得很迷惑。例如TI的官网论坛上,也有人提出例如这个问题。

http://e2e.ti.com/support/low_power_rf/f/155/t/15944.aspx

TI的工作人员的回复倒是干脆,也点破了大多数人的疑问。

我认为这句话的意思是这样的“根据测试的结果,CC2430的分辨率从14位降低为12位,但它还是那个ADC,这就是为什么它还是一个14bit的寄存器(测试的结果貌似和设计的初衷不相同,就是这个意思!)。无论ADC如何被使用,转换结果的高位总从ADCH寄存器的最高位开始保存。剩余的2位作为噪声,实际没有任何的作用。”

总结

【1】TI的CC2430的片内AD转换采用sigma-delta原理,由于测试结果不能没有达到设计要求,所以TI把分辨率从14位调整至12位。(或许以前的说明书出现了14位分辨率的情况)。分辨率分为7位,9位,10位和12位。

【2】 AD转换的结果采用补码的形式保存,所以若采用7位分辨率,可以得到的值范围在-64到63之间。

【3】 AD转换的结果实行左对齐,而且该对齐方式不能选择。如果使用7位分辨率,结果为于ADCH寄存器的高7位。其他的分辨率以此类推。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics