MSPM0 LFSS低功耗子系统:RTC、看门狗与篡改检测的实战配置

发布时间:2026/6/29 21:28:30
MSPM0 LFSS低功耗子系统:RTC、看门狗与篡改检测的实战配置 1. 项目概述与LFSS核心价值在嵌入式系统尤其是电池供电的物联网设备、便携式医疗仪器和智能仪表中功耗是决定产品生命周期的核心指标。很多场景下系统大部分时间处于休眠或深度睡眠状态但一些关键功能比如精确计时、系统状态监控和异常事件记录必须持续运行。如果让整个主控芯片MCU的核心域VDD/VCORE一直工作来维持这些功能无异于让一台汽车为了看时间而一直不熄火电池续航将无从谈起。德州仪器TI的MSPM0 H-Series微控制器提供了一个非常巧妙的解决方案低功耗子系统Low-Frequency Subsystem, LFSS。你可以把它想象成MCU内部一个独立的“守夜人”模块。当主系统CPU、高速外设进入休眠甚至完全断电时这个“守夜人”依靠一个极低功耗的32kHz时钟和独立的电源域VBAT继续工作忠实地执行计时、看门狗监控和事件记录等任务。LFSS的核心价值在于功能隔离与功耗优化。它将所有依赖低频时钟或需要在低功耗模式下保持活跃的外设整合在一起由独立的电源和时钟网络驱动。这意味着即使主电源VDD被切断只要VBAT引脚有电比如一颗纽扣电池RTC就能继续走时看门狗仍在默默计数篡改检测引脚也保持着警惕。这对于需要日历功能、定时唤醒、系统安全监控或事件时间戳记录的应用来说是至关重要的基础架构。2. LFSS架构与核心组件深度解析LFSS不是一个单一的外设而是一个集成了多个关键功能的子系统。理解它的整体架构是进行有效配置和问题排查的前提。2.1 系统组成与电源域划分LFSS的“完全体”包含以下核心组件但具体到某一款MSPM0芯片需要查阅其数据手册以确认支持哪些功能实时时钟RTC_x提供日历和计时功能支持闹钟、周期性时间事件和温度补偿。根据供电方式分为RTC_AVBAT独立供电和RTC_BVDD主电源供电两种变体。独立看门狗定时器IWDT一个独立的“监督员”拥有自己的时钟源。如果软件未能按时“喂狗”它会触发系统复位防止程序跑飞。在带VBAT的型号中它甚至拥有独立的电源真正做到“独立”。篡改检测输入/输出TIO模块最多16个专用的GPIO用于检测物理篡改如开盖。这些引脚在VDD掉电后可由VBAT维持供电继续监测状态并可以触发时间戳记录或擦除敏感数据。便签存储器SPM一小块由VBAT维持的RAM用于在主电源失效时保存关键数据如系统状态、事件日志或校准参数。专用电池备份电源域PDB和VBAT引脚这是LFSS实现“独立”的物理基础。它为上述模块提供独立的供电路径。这里有一个关键概念电源域。MSPM0的LFSS设计涉及两个主要电源域VDD/VCORE域主域为CPU、内存和大多数高速外设供电。休眠时此域可能被关闭。PDB电池备份域由VBAT引脚供电专门为LFSS内的模块RTC, IWDT, TIO, SPM供电。只要VBAT有电这个域就始终活跃。2.2 时钟系统LFCLK详解LFSS的心脏是一个32.768kHz的低频时钟LFCLK。这个频率是经过精心选择的因为它易于分频得到标准的1Hz秒信号32768 2^15同时自身功耗极低。LFCLK可以由两个源产生LFXT低频晶体振荡器连接外部32.768kHz晶体精度高但需要外部元件。LFOSC内部低频RC振荡器片内集成无需外部元件但精度相对较低受温度和电压影响。时钟控制位实际上位于系统控制模块SYSCTL中而非LFSS寄存器内。这是一个需要注意的细节。在VBAT备份域存在的设备中LFCLK的配置会被“影子锁存器”保持即使VDD掉电再上电配置也不会丢失LFSS模块可以无缝恢复工作。而对于没有VBAT的型号VDD掉电后LFSS会停止工作上电后需要软件重新配置。注意在初始化LFSS尤其是RTC之前务必先通过SYSCTL模块使能和选择LFCLK的时钟源例如启动LFXT并等待其稳定。很多新手会直接去配置RTC寄存器却发现RTC不工作问题往往就出在这里。2.3 复位机制与电源管理LFSS的复位逻辑比主系统复位更复杂因为它涉及两个电源域。VBAT POR上电复位当VBAT引脚电压从无到有超过某个阈值时触发。这会复位整个PDB域包括RTC计数器等。这通常发生在首次安装电池或电池完全耗尽后更换时。VBAT BOR欠压复位当VBAT电压跌落到安全工作阈值以下时触发同样会复位PDB域。这是为了防止在电压不足时逻辑状态出错。软件POR请求通过写LFSSRST.VBATPOR寄存器需特定KEY可以模拟VBAT电源拔插的效果强制复位整个PDB域。这个功能主要用于开发调试例如测试系统从完全掉电恢复的流程。在生产代码中应谨慎使用。一个重要的特性是主域的VDD BOR复位不会影响PDB域。只要VBAT电压足够PDB域及LFSS内的状态就会保持。这确保了即使主电源因干扰短暂跌落RTC时间也不会丢失。2.4 RTC与IWDT的锁定功能在安全或高可靠性应用中防止软件跑飞或外部干扰意外修改关键配置至关重要。LFSS为此提供了硬件锁定机制。RTC锁定RTCLOCK当RTCLOCK.PROTECT位被置1需要写入特定KEY0x22RTC的时间寄存器SEC, MIN, HOUR等、时钟控制寄存器CLKCTL以及LFSS复位请求寄存器LFSSRST将变为只读。这可以防止错误代码或地址线扰动导致时间被篡改。需要修改时间时必须先解锁写PROTECT0。IWDT锁定WDTLOCK类似地WDTLOCK.PROTECT位KEY0xBD可以锁定看门狗使能WDTEN和配置寄存器WDTCTL。一旦锁定看门狗的使能状态和超时时间就无法再被修改确保了看门狗策略的不可篡改性。TIO锁定TIOLOCK锁定篡改I/O的控制和心跳寄存器。锁定操作是不可逆的吗不是。锁定位本身是可写的在提供正确KEY的前提下因此可以在需要时如产品校准阶段解锁、修改、再重新锁定。但在最终产品部署时通常会在初始化完成后立即锁定。3. 关键模块配置与实操指南理解了架构我们进入实战环节。下面我将以典型的带VBAT的MSPM0型号为例拆解RTC和IWDT的配置流程和代码片段。3.1 实时时钟RTC配置与使用RTC的配置相对复杂需要按步骤进行。以下是一个完整的RTC初始化和设置时间的流程步骤1使能LFCLK时钟源这是前置条件在SYSCTL模块中完成。// 假设使用外部32.768kHz晶体 (LFXT) SYSCTL-CLKCFG | SYSCTL_CLKCFG_LFXT_EN; // 使能LFXT while(!(SYSCTL-CLKCFG SYSCTL_CLKCFG_LFXT_GOOD)); // 等待晶体起振稳定 SYSCTL-CLKCFG | SYSCTL_CLKCFG_LFCLK_SEL_LFXT; // 选择LFXT作为LFCLK源步骤2使能RTC模块时钟通过LFSS的CLKCTL寄存器将LFCLK供给RTC模块。LFSS-CLKCTL | LFSS_CLKCTL_MODCLKEN_MASK; // 使能RTC模块时钟步骤3配置RTC工作模式通过CTL寄存器设置例如选择BCD码格式或二进制格式以及时间事件触发频率。LFSS-CTL 0; // 使用默认值二进制格式每分钟产生时间事件 // 或者设置为BCD码格式每小时产生事件 // LFSS-CTL LFSS_CTL_RTCBCD_MASK | LFSS_CTL_RTCTEVTX_1;步骤4设置初始时间和日期在写入时间前建议先检查RTC是否已处于运行状态通过STA.RTCRDY或复位标志避免重复初始化导致时间重置。// 等待RTC就绪确保可以安全写入时间值 while(!(LFSS-STA LFSS_STA_RTCRDY_MASK)); // 解锁RTC寄存器如果需要默认是未锁定的 LFSS-RTCLOCK 0x22 24; // 写入KEY0x22到高位字节 LFSS-RTCLOCK ~LFSS_RTCLOCK_PROTECT_MASK; // 清除PROTECT位解锁 // 设置时间2024年12月31日星期二23点59分50秒 (二进制格式) // 注意YEAR寄存器是16位二进制数范围0-4095。 LFSS-YEAR 2024; LFSS-MON 12; LFSS-DAY (31 8) | (2 0x07); // 高5位为日期(1-31)低3位为星期(0-6, 0周日) LFSS-HOUR 23; LFSS-MIN 59; LFSS-SEC 50; // 重新锁定RTC寄存器可选用于产品固化 LFSS-RTCLOCK 0x22 24; // 写入KEY LFSS-RTCLOCK | LFSS_RTCLOCK_PROTECT_MASK; // 置位PROTECT位锁定步骤5配置并启用闹钟RTC支持两个独立的闹钟Alarm 1 2可以基于分钟、小时、日期或星期匹配触发中断。// 设置 Alarm 1 在每天12点30分触发 LFSS-A1MIN (1 15) | (3 12) | (0 8); // AMINAEBCD1 (使能), 分钟BCD值30 LFSS-A1HOUR (1 15) | (1 12) | (2 8); // AHOURAEBCD1, 小时BCD值12 // 不匹配日期和星期则每天触发 LFSS-A1DAY 0; // 不使能日期和星期匹配 // 使能RTC Alarm 1中断 LFSS-IMASK | LFSS_IMASK_RTCA1_MASK; // 在NVIC中使能LFSS中断具体中断号查数据手册 NVIC_EnableIRQ(LFSS_IRQn);步骤6配置预分频定时器除了秒以上的日历RTC还提供三个高分辨率预分频定时器RT0PS, RT1PS, RT2PS用于产生更频繁的周期性中断如244us, 15.6ms, 4s等。// 配置预分频定时器0每250ms中断一次 // PSCTL.RT0IP 位域控制周期查表可知 250ms 对应值 0x5 LFSS-PSCTL (LFSS-PSCTL ~LFSS_PSCTL_RT0IP_MASK) | (5 LFSS_PSCTL_RT0IP_SHIFT); // 使能预分频定时器0中断 LFSS-IMASK | LFSS_IMASK_RT0PS_MASK;步骤7中断服务程序ISR处理在LFSS中断服务程序中需要读取IIDX寄存器来识别最高优先级的中断源并清除相应的中断标志。void LFSS_IRQHandler(void) { uint32_t intIdx LFSS-IIDX 0xFF; // 读取中断索引 switch(intIdx) { case 0x03: // RTC Alarm 1 // 处理闹钟事件 // ... 用户代码 ... // 清除中断标志读IIDX已自动清除也可手动写ICLR LFSS-ICLR LFSS_ICLR_RTCA1_MASK; break; case 0x05: // RTC Prescale Timer 0 // 处理250ms定时任务 // ... 用户代码 ... LFSS-ICLR LFSS_ICLR_RT0PS_MASK; break; // ... 处理其他中断源 ... default: break; } }3.2 独立看门狗IWDT配置与喂狗IWDT的配置必须一次成功因为一旦锁定或启用错误的操作会导致系统立即复位。步骤1配置看门狗参数必须在使能前通过WDTCTL寄存器设置超时周期和时钟分频。时钟源是独立的LFCLK32kHz。// 解锁WDT配置寄存器如果需要 LFSS-WDTLOCK 0xBD 24; // 写入KEY0xBD LFSS-WDTLOCK ~LFSS_WDTLOCK_PROTECT_MASK; // 解锁 // 配置看门狗时钟不分频CLKDIV0超时周期约为 2^12 / 32768 ≈ 0.125秒 LFSS-WDTCTL (0 LFSS_WDTCTL_CLKDIV_SHIFT) | (4 LFSS_WDTCTL_PER_SHIFT); // PER4 对应 2^12次计数。超时时间 (2^PER) / (LFCLK / (CLKDIV1)) // 计算4096 / (32768 / 1) 0.125秒 // 重新锁定配置强烈建议 LFSS-WDTLOCK 0xBD 24; LFSS-WDTLOCK | LFSS_WDTLOCK_PROTECT_MASK;步骤2使能看门狗使能操作需要特定的KEY写错会导致POR复位。这是一项安全设计。// 使能看门狗 LFSS-WDTEN 0xEE 24; // 写入KEY0xEE到高字节 LFSS-WDTEN | LFSS_WDTEN_ENABLE_MASK; // 置位ENABLE位 // 一旦使能看门狗计数器立即开始递减。步骤3定期“喂狗”在主循环或关键任务中必须定期向WDTCNTRST寄存器写入特定的值0x03A7以重置计数器。写入任何其他值都会立即触发看门狗复位// 正确的喂狗操作 LFSS-WDTCNTRST 0x03A7; // 错误的操作示例会导致立即复位 // LFSS-WDTCNTRST 0x1234; // 错误 // LFSS-WDTCNTRST 0x03A6; // 错误 // LFSS-WDTCNTRST 0x03A8; // 错误关键经验不要在中断服务程序ISR中盲目喂狗。如果程序跑飞的原因是主循环卡死但某个定时器中断还在正常运行那么在ISR中喂狗会掩盖这个故障。正确的做法是在主循环的多个关键节点设置“生命信号”并在主循环中检查这些信号并喂狗。或者使用一个由RTC预分频器触发的、周期略小于看门狗超时时间的“守护任务”来喂狗该任务优先级最低确保只有主流程正常时它才能被执行。3.3 篡改检测TIO与时间戳应用TIO模块是LFSS的安全卫士。它允许你将最多16个GPIO配置为篡改检测引脚并在事件发生时自动捕获当前的RTC时间到时间戳寄存器中。步骤1配置TIO引脚每个TIO引脚通过TIOCTL[y]寄存器独立配置。// 配置 TIO0 为输入启用上拉检测下降沿并启用时间戳捕获 uint32_t tioctl_val 0; tioctl_val | (1 0); // IOMUX 1: 引脚由LFSS控制VDD掉电后仍有效 tioctl_val | (2 8); // POLARITY 2: 检测下降沿 tioctl_val | (3 12); // FILTEREN 3: 约200us数字滤波防抖动 tioctl_val | (1 16); // PIPU 1: 使能内部上拉 tioctl_val | (1 18); // INENA 1: 使能输入路径 LFSS-TIOCTL[0] tioctl_val; // 解锁TIO配置寄存器 LFSS-TIOLOCK 0x18 24; LFSS-TIOLOCK ~LFSS_TIOLOCK_PROTECT_MASK; // 启用TIO0触发时间戳捕获 LFSS-TSCTL 0xC5 24; // 写入KEY LFSS-TSCTL | LFSS_TSCTL_TSTIOEN0_MASK; // 使能TIO0时间戳 // 可以选择捕获模式TSCAPTURE0为首次事件1为末次事件 // 锁定TIO配置 LFSS-TIOLOCK 0x18 24; LFSS-TIOLOCK | LFSS_TIOLOCK_PROTECT_MASK;步骤2处理篡改事件当TIO0引脚上出现下降沿时当前RTC时间会被快照到TSSEC、TSMIN...TSYEAR这一组寄存器中同时TSSTAT.TSTIOEVT0标志置位并可产生中断。// 在LFSS中断中处理 void LFSS_IRQHandler(void) { uint32_t intIdx LFSS-IIDX 0xFF; if(intIdx 0x09) { // TIO0 事件索引 // 读取时间戳 uint16_t ts_year LFSS-TSYEAR; uint8_t ts_mon LFSS-TSMON; uint8_t ts_day LFSS-TSDAY; uint8_t ts_hour LFSS-TSHOUR; uint8_t ts_min LFSS-TSMIN; uint8_t ts_sec LFSS-TSSEC; // 记录或处理篡改事件发生的时间... // 清除时间戳状态和中断标志 LFSS-TSCLR 0xE2 24; // 写入KEY LFSS-TSCLR | LFSS_TSCLR_CLR_MASK; LFSS-ICLR LFSS_ICLR_TIO0_MASK; } }步骤3使用便签存储器SPM保存数据SPM是VBAT备份的RAM可以像普通内存一样读写但可以通过SPMWPROT寄存器对每个字节进行写保护并通过SPMTERASE寄存器设置其在篡改事件发生时是否自动擦除。// 向 SPMEM0 写入数据 LFSS-SPMEM[0] 0x12345678; // 保护 SPMEM0 的前两个字节防止误写 LFSS-SPMWPROT0 0xE8 24; // 写入KEY // WP_0_0 和 WP_0_1 对应 DATA0 和 DATA1 LFSS-SPMWPROT0 | (1 0) | (1 1); // 现在对 SPMEM[0] 的写操作低两个字节将被忽略高两个字节可写。 // 设置当TIO0发生篡改时自动擦除 SPMEM0 的全部四个字节 LFSS-SPMTERASE0 0xA3 24; // 写入KEY LFSS-SPMTERASE0 | 0x000F; // TE_0_3 ~ TE_0_0 全部置14. 低功耗模式下的LFSS行为LFSS的设计初衷就是为了在低功耗模式下工作。理解其在各种功耗模式下的状态至关重要。睡眠Sleep模式CPU停止外设时钟可能关闭但LFSS由LFCLK驱动RTC、IWDT、TIO、SPM均正常工作。闹钟、时间事件、看门狗、篡改检测均可唤醒系统。深度睡眠Deep Sleep模式高频时钟关闭更低功耗。LFSS依然正常工作因为它使用独立的LFCLK。关断Shutdown模式这是最低功耗模式VDD/VCORE域可能完全掉电。此时LFSS的行为取决于具体型号和供电对于带有VBAT引脚的型号只要VBAT有电PDB域保持供电RTC、IWDT、TIO、SPM全部保持运行。RTC闹钟可以作为一个唤醒源。对于无VBAT引脚的型号LFSS由VDD供电因此在此模式下LFSS停止工作。进入低功耗模式前的检查清单确认LFCLK已稳定运行SYSCTL-CLKCFG中的LFXTGOOD或LFOSCGOOD。确认RTC已正确初始化并运行LFSS-STA.RTCRDY。如果使用RTC闹钟唤醒请确保闹钟已正确设置并启用中断。如果使用IWDT确保喂狗逻辑不会在低功耗模式下被意外阻断考虑使用RTC预分频器中断喂狗。根据应用需求配置好TIO引脚的状态上拉/下拉输入/输出。5. 常见问题排查与调试心得在实际开发中你肯定会遇到各种问题。下面是我总结的一些常见坑点和解决方法。5.1 RTC不计数或时间不准症状设置时间后读取回来的值不变或者走时速度明显快/慢。排查步骤检查LFCLK时钟源这是最常见的原因。用示波器测量LFXTAL引脚是否有32.768kHz波形。如果没有检查晶体负载电容通常为12.5pF是否正确电路布局是否合理晶体尽量靠近芯片走线短。也可以尝试切换到内部LFOSC进行对比测试。检查RTC时钟使能确认LFSS-CLKCTL.MODCLKEN位已被置1。检查寄存器锁定尝试读取RTCLOCK.PROTECT位。如果被锁定时间寄存器是只读的你的写入操作被忽略了。需要先解锁。校准时钟如果使用内部LFOSC精度可能较差典型±5%。可以使用CAL寄存器进行软件校准。通过测量RTC输出的校准时钟可配置为1Hz等与高精度参考对比计算误差ppm值写入RTCOCALX和RTCOCALS进行补偿。带温度传感器的型号还可以使用TCMP寄存器进行动态温度补偿。5.2 独立看门狗IWDT意外复位症状系统频繁复位尤其是在低功耗模式唤醒后。排查步骤确认喂狗值必须且只能写入0x03A7。任何其他值都会导致立即复位。检查代码中所有LFSS-WDTCNTRST的赋值语句。检查喂狗时机在进入低功耗模式前最后一次喂狗到唤醒后第一次喂狗的时间间隔是否超过了IWDT超时时间在深度睡眠下IWDT仍在计数你需要计算最坏情况下的睡眠时间并相应设置更长的看门狗超时周期WDTCTL.PER。检查中断服务程序是否在某个高频中断里进行了喂狗这可能会掩盖主循环卡死的问题。重新评估喂狗策略。调试模式影响默认情况下当CPU被调试器暂停时IWDT也会暂停WDTDBGCTL.FREE0。如果你在调试时单步执行看门狗不会超时。但程序全速运行时就会复位。确保理解这一行为。5.3 篡改检测TIO误触发症状没有物理触碰却产生了篡改事件和时间戳。排查步骤启用数字滤波TIO引脚对噪声敏感。务必使用TIOCTL[y].FILTEREN字段启用数字滤波。根据环境噪声情况选择1~30us、2~100us或3~200us的滤波长度。配置上拉/下拉未使用的TIO引脚或处于高阻态的输入引脚容易拾取噪声。根据电路设计正确配置PIPU上拉或PIPD下拉电阻将引脚钳位到一个确定电平。检查电源完整性在VDD掉电、由VBAT供电期间如果VBAT电源不稳可能导致TIO逻辑状态紊乱。确保VBAT电源干净并在PCB布局时做好去耦。5.4 VBAT模式下的功耗异常症状在仅VBAT供电的关断模式下电流消耗远高于数据手册标称值通常应为亚微安级。排查步骤检查TIO引脚配置所有不用的TIO引脚如果IOMUX位为1由LFSS控制请将其配置为输出低电平或输入且使能内部下拉避免浮空输入产生漏电流。检查RTC输出是否无意中使能了RTC校准时钟输出到引脚检查相关引脚配置。测量VBAT引脚电流断开VBAT供电串联精密电流表隔离测量LFSS模块自身的功耗。检查PCB漏电VBAT线路是否与其他高压或高频线路靠得太近清洗PCB排除污染导致的漏电。5.5 时间戳寄存器读取为0或不变症状发生篡改事件后读取TSSEC等时间戳寄存器发现值全是0或者与当前RTC时间不符。排查步骤确认时间戳捕获已使能检查TSCTL寄存器中对应TSTIOENx位是否置1。检查捕获模式TSCTL.TSCAPTURE位决定是捕获第一个事件还是最后一个事件。如果事件频繁发生模式不同会导致时间戳差异。清除状态位时间戳寄存器在捕获事件后会被冻结直到TSCLR.CLR位被写入1配合KEY。在读取时间戳后如果需要记录新事件必须执行清除操作。但注意清除操作会清零所有时间戳寄存器和TSSTAT状态位。中断竞争如果篡改事件和RTC时间更新每秒一次几乎同时发生理论上存在极小的竞争风险。确保在中断中读取时间戳是安全的。6. 寄存器速查与关键位总结面对LFSS多达数十个寄存器开发时不必全部记住但需要知道关键控制位在哪里。下面这个表格整理了最核心的寄存器及其关键功能方便快速查阅。寄存器名称 (偏移地址)核心功能关键位/字段说明与注意事项CLKSEL (1004h)选择ULP外设时钟源LFCLK_SEL在SYSCTL模块。置1使能LFCLK给LFSS。必须先于LFSS模块初始化。CLKCTL (1100h)RTC时钟控制MODCLKEN置1使能32kHz时钟供给RTC模块。CTL (1108h)RTC控制RTCBCD,RTCTEVTX选择BCD/二进制格式设置时间事件每分钟/每小时等触发模式。SEC-YEAR (1118h-112Ch)RTC时间日期各字段设置或读取当前时间。注意DAY寄存器高5位是日期低3位是星期。A1MIN-A2DAY (1130h-1144h)RTC闹钟A*AEBCD,A*AEBIN,ADOWAE设置闹钟匹配值及使能位。注意BCD和二进制格式位互斥。PSCTL (1148h)预分频定时器RT0IP,RT1IP设置定时器0和1的中断间隔244us到2s。EXTPSCTL (114Ch)扩展预分频定时器RT2PS设置定时器2的中断间隔4s, 8s, 16s。TSCTL (116Ch)时间戳控制TSTIOENx,TSCAPTURE,TSVDDEN使能特定TIO或VDD掉电事件触发时间戳选择捕获模式。LFSSRST (11F0h)LFSS复位请求VBATPOR(KEY0x12)写1请求VBAT域POR复位用于调试模拟电池拔插。慎用。RTCLOCK (11FCh)RTC寄存器锁PROTECT(KEY0x22)置1锁定时间、时钟控制等寄存器防误写。WDTEN (1300h)看门狗使能ENABLE(KEY0xEE)置1使能IWDT。写错KEY或值会导致立即复位。WDTCTL (1308h)看门狗控制PER,CLKDIV(KEY0xC6)设置超时周期和时钟分频。必须在使能前配置。WDTCNTRST (130Ch)看门狗复位RESTART必须写入0x03A7来喂狗写其他任何值都会导致立即复位。WDTLOCK (13FCh)看门狗锁PROTECT(KEY0xBD)置1锁定WDTEN和WDTCTL寄存器。TIOCTL[y] (1200h)TIO控制IOMUX,POLARITY,FILTEREN,PIPU/PIPD配置引脚由谁控制、边沿检测、滤波和上下拉。TIOLOCK (12FCh)TIO锁PROTECT(KEY0x18)锁定TIOCTL和HEARTBEAT寄存器。SPMWPROTx (1500h-151Ch)SPM写保护WP_y_x(KEY0xE8)对SPMEM的每个字节进行写保护。SPMTERASEx (1540h-155Ch)SPM篡改擦除TE_y_x(KEY0xA3)设置特定字节在篡改事件发生时自动擦除。最后再分享一个调试小技巧在开发初期可以充分利用软件POR请求LFSSRST和RTC锁定功能。在代码中在LFSS初始化完成后可以暂时不锁定寄存器方便调试。但在进行低功耗电流测试或最终产品固化前务必记得将锁定功能启用并将所有不用的TIO引脚妥善配置这样才能确保系统在长期运行中的稳定性和安全性。LFSS是一个强大的工具箱用好了能为你的低功耗嵌入式产品带来极高的可靠性和附加值。