第二十章 浅谈BKP

描述

单芯片解决方案,开启全新体验——W55MH32 高性能以太网单片机

W55MH32是WIZnet重磅推出的高性能以太网单片机,它为用户带来前所未有的集成化体验。这颗芯片将强大的组件集于一身,具体来说,一颗W55MH32内置高性能Arm® Cortex-M3核心,其主频最高可达216MHz;配备1024KB FLASH与96KB SRAM,满足存储与数据处理需求;集成TOE引擎,包含WIZnet全硬件TCP/IP协议栈、内置MAC以及PHY,拥有独立的32KB以太网收发缓存,可供8个独立硬件socket使用。如此配置,真正实现了All-in-One解决方案,为开发者提供极大便利。 

在封装规格上,W55MH32 提供了两种选择:QFN68和QFN100。

W55MH32Q采用QFN68封装版本,尺寸为8x8mm,它拥有36个GPIO、3个ADC、12通道DMA、17个定时器、2个I2C、3个串口、2个SPI接口(其中1个带I2S接口复用)、1个CAN以及1个USB2.0。在保持与同系列其他版本一致的核心性能基础上,仅减少了部分GPIO以及SDIO接口,其他参数保持一致,性价比优势显著,尤其适合网关模组等对空间布局要求较高的场景。紧凑的尺寸和精简化外设配置,使其能够在有限空间内实现高效的网络连接与数据交互,成为物联网网关、边缘计算节点等紧凑型设备的理想选择。 同系列还有QFN100封装的W55MH32L版本,该版本拥有更丰富的外设资源,适用于需要多接口扩展的复杂工控场景,软件使用方法一致。更多信息和资料请进入http://www.w5500.com/网站或者私信获取。 

此外,本W55MH32支持硬件加密算法单元,WIZnet还推出TOE+SSL应用,涵盖TCP SSL、HTTP SSL以及MQTT SSL等,为网络通信安全再添保障。 

为助力开发者快速上手与深入开发,基于W55MH32Q这颗芯片,WIZnet精心打造了配套开发板。开发板集成WIZ-Link芯片,借助一根USB C口数据线,就能轻松实现调试、下载以及串口打印日志等功能。开发板将所有外设全部引出,拓展功能也大幅提升,便于开发者全面评估芯片性能。 

若您想获取芯片和开发板的更多详细信息,包括产品特性、技术参数以及价格等,欢迎访问官方网页:http://www.w5500.com/,我们期待与您共同探索W55MH32的无限可能。

寄存器

第二十章 BKP

1 BKP 简介

备份寄存器是 42 个 16 位的寄存器,可用来存储 84 个字节的用户应用程序数据。他们处在备份域里,当 VDD 电源被切断,他们仍然由 VBAT 维持供电。当系统在待机模式下被唤醒,或系统复位或电源复位时,他们也不会被复位。

此外,BKP 控制寄存器用来管理侵入检测和 RTC 校准功能。复位后,对备份寄存器和 RTC 的访问被禁止,并且备份域被保护以防止可能存在的意外的写操作。

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

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

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

2 BKP 特性

⚪数据后备寄存器。

⚪用来管理防侵入检测并具有中断功能的状态/控制寄存器。

⚪用来存储 RTC 校验值的校验寄存器。

⚪在 PC13 引脚(当该引脚不用于侵入检测时)上输出 RTC 校准时钟,RTC 闹钟脉冲或者秒脉冲。

3 BKP 功能描述

3.1 侵入检测

当 TAMPER 引脚上的信号从'0'变成'1'或者从'1'变成'0'(取决于备份控制寄存器 BKP_CR 的 TPAL 位),会产生一个侵入检测事件。侵入检测事件将所有数据备份寄存器内容清除。然而为了避免丢失侵入事件,侵入检测信号是边沿检测的信号与侵入检测允许位的逻辑与,从而在侵入检测引脚被允许前发生的侵入事件也可以被检测到。

⚪当 TPAL=0 时:如果在启动侵入检测 TAMPER 引脚前(通过设置 TPE 位)该引脚已经为高电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在 TPE 位置'1'后并没有出现上升沿)。

⚪当 TPAL=1 时:如果在启动侵入检测引脚 TAMPER 前(通过设置 TPE 位)该引脚已经为低电平,一旦启动侵入检测功能,则会产生一个额外的侵入事件(尽管在 TPE 位置'1'后并没有出现下降沿)。

设置 BKP_CSR 寄存器的 TPIE 位为'1',当检测到侵入事件时就会产生一个中断。在一个侵入事件被检测到并被清除后,侵入检测引脚 TAMPER 应该被禁止。然后,在再次写入备份数据寄存器前重新用 TPE 位启动侵入检测功能。这样,可以阻止软件在侵入检测引脚上仍然有侵入事件时对备份数据寄存器进行写操作。这相当于对侵入引脚 TAMPER 进行电平检测。

注:当 VDD 电源断开时,侵入检测功能仍然有效。为了避免不必要的复位数据备份寄存器,TAMPER 引脚应该在片外连接到正确的电平。

3.2 RTC 校准

为方便测量,RTC 时钟可以经 64 分频输出到侵入检测引脚 TAMPER 上。通过设置 RTC 校验寄存器(BKP_RTCCR)的 CCO 位来开启这一功能。通过配置 CAL[6:0]位,此时钟可以最多减慢 121ppm。

4 例程设计

4.1 BKP_BackupData

UART 通信模块UART_Configuration函数:使能 USART1 和 GPIOA 时钟,配置 GPIO 引脚用于 UART 通信,初始化 USART 参数(波特率、数据位、停止位等),并使能 USART1。

······重定向printf函数:通过SER_PutChar和fputc函数将printf输出重定向到 USART1,方便通过串口输出调试信息。

备份寄存器操作模块WriteToBackupReg函数:将一系列递增的数据写入备份寄存器。数据从FirstBackupData开始,每个寄存器的值递增0x5A。

······CheckBackupReg函数:检查备份寄存器中的数据是否与预期一致。若所有寄存器的数据都正确,返回 0;若有不一致,返回第一个不一致的寄存器索引加 1。

主函数模块初始化系统时钟、延时函数和 UART。

⚪使能备份寄存器和电源管理外设的时钟,清除备份寄存器标志。

⚪输出系统时钟信息和测试提示信息。

⚪检查复位标志RCC_FLAG_PORRST:若该标志置位,表明是 POR/PDR 复位,调用WriteToBackupReg函数写入数据,并输出写入成功信息。

······ 若该标志复位,调用CheckBackupReg函数检查数据,并根据检查结果输出相应信息。

⚪进入无限循环,保持程序运行。

4.2 BKP_Tamper

该例程是一个基于 W55MH32 的备份寄存器(Backup Registers)测试程序,用于验证备份寄存器的数据保存功能及篡改检测(Tamper Detection)机制。以下是程序的主要工作流程总结:

1. 初始化阶段

(1)使能电源和备份域时钟

 

RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP, ENABLE);

 

开启电源控制(PWR)和备份域(BKP)的时钟,为后续操作做准备。

(2)延时函数和串口初始化

 

delay_init();
UART_Configuration(115200);

 

⚪delay_init():初始化延时函数。

⚪UART_Configuration(115200):配置串口 1,波特率为 115200,用于调试信息输出。

(3)获取并打印时钟信息

 

RCC_GetClocksFreq(&clocks);
printf("SYSCLK: %3.1fMhz, HCLK: %3.1fMhz, PCLK1: %3.1fMhz, PCLK2: %3.1fMhz, ADCCLK: %3.1fMhzn", ...);

 

获取并打印系统各总线时钟频率,便于调试。

2. 备份域配置

(1)使能备份区域访问

 

PWR_BackupAccessCmd(ENABLE);

 

允许访问备份寄存器和 RTC 寄存器。

(2)配置篡改检测功能

 

BKP_TamperPinCmd(DISABLE);
BKP_ITConfig(DISABLE);
BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low);
BKP_ClearFlag();

 

⚪禁用篡改引脚和中断,设置引脚触发电平为低。

⚪清除备份域标志位。

(3)重新使能篡改检测

 

BKP_ITConfig(ENABLE);
BKP_TamperPinCmd(ENABLE);

 

使能篡改中断和引脚检测功能。

3. 写入备份寄存器

(1)写入数据

 

WriteToBackupReg(0xA53C);

 

向 42 个备份寄存器写入递增数据(起始值 0xA53C,每个寄存器递增 0x5A)。

示例写入值:0xA53C, 0xA596, 0xA5F0, ..., 0xA53C + 41×0x5A。

4. 验证数据完整性

(1)检查写入结果

 

if (CheckBackupReg(0xA53C) == 0x00)
    printf("Backup Data Write Successn");
else
    printf("Backup Data Write Failn");

 

CheckBackupReg() 函数遍历所有备份寄存器,验证数据是否与期望值一致。

若所有寄存器正确,打印成功信息;否则打印失败并返回错误寄存器索引。

5. 篡改检测机制

(1)中断配置

 

NVIC_Configuration();

 

配置篡改中断(TAMPER_IRQn)的优先级为抢占优先级 0,子优先级 0。

(2)中断处理函数

 

void TAMPER_IRQHandler(void)
{
    if (IsBackupRegReset() == 0)
        printf("Backup Tameper Attackn");  // 所有寄存器被复位,检测到篡改
    else
        printf("Backup Tameper No Attackn");  // 寄存器数据正常
    // 清除标志并重新使能篡改检测
}

 

⚪当篡改引脚(默认 PB12)检测到低电平触发时,触发中断。

⚪通过 IsBackupRegReset() 检查所有备份寄存器是否被复位:若全为 0x0000,说明数据被清除,报告攻击。

······否则,认为数据正常。

5 下载验证

5.1 BKP_BackupData

程序启动

⚪串口输出系统时钟频率信息,包含 SYSCLK、HCLK、PCLK1、PCLK2 和 ADCCLK 的频率,帮助确认系统时钟配置是否正确。

⚪显示 “Backup Data Test.”,表明开始进行备份数据测试。

⚪输出RCC->CSR寄存器的值。

上电复位或掉电复位情况

⚪若检测到 POR/PDR 复位标志(RCC_FLAG_PORRST)置位,串口输出 “POR/PDR Reset Flag Set”。

⚪随后调用WriteToBackupReg函数向备份寄存器写入数据,完成后串口输出 “Backup Data Write Success”。

非上电复位或掉电复位情况

⚪若检测到 POR/PDR 复位标志复位,串口输出 “POR/PDR Reset Flag Reset”。

⚪调用CheckBackupReg函数检查备份寄存器中的数据:若数据检查成功,串口输出 “Backup Data Check Success”。

······若数据检查失败,串口输出 “Backup Data Check Fail”。

程序持续运行

完成上述操作后,程序进入无限循环,持续运行但不再有其他输出,除非系统再次发生复位触发相应操作。

寄存器

5.2 BKP_Tamper

寄存器

WIZnet 是一家无晶圆厂半导体公司,成立于 1998 年。产品包括互联网处理器 iMCU™,它采用 TOE(TCP/IP 卸载引擎)技术,基于独特的专利全硬连线 TCP/IP。iMCU™ 面向各种应用中的嵌入式互联网设备。

WIZnet 在全球拥有 70 多家分销商,在香港、韩国、美国设有办事处,提供技术支持和产品营销。

香港办事处管理的区域包括:澳大利亚、印度、土耳其、亚洲(韩国和日本除外)。

审核编辑 黄宇

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分