打印
[APM32F1]

为什么使用了USB STOP功耗降不下去?

[复制链接]
1662|52
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
Peixu|  楼主 | 2025-1-2 11:05 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 Peixu 于 2025-6-6 17:46 编辑

在基于 APM32F107 微控制器的项目开发过程中,低功耗性能是许多应用场景重点关注的指标之一。然而,不少开发者在完成 USB 初始化操作后,将系统切换至 STOP 模式时,会遇到功耗异常的问题。即便已对所有 IO 引脚和时钟进行了细致的配置处理,系统整体功耗仍明显高于正常 STOP 模式下的预期值,通常高出 1 毫安以上,这一现象严重影响了产品的能耗表现。


如以下现象所示 使用APM32F107在初始化了 USB 之后进入STOP的时候,就算配置了所有的io和时钟的处理,功耗还是没办法降下去。 比正常的STOP高一点多毫安。


经查阅 APM32F107 的数据手册可知,USB 外设本身存在 1.75mA 的固有功耗,
这一信息为解决该问题指明了方向 —— 系统进入 STOP 模式时,USB 模块并未实现完全关闭,处于持续耗电状态,进而拉高了整体功耗。
要解决这一问题,需从 USB 模块的关闭机制入手,采取针对性措施确保其在 STOP 模式下不再消耗额外电能。​
对于标准的 APM32F107 开发场景,最为关键的解决步骤是在系统进入 STOP 模式前,在程序中加入USB_DeviceReset()函数调用。此函数能够对 USB 设备进行全面复位,切断其与外部设备的数据交互链路,同时关闭内部相关电路,使其进入低功耗状态,从而避免在 STOP 模式下产生不必要的功耗。

如图:查看手册 USB外设是有1.75mA的功耗, 说明USB没有完全关闭。


若使用的是 APM32F107 的 OTG 系列芯片,处理流程会更加复杂。除了调USB_DeviceReset()函数外,还需对 USB 外设的相关寄存器进行特定配置。


首先,OTGFSRS[color=rgba(0, 0, 0, 0.85)]寄存器置 1,这一操作可触发 USB 外设的硬件复位流程,使 USB 模块停止当前所有数据传输和处理任务;其次,OTGFSEN寄存器置 0,关闭 USB 外设的时钟供应,时钟是模块正常工作的时序基础,关闭时钟意味着从根本上切断了 USB 模块的工作能源,使其彻底停止运行,进入低功耗状态。

解决方案:
如参考下图需要在加入 USB_DeviceReset();
如果是OTG系列,除了上面那个函数,也是要把USB外设复位(OTGFSRST = 1),同时关闭时钟(OTGFSEN = 0)


APM32F107_USB_STOP.zip

7.94 MB

使用特权

评论回复
沙发
elephant00| | 2025-1-2 16:51 | 只看该作者
USB接口未完全关闭

使用特权

评论回复
板凳
两只袜子| | 2025-1-2 16:51 | 只看该作者
外设时钟未关闭

使用特权

评论回复
地板
cr315| | 2025-1-2 19:00 | 只看该作者
硬件故障,如USB接口损坏或电源管理单元故障

使用特权

评论回复
5
jcky001| | 2025-1-2 23:00 | 只看该作者
软件或固件中可能存在错误或不当的配置,

使用特权

评论回复
6
xionghaoyun| | 2025-1-3 09:55 | 只看该作者
时钟没降频?

使用特权

评论回复
7
丙丁先生| | 2025-1-3 10:06 | 只看该作者
关注

使用特权

评论回复
8
电竞孔乙己| | 2025-1-7 15:46 | 只看该作者
手册还是很重要的

使用特权

评论回复
9
chenjun89| | 2025-1-7 21:04 | 只看该作者
没用的IO怎么处理的。

使用特权

评论回复
10
plsbackup| | 2025-2-4 17:24 | 只看该作者
即使进入 USB STOP 模式,若外部仍有 USB 设备处于连接状态且未完全停止工作,会持续消耗电量。

使用特权

评论回复
11
robincotton| | 2025-2-4 18:33 | 只看该作者
USB 控制器芯片或其他相关芯片的引脚可能存在漏电问题。

使用特权

评论回复
12
febgxu| | 2025-2-4 19:41 | 只看该作者
如果USB被配置为唤醒源,在STOP模式下,USB模块需要保持对外部唤醒信号的检测,这会导致额外的功耗。

使用特权

评论回复
13
gygp| | 2025-2-5 07:38 | 只看该作者
USB主机或集线器可能没有正确地发送SUSPEND信号,或者信号被外部干扰所影响。

使用特权

评论回复
14
modesty3jonah| | 2025-2-5 08:02 | 只看该作者
确认没有硬件错误,比如错误的电源连接或短路。

使用特权

评论回复
15
cashrwood| | 2025-2-5 08:39 | 只看该作者
操作系统的电源管理设置可能没有正确配置。例如,某些系统服务或进程可能被设置为在任何情况下都保持运行,即使进入 USB STOP 模式也不会停止。

使用特权

评论回复
16
jkl21| | 2025-2-5 09:07 | 只看该作者
PCB设计不合理,存在漏电或短路,导致功耗增加

使用特权

评论回复
17
rosemoore| | 2025-2-5 09:40 | 只看该作者
有的芯片在开启USB功能后,无论是否进入STOP模式,都会有一定的功耗

使用特权

评论回复
18
pmp| | 2025-2-5 10:43 | 只看该作者
通过优化代码和配置,减少STOP模式下的电流消耗。例如,可以将除键盘矩阵外的其余所有IO配置成输入上拉模式(针对某些特定的应用场景),以进一步降低功耗。

使用特权

评论回复
19
kmzuaz| | 2025-2-5 11:18 | 只看该作者
部分微控制器中,即使进入STOP模式,USB的某些功能可能仍未完全关闭,仍会消耗一定的电流。

使用特权

评论回复
20
caigang13| | 2025-2-5 11:26 | 只看该作者
谢谢分享经验,学习了。

使用特权

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

本版积分规则

31

主题

57

帖子

0

粉丝