本帖最后由 香水城 于 2017-8-17 13:58 编辑
关闭电源还在运行 问题:
该问题由某客户提出,发生在 STM32F103VBT6 器件上。据其工程师讲述:其产品中使用了 STM32 作为主控单元,负责系统的管理。在对产品测试时发现了一个奇怪的现象:在关闭电源后,STM32 仍然能够对 UART 上输入的信息做出回应。
调研:
检查其测试装置,如图(一)所示:
其中,USB 到 UART 转换器的 Tx 和 Rx 的信号标准为 3.3V CMOS,STM32 所使用的通信口为 USART1。重复测试,现象如其所述。用万用表测量 STM32 的 VDD 端子,在 2.1V 左右。断开 STM32 的 Tx 与 USB 到 UART 转换器的 Rx 之间的连接,STM32 的 VDD 端子上的电压无变化。断开 STM32 的 Rx 与 USB 到 UART 转换器的 Rx 之间的连接,STM32 的 VDD 端子上的电压降为零。
结论:
USB 到 UART 转换器通过 STM32 的 USART1 的 Rx 管脚对 STM32 提供了电能,使其维持在运行状态。
处理:
在 STM32 与对外的端子之间加隔离芯片,如图(二)所示:
建议:
STM32 的参考手册中,给出的 I/O 端子的结构如图(三)所示:
在每个 I/O 端子上集成有两个保护二极管,一个与 VSS 接连,而另一个与 VDD 连接。由于这种结构,使得 STM32 在电源停止对其供电时,有可能通过保护二极管从外部电路送来的高电平信号吸取电能,补充到其供电电路中去。而 STM32 本身是低功耗芯片,因此在某些情况下,可以依靠这种供电方式维持在运行状态。然而,让 STM32 处于这种运行状态是有危害的。
具体表现为:
1. 由于供电不稳定,STM32 并没处于稳定的运行状态,可能会产生误动作,危及系统安全;
2. STM32 从外部电路吸取电能,增加了系统的功耗,而这部分电能的消耗是完全没有意义的;
3. STM32 的保护二极管所允许通过的电流并不大,在 5mA 以下。长期从保护二极管流过较大的电流,会导致 STM32 失效;
4. 由于 STM32 从外部信号吸取较大的电流,有可能导致该信号的电平偏离正常的电平标准,而造成其它电路对该信的识别出错;
所以,在 STM32 的应用中要避免这种情况的出现。通常的处理方法是加隔离芯片,如74HC245、74HC244、74HC125 等。
对应的PDF:关闭电源还在运行
更多实战经验请看:【ST MCU实战经验汇总贴】
|