[应用相关] STM32低功耗时,IO引脚配置的问题

[复制链接]
790|7
 楼主| elephant00 发表于 2021-2-4 10:46 | 显示全部楼层 |阅读模式
做有低功耗产品设计经验的朋友都应该知道,一个产品的功耗不光是硬件功耗的事,其实软件也是影响整个产品功耗的一个关键因素。

我之前也开发过几款使用电池供电的产品,调试起来,那叫一个痛苦,软件和硬件各种因素都要考虑。

当你确信软件没问题了,可能硬件某个地方又存在漏电流,这其中的“痛苦”我也不再这里描述了。

今天就为大家分享一点关于STM32在低功耗状态时,IO引脚常规的配置内容。

1.     将未使用的GPIO输入配置为模拟输入
GPIO始终有一个输入通道,可以是数字或模拟通道。

如果不需要读取GPIO数据,则优先配置为模拟输入。这节省了输入施密特触发器的消耗。

在STM32CubeMX配置中都有这么一个选项:将不用引脚配置为模拟状态。

101726afz9r0srw6p490w8.jpg

2.     调节GPIO速度
上升时间,下降时间和最大频率可使用GPIOx_OSPEEDR配置寄存器进行配置。

这种调整对EMI(电磁干扰)和SSO(同时开关输出)有影响,因为开关电流峰值较高。因此必须平衡GPIO性能与噪声。

每个GPIO信号的上升时间和下降时间必须适应与相关信号频率和电路板容性负载兼容的最小值。

3.     不使用时禁用GPIO寄存器时钟
如果某个GPIO组不需要长时间使用,禁用其时钟。

比如标准外设库,禁用GPIOA时钟:
  • RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, DISABLE);

[color=rgb(51, 102, 153) !important]复制代码


HAL库,禁止GPIOA时钟:
  • __HAL_RCC_GPIOA_CLK_DISABLE();

[color=rgb(51, 102, 153) !important]复制代码


4.     进入低功耗模式时配置GPIO
进入低功耗模式时,所有引脚信号必须连接到VDD或接地。

如果GPIO连接到外部接收器(外部元件输入),则必须使用PP或PU/PD强制GPIO信号值。

当GPIO连接到驱动器(外部元件输出或总线)时,驱动器必须提供有效电平( VDD或接地)。

如果未定义驱动器电平,则必须使用PU/PD强制GPIO上的信号。

出于实际原因,当GPIO是运行模式下的输入(模拟或数字)时,在低功耗模式下使用输入PU/PD可能更容易;当GPIO是运行模式下的输出时,则使用输出PP。这可以避免在进入或退出停止模式时管理更改。

5.     退出关机模式
退出关机(shut down)模式时,GPIO会在上电复位时重新配置为默认值。

在将它们重新编程为正确值之前,这会需要额外的系统消耗。

如果这是应用程序的问题,则必须使用待机(standby)模式替代关机模式。
(仅限STM32L4系列和STM32L4+系列)

xyz549040622 发表于 2021-2-4 12:27 来自手机 | 显示全部楼层
支持下,谢谢分享。
磨砂 发表于 2021-3-1 23:41 | 显示全部楼层
很多人都不注意这个问题
晓伍 发表于 2021-3-1 23:44 | 显示全部楼层
介绍 的还是非常详细的
八层楼 发表于 2021-3-1 23:47 | 显示全部楼层
都注意到 才会有真的低功耗
观海 发表于 2021-3-1 23:49 | 显示全部楼层
楼主分享的额很详细
guanjiaer 发表于 2021-3-1 23:51 | 显示全部楼层
额 排版有点小问题
laocuo1142 发表于 2021-3-3 10:53 | 显示全部楼层

介绍 的还是非常详细的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1031

主题

3954

帖子

7

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