查看: 5085|回复: 6

【ADC】使用ADC的时候如何降低功耗。

[复制链接]

2

主题

12

帖子

114

积分

中级工程师

Rank: 2

积分
114
发表于 2021-8-12 12:28:04 | 显示全部楼层 |阅读模式
不开ADC的时候功耗在50ua左右。。当ADC采集的时候功耗会到2mA。。void MF_ADC_Common_Init(void)
{

    /*IO CONFIG*/
    FL_ADC_CommonInitTypeDef    CommonInitStruct;

    CommonInitStruct.clockSource = FL_RCC_ADC_CLK_SOURCE_RCHF;
    CommonInitStruct.clockPrescaler = FL_RCC_ADC_PSC_DIV8;

    FL_ADC_CommonInit(&CommonInitStruct );
}


有什么方法降低ADC的功耗吗?


程序使用了一个低功耗timer,间隔5S 运行一次ADC DMA采集了100个点。。
如果我把时钟配置为FL_RCC_ADC_CLK_SOURCE_RCMF_PSC  不使用DMA的话,采集到的值不对。总是1200多。应该是2500多。如果使用DMA的话,就采集不到数据了。DMA无法完成。。

2021-8-13
采集ADC时,要打开GPIO。我发现屏蔽掉GPIO的代码,功耗就降低了。。IO输出这么耗电?



回复

使用道具 举报

2

主题

12

帖子

114

积分

中级工程师

Rank: 2

积分
114
 楼主| 发表于 2021-8-12 15:56:49 | 显示全部楼层
看手册。ADC可以工作在FL_PMU_POWER_MODE_LPRUN_ONLY模式。。能提供一个深度睡眠,在LPRUN模式下使用ADC的例程吗?   
回复

使用道具 举报

13

主题

23

帖子

221

积分

高级工程师

Rank: 3Rank: 3

积分
221
发表于 2021-8-12 19:21:16 | 显示全部楼层
借个楼,
请问adc高速通道和慢速通道有什么不同?使用上有什么注意的?
回复

使用道具 举报

155

主题

847

帖子

4701

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4701
发表于 2021-8-13 09:23:24 | 显示全部楼层
50ua 这个有些大,我们的deepsleep只需要1.6uA、请确认功耗用在了哪里,可否降下来。 adc如果是500K的采样速度。采样100个点。5s一次 ,功耗是极少的。算下来,可以忽略、
回复

使用道具 举报

2

主题

12

帖子

114

积分

中级工程师

Rank: 2

积分
114
 楼主| 发表于 2021-8-13 16:07:18 | 显示全部楼层
现在的项目使用泄露电流进行功能。最大的泄露电流为100ua。
程序使用的资源:
1. 一个低功耗LPtime  10秒中断一次。
2. 一个外部GPIO 上升沿触发中断
3. LCD 4COM 用于显示。
4. ADC 采集。
外部IO触发和定时器中断收,ADC采集。LCD显示。然后进入睡眠。

直接从PMU_DeepSleep_GPIO唤醒 扣的代码。
芯片启动需要300ua的电流,才能启动。。保持的话,需要200ua。
不知道是哪儿的问题。。我把程序传上来,高手帮我找找问题。。谢谢了。。

回复

使用道具 举报

155

主题

847

帖子

4701

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4701
发表于 2021-8-16 08:39:01 | 显示全部楼层
qianxilin 发表于 2021-8-13 16:07
现在的项目使用泄露电流进行功能。最大的泄露电流为100ua。
程序使用的资源:
1. 一个低功耗LPtime  10秒 ...

你说的最大100ua 是平均 还是瞬间。这款芯片休眠唤醒后跑8M,需要2mA左右的瞬间电流,持续1~2ms
能不能坚持。
回复

使用道具 举报

2

主题

12

帖子

114

积分

中级工程师

Rank: 2

积分
114
 楼主| 发表于 2021-8-24 17:45:52 | 显示全部楼层
100ua是稳定的电流。
现在已经差不多了。芯片唤醒后ADC采集200个点,然后再次进入休眠。有时候会重启,有时候不会。。103ua,基本上就稳定了。。 采集400个点的话,就得150以上了。。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

快速回复 返回顶部 返回列表