stm32 RTC-TAMPER 和BKP介绍 

本文介绍了STM32的备份寄存器(BKP)和RTC侵入检测(TAMPER)功能。BKP是用于存储用户数据的16位寄存器,即使在电源断开或系统复位时也能保持数据。RTC-TAMPER提供了入侵检测功能,当检测到篡改时,会清除备份寄存器数据并触发中断。这些特性在电力计量和安全应用中尤其重要,如智能电表防篡改设计。
AI助手已提取文章相关产品:

关于BKP的中文参考手册摘录

BKP简介

备份寄存器是42个16位的寄存器,可用来存储84个字节的用户应用程序数据。他们处在备份域

里,当VDD电源被切断,他们仍然由VBAT维持供电。当系统在待机模式下被唤醒,或系统复位或

电源复位时,他们也不会被复位。

此外,BKP控制寄存器用来管理侵入检测和RTC校准功能。

复位后,对备份寄存器和RTC的访问被禁止,并且备份域被保护以防止可能存在的意外的写操

作。执行以下操作可以使能对备份寄存器和RTC的访问。

● 通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟

● 电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问。

关于复位摘录。

STM32F10xxx支持三种复位形式,分别为系统复位、上电复位和备份区域复位。

6.1.1

系统复位

除了时钟控制器的RCC_CSR寄存器中的复位标志位和备份区域中的寄存器(见图4)以外,系统

复位将复位所有寄存器至它们的复位状态。

当发生以下任一事件时,产生一个系统复位:

1. NRST引脚上的低电平(外部复位)

2. 窗口看门狗计数终止(WWDG复位)

3. 独立看门狗计数终止(IWDG复位)

4. 软件复位(SW复位)

5. 低功耗管理复位

可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。

软件复位

通过将Cortex™-M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’,可实现软件复

位。请参考Cortex™-M3技术参考手册获得进一步信息。

低功耗管理复位

在以下两种情况下可产生低功耗管理复位:

1. 在进入待机模式时产生低功耗管理复位:

通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。这时,即使执行了进入待

机模式的过程,系统将被复位而不是进入待机模式。

2. 在进入停止模式时产生低功耗管理复位:

通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。这时,即使执行了进入停机

模式的过程,系统将被复位而不是进入停机模式。

备份区域拥有两个专门的复位,它们只影响备份区域(见图4)。

当以下事件中之一发生时,产生备份区域复位。

55/754

1. 软件复位,备份区域复位可由设置备份域控制寄存器 (RCC_BDCR)(见6.3.9节)中的

BDRST位产生。

2. 在VDD和VBAT两者掉电的前提下,VDD或VBAT上电将引发备份区域复位。

tamper应用案例

电力和能源计量,配电公司可能会根据一天中的时间、最大需求、负载等有不同的计费费率,从而使实时时钟 (RTC) 成为电子电表提供时间参考的重要组成部分。黑客可能会篡改时钟或操纵时间来欺骗系统并以不同的方式充电,例如,将下午1点更改深夜1点,以便在此期间的非峰值负载而降低计量固件的收费。RTC通常依赖于32.768 kHz外部晶体振荡器,黑客可以更改RTC晶体。这在测量和计费中引入了不准确。

————————————————

版权声明:本文为优快云博主「鲨丁丁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.youkuaiyun.com/SharkDingYu/article/details/127765942

①可以增加检测功能,如在智能电表的外壳上增加TAMPER引脚检测功能,当外壳被打开时就可以生成一个入侵检测信号,以下是IAmAProgrammer的防拆机电路设计的回答:

②当外壳被打开,检测到入侵信号时,系统可以执行事先设定好的程序,去选择对入侵(攻击)的处理。

当然这种简单的入侵处理是存在缺陷的,随着时间的推移,这些开关往往会被氧化,当发生篡改时,这些开关由于氧化而保持原有的状态,因此可能永远不会向系统指示篡改事件。

清除备份数据寄存器的设计可以为密钥等敏感数据提供一个更为安全的存储空间。当黑客攻击设备切断主电源时,在系统恢复启动备选电源的过程中是存在一定的时间的,这个时间空隙里flash、EEPROM等数据空间会存在被盗取的可能。清除备份数据寄存器的设计可以有效防止黑客拿到敏感数据,从而为所欲为控制整个系统而不留痕迹。

————————————————

版权声明:本文为优快云博主「鲨丁丁」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.youkuaiyun.com/SharkDingYu/article/details/127765942

BKP意思是备份,可在主电源切断在,在备份电源的支持下,对程序数据进行保存;

Tamper 意思是入侵,检测引脚为GPIOC.13,当Tamper引脚检测到入侵事件的时候,就会清楚BKP寄存器的数据,并给CPU发送一个入侵事件中断,CPU可以对此做一个处理;

入侵事件检测是通过对比GPIOC.13现在的电平与BKP寄存器中备份的电平比较,一但有电位不一致就会认为发生入侵事件

————————————————

版权声明:本文为优快云博主「小孙小孙,看着认真」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

原文链接:https://blog.youkuaiyun.com/sunmaotaostm/article/details/104735669/

您可能感兴趣的与本文相关内容

<think>首先,用户的问题是关于STM32微控制器的TAMPER-RTC功能配置及使用问题。用户提到了引用[1][2],这些引用是关于STM32RTC管脚作为Tamper使用,涉及防篡改实时时钟功能。 关键点从引用中: - TAMPER引脚用于检测侵入事件(如机壳被打开)。 -TAMPER引脚上的信号变化(从0到1或1到0,取决于BKP_CR寄存器的TPAL位),会产生侵入检测事件,清除所有备份寄存器内容。 - 配置包括TPAL位设置:TPAL=0时为上升沿或高电平触发,TPAL=1时为下降沿或低电平触发。 - 电路设计包括开关、电阻、电容等,用于防抖动防干扰。 用户意图是解决STM32 TAMPER-RTC功能的配置使用问题,可能涉及如何设置寄存器、电路设计、以及如何避免误触发等。 我的回答需要: - 使用中文。 - 结构清晰,逐步解决问题。 - 确保内容真实可靠,基于STM32参考手册或可靠来源。 - 在行内数学表达式中使用$...$格式(如寄存器的位值),在独立公式中使用$$...$$格式(如果需要)。 - 生成相关问题。 - 在引用末尾添加引用标识,如[^1]。 结构化回答: 1. **引言**:简要介绍TAMPER-RTC功能。 2. **配置步骤**:详细说明如何配置TAMPER引脚,包括寄存器设置。 3. **电路设计**:解释推荐的电路连接。 4. **使用注意事项**:讨论如何避免误触发、处理侵入事件等。 5. **示例代码**:如果适用,提供代码片段(但用户问题主要是硬件配置,可能不需要代码)。 6. **相关问题**:生成相关问题。 确保内容可靠:基于STM32参考手册(如STM32F1系列参考手册),因为引用[2]提到了备份控制寄存器BKP_CR等。 关键寄存器: - BKP_CR (Backup Control Register):包含TPE (Tamper Pin Enable) TPAL (Tamper Pin Active Level) 位。 - 当TPE=1时启用Tamper检测。 - TPAL决定触发条件:0为上升沿或高电平,1为下降沿或低电平。 侵入事件处理: - 事件发生后,备份寄存器被清除,需要重新启用Tamper检测。 电路设计:如引用中所述,使用开关、上拉电阻、RC电路等。 回答大纲: 1. **理解TAMPER-RTC功能**:解释其目的(防篡改)。 2. **配置TAMPER引脚**: - 启用Tamper功能:设置BKP_CR寄存器的TPE位。 - 设置触发极性:TPAL位。 - 其他相关寄存器。 3. **硬件连接**:描述典型电路。 4. **软件处理**:如何初始化、处理中断(如果使用中断)。 5. **注意事项**:如避免在Tamper启用前引脚状态导致误触发。 6. **示例**:简要展示配置步骤。 7. **相关问题**。 生成相关问题: - 如何配置STM32Tamper中断? - Tamper功能在低功耗模式下的行为? - 如何恢复备份数据? - Tamper与其他安全功能的集成? 在回答中,引用用户提供的引用[^1][^2]。</think>### STM32 TAMPER-RTC功能配置及使用指南 STM32微控制器的TAMPER-RTC功能是一种硬件级防篡改机制,用于检测物理侵入(如机壳被打开),并通过实时时钟(RTC)备份域保护敏感数据(如加密密钥或配置参数)。当检测到侵入事件时,系统会自动清除备份寄存器(BKP_DRx)中的数据,确保安全性。以下内容基于STM32参考手册可靠工程实践,逐步解释配置、使用及注意事项[^1][^2]。 --- ### 1. TAMPER-RTC功能概述 TAMPER引脚(通常标记为TAMPER-RTC或类似)是RTC模块的一部分,属于备份域(由VBAT供电)。其核心机制: - **侵入检测**:当TAMPER引脚信号发生特定变化(取决于配置),触发侵入事件。 - **数据清除**:事件发生时,所有备份寄存器(BKP_DRx)内容被自动清零。 - **应用场景**:用于安全设备中,例如机壳防拆检测(机壳闭合时引脚为高电平,打开时为低电平)。 关键特性: - 工作独立于主电源(VDD),仅需VBAT供电。 - 支持边沿或电平检测,通过备份控制寄存器(BKP_CR)配置。 - 侵入事件后需手动重新启用Tamper功能,防止数据被意外覆盖。 --- ### 2. TAMPER引脚配置步骤 配置涉及寄存器操作硬件连接。以STM32F1系列为例(其他系列类似,寄存器名可能略异)。假设使用标准外设库或HAL库。 #### 步骤1: 初始化RTC备份域 - 启用PWRBKP时钟: ```c RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); ``` - 允许访问备份域: ```c PWR_BackupAccessCmd(ENABLE); ``` #### 步骤2: 配置Tamper引脚 - 设置BKP_CR寄存器: - **TPE (Tamper Pin Enable)**:置1启用Tamper检测。 - **TPAL (Tamper Pin Active Level)**:决定触发条件: - $ \text{TPAL} = 0 $:上升沿或高电平触发(引脚从0→1变化,或初始高电平导致立即触发)。 - $ \text{TPAL} = 1 $:下降沿或低电平触发(引脚从1→0变化,或初始低电平导致立即触发)。 - 示例代码(设置TPAL=1,下降沿触发): ```c BKP_TamperPinCmd(ENABLE); // 启用TPE BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low); // 设置TPAL=1 ``` #### 步骤3: 处理侵入事件 - 事件发生时,BKP_CSR寄存器的TEF位(Tamper Event Flag)被置1。 - 清除事件标志并重新初始化: ```c if (BKP_GetFlagStatus() == SET) { // 检查TEF位 BKP_ClearFlag(); // 清除标志 BKP_TamperPinCmd(DISABLE); // 禁用Tamper // 重新配置备份数据(可选) BKP_TamperPinCmd(ENABLE); // 重新启用Tamper } ``` - **注意**:侵入事件后必须先禁用再启用Tamper功能,避免引脚状态残留导致误操作[^2]。 --- ### 3. 硬件电路设计 为确保可靠检测,TAMPER引脚需外部电路配合(基于引用[^2]的推荐): - **典型电路**: - 机壳闭合时,开关S1闭合,TAMPER引脚通过上拉电阻R1连接到VBAT(高电平)。 - 机壳打开时,S1断开,引脚接地(低电平)。 - 添加RC滤波(如R2C1)防抖动,二极管D1防电流倒灌。 - 电路简图: ``` VBAT → R1 → TAMPER引脚 | +--- S1 → GND | C1 → GND | R2 → GND D1反向并联于S1(阴极接VBAT) ``` - **参数建议**: - R1: 10kΩ(上拉电阻,防止干扰)。 - R2C1: 组成低通滤波(如R2=1kΩ, C1=100nF),抑制开关抖动。 - D1: 1N4148二极管,保护VBAT。 --- ### 4. 使用注意事项 - **避免误触发**: - 初始化时,确保引脚状态与TPAL配置一致。例如,若设置TPAL=1(下降沿触发),初始化前引脚应为高电平,否则会立即触发事件[^2]。 -Tamper启用前,检查引脚电压(用万用表或ADC)。 - **低功耗模式**: - Tamper功能在待机模式下仍有效(仅需VBAT供电)。但需在进入低功耗前启用RTC- **数据恢复**: - 备份寄存器清除后不可恢复。建议定期将关键数据复制到Flash或其他安全存储。 - **中断处理**(可选): - 可配置Tamper中断(通过BKP_CSR寄存器),在事件时执行自定义处理程序: ```c BKP_ITConfig(ENABLE); // 启用Tamper中断 NVIC_EnableIRQ(TAMPER_IRQn); // 使能NVIC ``` --- ### 5. 示例配置流程 以下是一个完整初始化示例(使用STM32标准库): ```c #include "stm32f10x.h" void TAMPER_Init(void) { // 1. 启用时钟 RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE); PWR_BackupAccessCmd(ENABLE); // 2. 配置Tamper引脚 (TPAL=1, 下降沿触发) BKP_TamperPinCmd(ENABLE); BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low); // 3. 可选:启用中断 BKP_ITConfig(ENABLE); NVIC_SetPriority(TAMPER_IRQn, 0); NVIC_EnableIRQ(TAMPER_IRQn); } // Tamper中断服务函数 void TAMPER_IRQHandler(void) { if (BKP_GetITStatus() == SET) { BKP_ClearITPendingBit(); // 清除中断标志 // 处理侵入事件,例如记录日志或复位系统 BKP_TamperPinCmd(DISABLE); // 禁用并准备重新启用 // ... 用户代码 ... BKP_TamperPinCmd(ENABLE); } } ``` --- ### 相关问题 1. **如何避免STM32 Tamper功能的误触发?** (涉及引脚初始化状态检查、RC滤波电路优化) 2. **Tamper事件后如何安全地重新启用备份寄存器?** (讨论禁用-重新启用序列及数据恢复策略) 3. **STM32Tamper功能在电池供电(VBAT)下的功耗是多少?** (分析备份域电流消耗及低功耗设计) 4. **能否将Tamper引脚与其他RTC功能(如闹钟)同时使用?** (解释RTC模块资源冲突及解决方案) 5. **如何集成Tamper功能与STM32的硬件加密模块?** (探讨安全启动、数据擦除等高级应用) [^1]: STM32RTC管脚作为Tamper使用(RTC-TAMPER)。防篡改实时时钟:确保您的嵌入式系统安全 - EDN。 [^2]: STM32TAMPER-RTC管脚作为Tamper使用。在此做个备忘记录。转自https://www.cnblogs.com/shangdawei/p/3551812.html。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值