在调试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作为参考电压的&