在STM32中,RTC TAMPER引脚用于入侵检测,当引脚上的信号从0变为1或从1变为0(取决于备份控制寄存器BKP_CR的TPAL位)时,会触发一个入侵检测事件,导致所有数据备份寄存器内容被清除。
为了防止错过入侵事件,入侵检测信号采用边沿检测方式,并与入侵检测允许位进行逻辑与运算。这意味着在启用入侵检测功能之前发生的入侵事件也能被检测到。
- 当TPAL=0时:如果在启用入侵检测功能(通过设置TPE位)之前,TAMPER引脚已经为高电平,则启用入侵检测功能时会产生一个额外的入侵事件(即使在TPE位置1后没有出现上升沿)。
- 当TPAL=1时:如果在启用入侵检测功能(通过设置TPE位)之前,TAMPER引脚已经为低电平,则启用入侵检测功能时会产生一个额外的入侵事件(即使在TPE位置1后没有出现下降沿)。
在检测到并清除一个入侵事件后,应禁用TAMPER引脚,然后再重新启用入侵检测功能(通过设置TPE位)。这样做可以防止软件在TAMPER引脚上仍有入侵事件时对备份数据寄存器进行写操作,相当于对TAMPER引脚进行电平检测。
注:当VDD电源断开时,入侵检测功能仍然有效。为了避免不必要的复位数据备份寄存器,TAMPER引脚应在片外连接到正确的电平。
解答:关于“当VDD电源断开时,入侵检测功能仍然有效。为了避免不必要的复位数据备份寄存器,TAMPER引脚应在片外连接到正确的电平。”这句话,这是硬件设计的一部分,不需要过度纠结。软件开发人员的责任是确保正确设置TAMPER引脚的电平信号。
- 当TPAL=0时,应将TAMPER引脚拉低。
- 当TPAL=1时,应将TAMPER引脚拉高(默认情况下,TAMPER引脚为高电平)。
问题二:
“在检测到并清除一个入侵事件后,应禁用TAMPER引脚。然后,在再次写入备份数据寄存器前重新启用入侵检测功能。这样做可以防止软件在TAMPER引脚上仍有入侵事件时对备份数据寄存器进行写操作,相当于对TAMPER引脚进行电平检测。”
解答:这里的关键在于防止数据备份寄存器在入侵事件未清除时被修改。如果在入侵事件发生后继续写入数据,可能会导致备份数据寄存器的内容被窃取。因此,禁用TAMPER引脚是为了保护数据的安全性。如果在配置入侵检测时禁用了中断,当入侵事件发生时,虽然不会进入中断处理子程序,但入侵事件标志位会被硬件改变,需要进一步验证数据寄存器是否会被自动清除。
参考链接:
http://blog.chinaunix.net/uid-26285146-id-3074111.html
https://www.cnblogs.com/perfy/p/4602560.html