- 收藏
- 点赞
- 分享
- 举报
[转]CC2430 2530 AD转换分辨率之“争”
原帖地址:http://www.amobbs.com/thread-5452878-1-1.html 本周五开始就开始学习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位。
[attach]1000[/attach] (原文件名:AD转换精度.png)
虽然数据手册写的非常清楚,但是也留给人一点悬念。第一,数据手册中出现了一个大家都比较陌生的抽取率,这个概念或许是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的工作人员的回复倒是干脆,也点破了大多数人的疑问。
[attach]1001[/attach] (原文件名:TI工作人员回复.png)
我认为这句话的意思是这样的“根据测试的结果,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之间。 2 AD转换的结果实行左对齐,而且该对齐方式不能选择。如果使用7位分辨率,结果为于ADCH寄存器的高7位。其他的分辨率以此类推。
Markdown 语法
- 加粗**内容**
- 斜体*内容*
- 删除线~~内容~~
- 引用> 引用内容
- 代码`代码`
- 代码块```编程语言↵代码```
- 链接[链接标题](url)
- 无序列表- 内容
- 有序列表1. 内容
- 缩进内容
- 图片![alt](url)
-
2014-11-19 09:52:17
-
2010-06-03 00:05:57
-
2010-01-21 11:06:33
-
2010-02-04 10:19:15
-
2010-04-12 22:29:52
-
2008-12-13 14:32:01
-
2008-12-13 14:23:25
-
2018-01-03 14:07:45
-
2013-11-16 13:35:33
-
2008-11-16 15:58:56
-
2014-11-19 08:51:30
-
2013-12-10 20:50:24
-
112013-08-07 10:07:13
-
32014-12-05 15:25:51
-
12012-12-16 17:07:26
-
2019-03-13 15:04:57
-
2017-03-14 15:00:47
-
2015-11-19 15:43:38
-
2014-03-20 13:54:27
-
5Hi3516CV610 如何使用SD卡升级固件
-
5cat /dev/logmpp 报错 <3>[ vi] [func]:vi_send_frame_node [line]:99 [info]:vi pic queue is full!
-
50如何获取vpss chn的图像修改后发送至vo
-
5FPGA通过Bt1120传YUV422数据过来,vi接收不到数据——3516dv500
-
50SS928 运行PQtools 拼接 推到设备里有一半画面会异常
-
53536AV100的sample_vdec输出到CVBS显示
-
10海思板子mpp怎么在vi阶段改变视频数据尺寸
-
10HI3559AV100 多摄像头同步模式
-
9海思ss928单路摄像头vio中加入opencv处理并显示
-
10EB-RV1126-BC-191板子运行自己编码的程序
举报类型
- 内容涉黄/赌/毒
- 内容侵权/抄袭
- 政治相关
- 涉嫌广告
- 侮辱谩骂
- 其他
详细说明