关于CC2541的AD采集问题

[复制链接]
7528|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时钟还需要设置么?

评论

TI ADC精度不是太高 在osal_pwrmgr_device(PWRMGR_ALWAYS_ON);之后,不要立即采样,稍微增加一些延时,再多次采样求平均  发表于 2015-10-25 23:21
 楼主| kgs0716 发表于 2015-10-23 09:47 | 显示全部楼层
我感觉配置的引脚状态不起效果,因为我用万用表测P1_0口发现并不是高电平
dirtwillfly 发表于 2015-10-23 10:01 | 显示全部楼层
kgs0716 发表于 2015-10-23 09:43
osal_pwrmgr_device(PWRMGR_ALWAYS_ON);
      P1 |= (1

:L
一部分用寄存器操作,一部分用协议栈提供的库
dirtwillfly 发表于 2015-10-23 10:01 | 显示全部楼层
 楼主| kgs0716 发表于 2015-10-23 10:46 | 显示全部楼层
dirtwillfly 发表于 2015-10-23 10:01
参考下这个资料吧http://www.tuicool.com/articles/miIz63E

在 Option xPOWER_SAVING 我把这个注释了 测量的引脚电压都是正确的。
但是POWER_SAVING 不注释,测量就是错误的,上面代码配置都不起效果。主要是这个问题。
而且一部分寄存器,一部分库函数 应该不影响的吧
xyz549040622 发表于 2015-10-23 10:59 | 显示全部楼层
kgs0716 发表于 2015-10-23 10:46
在 Option xPOWER_SAVING 我把这个注释了 测量的引脚电压都是正确的。
但是POWER_SAVING 不注释,测量就 ...

看来现在的问题是,低功耗模式下,引脚的配置就是问题了。先解决这一部分
309030106 发表于 2015-10-23 14:08 | 显示全部楼层
低功耗模式下,引脚需要重配置吗

评论

不需要,CPU 会保持RAM内容  发表于 2015-10-25 23:22
 楼主| kgs0716 发表于 2015-10-23 15:29 | 显示全部楼层
309030106 发表于 2015-10-23 14:08
低功耗模式下,引脚需要重配置吗

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

所以应该还是要配置的。主要是如果保证拉高的延时?
dirtwillfly 发表于 2015-10-23 18:49 | 显示全部楼层
@cedar_renjun 任总在吗?帮忙看看这个问题

评论

嗯,已经回他了 主要是TI的ADC精度不高,加上速度慢,需要增加delay等待ADC稳定,然后多次采样就可以了  发表于 2015-10-25 23:23
Thor9 发表于 2015-10-23 23:00 | 显示全部楼层
工作时跑在高频率下,不工作就进入低功耗
dirtwillfly 发表于 2015-10-26 08:15 | 显示全部楼层
dirtwillfly 发表于 2015-10-23 18:49
@cedar_renjun 任总在吗?帮忙看看这个问题

:handshake
comeon201208 发表于 2015-10-26 22:33 | 显示全部楼层
跟楼上各位学习了解得了吧,这个关于低功耗下AD采集的问题需要多注意的。
情深一往 发表于 2015-10-28 15:55 | 显示全部楼层
dirtwillfly 发表于 2015-10-23 18:49
@cedar_renjun 任总在吗?帮忙看看这个问题

原来是这个问题,学习了。
sunriselight 发表于 2015-10-29 16:19 | 显示全部楼层
主要是TI的ADC精度不高,加上速度慢,需要增加delay等待ADC稳定,然后多次采样就可以了  。经验之谈呀,赞一个!
白丁野老 发表于 2015-10-30 23:32 | 显示全部楼层
dirtwillfly 发表于 2015-10-23 18:49
@cedar_renjun 任总在吗?帮忙看看这个问题

学习了,原来是这个原因
白丁野老 发表于 2015-10-30 23:36 | 显示全部楼层
comeon201208 发表于 2015-10-26 22:33
跟楼上各位学习了解得了吧,这个关于低功耗下AD采集的问题需要多注意的。 ...

确实是很有用的经验的
1988020566 发表于 2015-10-31 11:13 | 显示全部楼层
看看是不是有外部干扰。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

11

主题

41

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部