跳转到内容
新建笔记

STM32F103 PC13、RTC 与备份域

PC13 同时涉及普通 GPIO、RTC 输出和备份域防篡改输入。决定它怎样连接前,先确定需要哪一种功能,以及 VDD 存在和仅 VBAT 存在时分别要求它做什么。本页以 STM32F103xF/xG 为主要例子,不将结论推广到所有 STM32。

STM32F103VGT6 是 LQFP100,PC13 在该封装的 7 脚;常见 LQFP64 的 PC13 才是2脚。不能从另一款开发板的“PC13 LED”或封装图抄编号。

PC13、PC14、PC15 通过受限的内部电源开关供电,具有特殊的输出能力约束。DS16554 对相关输出给出的限制包括 2 MHz、30 pF,电源开关的电流能力有限(3 mA),并规定不能把这些脚用作电流源来驱动 LED。必须同时查看具体负载、方向和电流条件,不能按普通 GPIO 的最大驱动能力设计。数据手册引脚表与脚注

“输出速度2 MHz”描述 GPIO 模式/输出特性限制,不意味着允许在任意电容和电流下产生理想2 MHz方波;配置较低速度也不能消除超负载。

2. VDD 与 VBAT 两种供电状态

跳转到“2. VDD 与 VBAT 两种供电状态”
功能VDD 正常存在主 VDD 失效,仅 VBAT 有效
CPU、普通外设和普通 SRAM按运行/低功耗模式工作不能依靠 VBAT 维持运行或普通 SRAM 内容。
RTC、备份寄存器可由主电源支持在满足备份域条件时继续保持。
PC13可作普通 GPIO,或按配置作备份域复用功能仅保留受支持的 Tamper、RTC闹钟/秒输出功能,不能当普通电池维持 GPIO。
PC14/PC15可作相应 GPIO 或 LSE 晶振引脚用于 LSE;不能承诺普通 GPIO 工作。

普通系统复位通常不清除备份寄存器,不等于所有 GPIO 模式和输出电平都跨复位保持。还应区分系统复位、Standby退出、备份域复位以及 VBAT/VDD 都失去电源;最后两种会破坏相应备份状态。某些输出控制位还具有自己的掉 VDD 复位行为。RM0008 电源与 BKP

3. RTC 不等于必须外接电池

跳转到“3. RTC 不等于必须外接电池”

RTC(实时时钟)在 F103 中通过选定时钟、预分频器和计数器推进时间。主电源存在时,可选 LSE、LSI 或 HSE/128;它们在精度、功耗和低功耗可用性上不同。

若 RTC 输入频率为 fRTCf_{\mathrm{RTC}},预分频寄存器对应值为 PRL,则计数步进频率为

ftick=fRTCPRL+1.f_{\mathrm{tick}}=\frac{f_{\mathrm{RTC}}}{\mathrm{PRL}+1}.

例如 LSE 为 32768 Hz,PRL=32767 时,理想步进为1 Hz。实际走时误差仍取决于晶体容差、负载电容、温度、布局和校准。

  • 仅要求上电期间计时,可以由 VDD 工作,不必为了“使用 RTC”一律装备用电池。
  • 要求主电源消失后继续计时,应有有效 VBAT,并选择在备份供电条件下可运行的 LSE 路径。
  • 没有独立备用源时,把 VBAT 按官方建议接 VDD,不能期待整板掉电后时间继续推进。

选择 RTC 时钟或重置备份域可能影响已有时间和寄存器。应用常用备份标志判断是否首次初始化,但标志本身不是掉电永不丢失的存储,也不能省略对时钟和状态有效性的检查。

不用 PC13,也不用其备份域复用

跳转到“不用 PC13,也不用其备份域复用”

PCB 未连接与数字输入缓冲悬空是不同问题。确认没有 Tamper、RTC 输出和外部负载要求后,可在程序中将 PC13 配成模拟输入,避免普通数字输入缓冲在不确定电平下工作。

以下是 STM32F1 HAL 的配置片段,只表示 GPIO 接入方法:

static void ConfigureUnusedPC13(void)
{
__HAL_RCC_GPIOC_CLK_ENABLE();
GPIO_InitTypeDef pin = {0};
pin.Pin = GPIO_PIN_13;
pin.Mode = GPIO_MODE_ANALOG;
HAL_GPIO_Init(GPIOC, &pin);
}

前提是工程已经包含匹配器件的 HAL 头文件,并在合法初始化阶段调用。该代码不应覆盖已经分配给 Tamper 或 RTC 输出的 PC13;也不需要为了配置一个 GPIO 而强制复位整个备份域。

此处不把“模拟模式”理解为 PC13 自动成为可用的 ADC 采样通道。F1 的 GPIO 模式名称描述输入缓冲配置,可采样的通道仍由芯片引脚功能表决定。

使用 RTC,但不需要 PC13 输出或 Tamper

跳转到“使用 RTC,但不需要 PC13 输出或 Tamper”

RTC 内部计数不要求 PC13 必须接线。保持相关复用功能关闭,并按未使用引脚策略处理 PC13;若 PCB 留测试点,需考虑测试点带来的负载、静电和误接。

PC14/PC15 是否接 LSE 晶振由 RTC 时钟方案决定。选 LSE 时按晶体负载和布局设计这两个脚,不同时把它们作为普通 GPIO。

先在备份域中确定唯一需要的功能,再查看 BKP 寄存器互斥关系。TPE 防篡改输入与校准时钟输出 CCO、闹钟/秒输出选择 ASOE 等不能不加区分地同时打开。

RTC校准时钟、秒脉冲和闹钟输出是不同信号。测到一个周期性输出,不等于获得某一时刻的完整时间戳,也不证明主电源掉电后所有控制位都会保持。

例如CCO输出RTC时钟的64分频,其控制位会在VDD断电时复位;ASOE/ASOS控制闹钟或秒输出,手册规定它们由备份域复位清除。校准值用于按规定跳过部分时钟脉冲以减慢走时,并不是任意正负方向都可调的频率源。

5. Tamper 为什么需要稳定的外部电平

跳转到“5. Tamper 为什么需要稳定的外部电平”

F103 的 Tamper 功能可在有效电平出现时清除备份数据寄存器。BKP_CR 中 TPAL 选择有效极性:TPAL=0为高有效,TPAL=1为低有效;启用 TPE 后,必须保证正常状态停留在无效电平。

假设设计为高有效:

PC13 ────── 检测触点/检测电路
│
外部下拉(满足输入、电流和备份域要求)
│
GND

这只是逻辑示意,不能代替完整电气设计。触发源、拉电阻和供电需要在 VDD 掉电而 VBAT 有效时仍满足条件。若正常状态靠一个随 VDD 断电的上拉/缓冲器维持,掉电后可能浮动或触发,从而意外清空 BKP_DRx。

若启用TPE时引脚已经处于有效电平,也会检测到事件,不必等待下一次边沿。按RM0008,事件检测并清除后,在重新写备份数据前应通过TPE禁用并重新启用检测,防止触发条件仍存在时错误恢复数据;改变TPAL极性也应遵守手册规定的禁用顺序。

不要把 Tamper 清除备份寄存器误写为“一定擦掉主 Flash”或“所有时间状态都按同一方式清空”。清除对象、标志处理与复位范围按 BKP/RTC 章节分别确定。

如果当前产品只需正常上电运行且没有防篡改需求,可从“复用关闭、未用引脚明确配置”开始;如果需掉电计时或防篡改,应把 VDD/VBAT切换、LSE、外部偏置、输出负载和数据恢复流程一起测试。不能仅凭旧 Tiger 项目描述推断当前 PCB 最佳方案。

本页已全文核对原资料,并逐项对照 DS16554、RM0008。HAL 片段只核对接口和配置意图,没有为真实板卡构建完整 HAL 工程或验证电池电流、LSE 起振、掉电输出和 Tamper 行为。