标题:
cc2530的ADC精度解释
[打印本页]
作者:
51黑ren
时间:
2015-12-27 03:34
标题:
cc2530的ADC精度解释
cc2530的ADC精度解释
转载 2015-12-15 17:51:38
在调试cc2530的上的ADC的小实验中,遇到的一些问题,想和大家一起分享一下。
关于ADC的使用需要注意以下几点:
1.关于配置的寄存器:IO口的配置,其实仔细用大脑想想不用看数据手册就应该想到,IO口要配置成为输入模式,以下摘自数据手册:
当使用ADC时,端口0引脚必须配置为ADC输入。可以使用多达八个ADC输入引脚。要配置一个端口0脚为一个ADC输入,APCFG寄存器中相应的位必须设置为1。这个寄存器的默认值选择端口0引脚为非ADC,即数字输入输出。APCFG寄存器的设置将覆盖P0SEL的设置。
2.关于和ADC有关的几个寄存器,实验中使用的是ADCL和ADCH,主要放的是ADC转换完毕的值,控制ADC启用转换的是三个控制器,分类是这样的ADCCON1,ADCCON2,ADCCON3.其中ADCCON1,ADCCON2可以启用连续转换,而ADCCON3可以控制某一个通道执行一次转换。以上这些一般人都是可以通过看手册配置的,但是配置不是什么大问题,但是从ADCL和ADCH取值有疑问的。经过我的实验,我总结到一个规律:
说实话,TI的CC2530的数据手册有点失败,不过还好ADC能用,数据手册上是说ADC的最大有效数据位为12位。令人奇怪的是却留给用户一个ADCH和ADCL的高6位总共14位,真是令人费解,说好呢12位呢?不禁让人猜想是不是本来设计的是14位,发现无法满足设计的要求,就成12位了,呵呵。
我用的是10位的有效数据,但是怎么从ADCH和ADCL拼凑这10位的数据,通过实验,我可以负责任地告诉大家,其实是这样算的。注我选的是以AVDD5作为参考电压的,AVDD5= 3.3V
例:ADCH为
01101100
ADCL为(注ADCL的低两位无效,读为0)
10101000
那么如何取值呢?经过计算,发现ADCH中最高位是带有一位的有效数字的,对于单端的ADC转换,转换的数据是大于0的,所以符号位为0,那么总共是10位的有效数字位,所以抛开符号位,那么ADCL取高3位,和ADCH的除了符号位的7位组成10位的数字,那么此时有效值为1101100101,转化为10进制的数是869,那么电压值此时为869/1024*3.3V*1000MV。
至于剩余的12位依次类推,可得到结果,需要注意的是对于电压值是0V的,会导致转换的值溢出的问题,需特别注意。
作者:
20151227
时间:
2015-12-28 13:15
值得学习的资料
作者:
1612843049
时间:
2018-12-29 10:24
老哥,请问代码编译时出现无法打开ADC头文件怎么办?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1