打印

关于CC2541的AD采集问题

[复制链接]
6790|33
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
kgs0716|  楼主 | 2015-10-22 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我想在2541芯片上控制功耗采集AD,不注释POWER_SAVING,功耗的确能够降下来,但是ADC采集就不准确了,注释POWER_SAVING后,功耗在12mA。

然后我看芯片资料看到ADC 只能运行在32 MHz XOSC 上。

那么如何在低功耗的条件下,对AD进行采集呢?我也试过在我定义的定时器时间采集部分先
osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
后osal_pwrmgr_device(PWRMGR_BATTERY); 但也没用,采集依然不准确

相关帖子

沙发
dirtwillfly| | 2015-10-22 12:56 | 只看该作者
你的思路是对的。工作时跑在高频率下,不工作就进入低功耗。
具体为啥不准,你对照电路分析下代码,一般都是代码的问题。

使用特权

评论回复
板凳
xyz549040622| | 2015-10-22 20:14 | 只看该作者
低功耗模式下,是不是你的AD的时钟没有改变呢。

使用特权

评论回复
地板
kgs0716|  楼主 | 2015-10-23 09:43 | 只看该作者
xyz549040622 发表于 2015-10-22 20:14
低功耗模式下,是不是你的AD的时钟没有改变呢。

      osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
      P1 |= (1<<0);//设置P1_0口为高电平
      P1DIR |= (1<<0);//设置端口输出状态
      P1INP |= (1<<0);//while P1 in input mode,the port state is 3-state   
      
      HalAdcSetReference(HAL_ADC_REF_AVDD);
            
//    SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR_SENSOR_12, SIMPLEPROFILE_CHAR_SENSOR_LEN, SENSOR_SendData12);
//    SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR_SENSOR_34, SIMPLEPROFILE_CHAR_SENSOR_LEN, SENSOR_SendData34);
//    SimpleProfile_SetParameter(SIMPLEPROFILE_CHAR_SENSOR_56, SIMPLEPROFILE_CHAR_SENSOR_LEN, SENSOR_SendData56);
            
      SENSOR_SendData[0]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_7, HAL_ADC_RESOLUTION_14)<<3));   
      SENSOR_SendData[1]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_6, HAL_ADC_RESOLUTION_14)<<3));
      SENSOR_SendData[2]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_5, HAL_ADC_RESOLUTION_14)<<3));
      SENSOR_SendData[3]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_4, HAL_ADC_RESOLUTION_14)<<3));
      SENSOR_SendData[4]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_3, HAL_ADC_RESOLUTION_14)<<3));
      SENSOR_SendData[5]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_2, HAL_ADC_RESOLUTION_14)<<3));
      SENSOR_SendData[6]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_1, HAL_ADC_RESOLUTION_14)<<3));
      SENSOR_SendData[7]=(0xFFFF-(HalAdcRead(HAL_ADC_CHANNEL_0, HAL_ADC_RESOLUTION_14)<<3));
      osal_pwrmgr_device(PWRMGR_BATTERY);

这是我的代码,AD时钟还需要设置么?

使用特权

评论回复
评论
cedar_renjun 2015-10-25 23:21 回复TA
TI ADC精度不是太高 在osal_pwrmgr_device(PWRMGR_ALWAYS_ON);之后,不要立即采样,稍微增加一些延时,再多次采样求平均 
5
kgs0716|  楼主 | 2015-10-23 09:47 | 只看该作者
我感觉配置的引脚状态不起效果,因为我用万用表测P1_0口发现并不是高电平

使用特权

评论回复
6
dirtwillfly| | 2015-10-23 10:01 | 只看该作者
kgs0716 发表于 2015-10-23 09:43
osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
      P1 |= (1

:L
一部分用寄存器操作,一部分用协议栈提供的库

使用特权

评论回复
7
dirtwillfly| | 2015-10-23 10:01 | 只看该作者
参考下这个资料吧http://www.tuicool.com/articles/miIz63E

使用特权

评论回复
8
kgs0716|  楼主 | 2015-10-23 10:46 | 只看该作者
dirtwillfly 发表于 2015-10-23 10:01
参考下这个资料吧http://www.tuicool.com/articles/miIz63E

在 Option xPOWER_SAVING 我把这个注释了 测量的引脚电压都是正确的。
但是POWER_SAVING 不注释,测量就是错误的,上面代码配置都不起效果。主要是这个问题。
而且一部分寄存器,一部分库函数 应该不影响的吧

使用特权

评论回复
9
xyz549040622| | 2015-10-23 10:59 | 只看该作者
kgs0716 发表于 2015-10-23 10:46
在 Option xPOWER_SAVING 我把这个注释了 测量的引脚电压都是正确的。
但是POWER_SAVING 不注释,测量就 ...

看来现在的问题是,低功耗模式下,引脚的配置就是问题了。先解决这一部分

使用特权

评论回复
10
309030106| | 2015-10-23 14:08 | 只看该作者
低功耗模式下,引脚需要重配置吗

使用特权

评论回复
评论
cedar_renjun 2015-10-25 23:22 回复TA
不需要,CPU 会保持RAM内容 
11
kgs0716|  楼主 | 2015-10-23 15:29 | 只看该作者
309030106 发表于 2015-10-23 14:08
低功耗模式下,引脚需要重配置吗

用示波器看 在osal_pwrmgr_device(PWRMGR_BATTERY);前把引脚配置为高电平
但是运行到osal_pwrmgr_device(PWRMGR_BATTERY);后 引脚自动变为低电平

所以应该还是要配置的。主要是如果保证拉高的延时?

使用特权

评论回复
12
dirtwillfly| | 2015-10-23 18:49 | 只看该作者
@cedar_renjun 任总在吗?帮忙看看这个问题

使用特权

评论回复
评论
cedar_renjun 2015-10-25 23:23 回复TA
嗯,已经回他了 主要是TI的ADC精度不高,加上速度慢,需要增加delay等待ADC稳定,然后多次采样就可以了 
13
Thor9| | 2015-10-23 23:00 | 只看该作者
工作时跑在高频率下,不工作就进入低功耗

使用特权

评论回复
14
dirtwillfly| | 2015-10-26 08:15 | 只看该作者
dirtwillfly 发表于 2015-10-23 18:49
@cedar_renjun 任总在吗?帮忙看看这个问题

:handshake

使用特权

评论回复
15
comeon201208| | 2015-10-26 22:33 | 只看该作者
跟楼上各位学习了解得了吧,这个关于低功耗下AD采集的问题需要多注意的。

使用特权

评论回复
16
情深一往| | 2015-10-28 15:55 | 只看该作者
dirtwillfly 发表于 2015-10-23 18:49
@cedar_renjun 任总在吗?帮忙看看这个问题

原来是这个问题,学习了。

使用特权

评论回复
17
sunriselight| | 2015-10-29 16:19 | 只看该作者
主要是TI的ADC精度不高,加上速度慢,需要增加delay等待ADC稳定,然后多次采样就可以了  。经验之谈呀,赞一个!

使用特权

评论回复
18
白丁野老| | 2015-10-30 23:32 | 只看该作者
dirtwillfly 发表于 2015-10-23 18:49
@cedar_renjun 任总在吗?帮忙看看这个问题

学习了,原来是这个原因

使用特权

评论回复
19
白丁野老| | 2015-10-30 23:36 | 只看该作者
comeon201208 发表于 2015-10-26 22:33
跟楼上各位学习了解得了吧,这个关于低功耗下AD采集的问题需要多注意的。 ...

确实是很有用的经验的

使用特权

评论回复
20
1988020566| | 2015-10-31 11:13 | 只看该作者
看看是不是有外部干扰。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

41

帖子

0

粉丝