现在我已经收集到了充分的信息来回答用户的问题。让我整理一下相关内容。
关于这位用户分享的论坛帖子,问的是 STC8H系列能否在掉电模式下被I2C、SPI、UART中断唤醒。我已经通过手册验证了相关信息。让我给出完整的回答。
关于您在论坛上看到的这个帖子问题,我来为您做详细解答。
结论:可以唤醒,UART、I2C、SPI 均在掉电模式下支持唤醒
根据 STC8H 数据手册(《7 时钟、复位、看门狗与电源管理》章节),STC8H 系列进入掉电模式(即主时钟停振/省电模式)后,以下这些外部通信资源均可以通过下降沿唤醒 MCU:
| 唤醒源 |
相应端口 |
边沿类型 |
可唤醒掉电模式 |
| 串口接收脚 RXD |
RXD(P3.0/P3.6/P1.6/P4.3)、RXD2(P1.0/P4.6)、RXD3(P0.0/P5.0)、RXD4(P0.2/P5.2) |
下降沿 |
✓ |
| I2C 数据输入脚 SDA |
SDA(P1.4/P2.4/P3.3) |
下降沿 |
✓ |
| SPI 的 SS 脚 |
SS(P1.4/P2.4/P4.0/P3.5) |
下降沿 |
✓ |
所以论坛里回复的内容是准确的——UART 的 RXDn、I2C 的 SDA、SPI 的 SS 引脚都支持在掉电模式下唤醒 STC8H。
关于功耗
您提到希望待机功耗降低到 3uA 以下,这是完全可以实现的:
- 根据手册,进入主时钟停振/省电模式后,3.3V 工作电压下 MCU 仅耗约 0.4uA 的电流。
- 论坛中梁工回复的"睡眠功耗典型值 0.6uA,一般不超过 1uA"是符合手册描述的。
⚠️ 特别提醒:手册明确指出,掉电模式下不建议启动 LVD 和比较器——因为它们会连带启动内部 1.19V 高精准参考源,该参考源会额外增加约 300uA 的耗电,这会让您的低功耗目标完全失效。
需要特别注意的几点(来自手册)
1. 关于串口唤醒后能否收到完整数据:
手册明确注明:
串口接收脚的下降沿唤醒 CPU,如果需要唤醒后能接收到完整的串口数据,需将串口波特率设置到 9600 或以下。
也就是说,掉电模式下用 UART 唤醒后要完整接收数据,建议将波特率降至 9600 及以下。
2. 关于 I2C 唤醒的注意事项:
手册在 I²C 章节特别说明:
STC 的 I²C 串行总线控制器工作在从机模式时,SDA 管脚的下降沿信号可以唤醒进入掉电模式的 MCU。(注意:由于 I²C 传输速度比较快,MCU 唤醒后第一包数据一般是不正确的)
3. SPI 唤醒仅限 SS 引脚(下降沿),非 SPI 数据线本身。
常见坑点
- 唤醒是靠下降沿触发的,不是电平唤醒,I/O 口唤醒不支持高/低电平持续唤醒(仅支持边沿)。
- 唤醒后主时钟需要重新起振(可通过 IRCDB 寄存器设置等待时钟数),期间 MCU 不会立即进入满速工作。
如需我提供一份掉电模式 + 串口/UART/SPI 唤醒的示例工程代码(含完整初始化配置),告诉我您用的具体型号(如 STC8H8K64U、STC8H1K08 等)和主频,我可以为您编写可直接编译的代码。
🔍 搜索 "https://www.stcaimcu.com/thread-25088-1-1.html"
⏱️ 查找用时 13.7s | 总回答用时 22.3s