什么是电荷泵,在stm32F103C8T6中有什么作用?
1. 什么是电荷泵?
核心概念:
电荷泵是一种直流-直流转换器,它使用电容器(而非传统的电感器)作为储能元件来创建、倍增或反转电压。
工作原理(以电压倍压为例):
你可以把它想象成一个用开关和水泵来给两个水桶加压的系统。
-
充电阶段(开关闭合到位置A):
-
一个输入电源(例如 3.3V)连接到电容器,对其进行充电。
-
此时,电容器两端的电压差达到约 3.3V。
-
-
放电/泵升阶段(开关切换到位置B):
-
现在,将这个已经充有 3.3V 电压的电容器与输入电源串联起来。
-
输出电压就变成了 输入电压 + 电容器电压 ≈ 3.3V + 3.3V = 6.6V。
-
通过高速切换开关(通常由MOSFET和振荡器实现),电荷泵可以持续地将电荷“泵”到输出端,从而产生一个高于或低于输入电压的稳定输出。
主要类型:
-
电压倍压器:产生比输入电压高的输出电压(如 2x, 1.5x)。
-
电压逆变器:产生负电压(如 -5V 从 +5V 输入)。
-
电压稳压器:产生一个稳定的输出电压(可以是升压、降压或反相)。
优点:
-
无需电感:体积小、成本低、电磁干扰小。
-
简单高效:在特定的电压转换比下效率很高。
-
集成度高:易于集成到芯片内部。
缺点:
-
输出电流有限:通常只能提供较小的电流。
-
有限的电压比:输出电压通常是输入电压的倍数或分数,难以实现任意电压输出。
2. 电荷泵在STM32F103C8T6中的作用
在STM32F103C8T6中,电荷泵并非一个独立的、可供用户随意使用的外设。它的作用是专门且固定的:为芯片内部的Flash存储器编程电路提供更高的电压。
详细解释:
STM32F103C8T6的核心电压是 3.3V。然而,在向其内部的Flash存储器执行写入或擦除操作时,需要比3.3V更高的电压(通常是 ~7V 到 ~9V)来驱动存储单元的浮栅晶体管,以注入或移除电子。
问题来了: 整个芯片只有一个3.3V的电源输入(VDD)。如何产生这个更高的编程电压?
答案就是: 芯片内部集成了一個电荷泵电路。
工作流程:
-
当你调用
HAL_FLASH_Program或擦除扇区时,CPU会启动Flash编程操作。 -
硬件自动启用内部的电荷泵。
-
电荷泵开始工作,将输入的3.3V电压提升到所需的编程电压(例如 ~8V)。
-
这个高压被施加到Flash存储单元上,完成数据的写入或擦除。
-
操作完成后,电荷泵自动关闭以节省功耗。
总结其在STM32F103C8T6中的角色:
电荷泵是一个透明的、自动工作的幕后英雄,它确保了即使在单一的3.3V供电下,芯片也能可靠地对自身的Flash存储器进行编程和擦除。
3. 作为STM32用户的你,需要注意什么?
虽然你无法直接控制这个电荷泵,但理解它的存在对你的编程有重要影响:
1. Flash编程/擦除的时间延迟
在电荷泵启动和稳定期间,无法立即进行Flash操作。因此,数据手册中规定了 t_PROG(编程时间) 和 t_ERASE(擦除时间)。
-
在编写Flash操作代码时,必须插入足够的延迟或等待Flash控制器的“忙”标志位清除,这本质上部分是在等待电荷泵稳定工作并完成高压脉冲。
-
错误示例(伪代码):
FLASH->CR |= FLASH_CR_PG; // 设置编程位 *(__IO uint16_t*)Address = Data; // 写入数据 // 如果没有等待完成,操作可能失败! -
正确示例(使用HAL库):
HAL_FLASH_Program(FLASH_TYPEPROGRAM_HALFWORD, Address, Data); // HAL库内部已经帮你处理了所有的等待和标志检查
2. 电源稳定性和去耦
由于电荷泵在启动瞬间会从电源汲取较大的电流,如果PCB的电源去耦设计不好,可能会导致短暂的电源电压跌落,从而引起系统不稳定。
-
对策:务必在STM32的
VDD和VSS引脚附近放置足够和恰当的去耦电容(通常是100nF + 10uF的组合),以提供瞬态电流并稳定电源。
3. 低功耗模式下的限制
在某些极低功耗的停机模式下,芯片内部的大部分时钟和模拟电路都会被关闭,其中就包括电荷泵所需的振荡器。因此,在Flash编程/擦除期间,CPU不能进入深度睡眠模式,必须保持活动状态以保证电荷泵正常工作。
与STM32F103的“BOOT引脚”和“ISP”的关系
当你使用串口进行ISP下载时(通过BOOT0引脚拉高),这个过程也涉及大量的Flash擦写操作。此时,芯片内部的电荷泵同样在幕后默默工作,确保来自串口的数据能够被正确地写入到Flash中。
总结
| 方面 | 解释 |
|---|---|
| 是什么 | 一种使用电容进行DC-DC电压转换的电路。 |
| 在STM32F103C8T6中的作用 | 内部集成,用于生成Flash编程所需的高压(~8V)。 |
| 对用户是否可见 | 不可见,完全由硬件自动管理。 |
| 对编程的影响 | 必须遵守Flash编程/擦除的等待时间;需要注意电源完整性设计。 |
| 类比 | 就像一座建筑内部的增压水泵,它利用普通的自来水压力,为顶层的用户提供足够的水压。你不需要操作它,但它对你的正常用水至关重要。 |
因此,对于STM32F103C8T6的用户来说,电荷泵是一个关键的内部基础设施,它使得在单一低压供电下进行可靠的在线编程成为可能。你的主要任务就是遵循数据手册和库函数的指导,正确地处理Flash操作时的时序。
更多推荐
所有评论(0)