STM32学习笔记(18)-数据的保存和毁灭_第1页
STM32学习笔记(18)-数据的保存和毁灭_第2页
STM32学习笔记(18)-数据的保存和毁灭_第3页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、数据的保存和消灭 2和以前学到的有关数据保存不同,这里的数据保存还有“保密之意,即一旦受到意外的侵入,STM32将消灭数据。这是通过 Tamper机制来实现的。以下是数据手册中的有关说明:5.3.1 侵入检测当TAMPE引脚上的信号从0变成1或者从1变成0取决于备份控制存放器BKP_CR勺TPAL 位 ,会产生一个侵入检测事件。 侵入检测事件将所有数据备份存放器内容去除。 然而为了 防止丧失侵入事件, 侵入检测信号是边沿检测的信号与侵入检测允许位的逻辑与, 从而在侵 入检测引脚被允许前发生的侵入事件也可以被检测到。 当TPAL=0时:如果在启动侵入检测TAMPE引脚前通过设置TPE位该引脚已经

2、为高 电平,一旦启动侵入检测功能,那么会产生一个额外的侵入事件尽管在TPE位置1'后并没 有出现上升沿 。 当TPAL=1时:如果在启动侵入检测引脚TAMPER|通过设置TPE位该引脚已经为低 电平,一旦启动侵入检测功能,那么会产生一个额外的侵入事件尽管在TPE位置1'后并没 有出现下降沿 。设置BKP_CS存放器的TPIE位为1',当检测到侵入事件时就会产生一个中断。在一个侵入事件被检测到并被去除后,侵入检测引脚 TAMPE应该被禁止。然后,在再次写 入备份数据存放器前重新用TPE位启动侵入检测功能。这样,可以阻止软件在侵入检测引脚 上仍然有侵入事件时对备份数据存放器

3、进行写操作。这相当于对侵入引脚 TAMPE进行电平 检测。注:当V DD电源断开时,侵入检测功能仍然有效。为了防止不必要的复位数据备份存放器,TAMPE引脚应该在片外连接到正确的电平。显然,Tamper需要硬件与之配合。以上数据手册描述了硬件配置时的一些注 意事项。1可以是把引脚由低电平到高电平认为是一次侵入, 也可以把引脚从高电平变到低电平认为是一次侵入,这通过TPAL来设置。5.43备份控制存放腳B KP_CR)科就地対 0x30Vf-; OMXXXJQm)5MU131109«7G5i12 i0rm.TFEmP1S21¥.训.即烬讣力0TP AL:壮 j STAMPER

4、 J«I|-0; F上人检 JTmMPEJHI 上;: Jhum;!.:" - kTPE1 XlU1r整人检議TAMP日HI押上的低电金卅|味"fj血戡衿柑 k itTFEp 1TFfi: UYSTAMPER ;iOr "人 口KT AMP氛$| II fl 为汕U101网时设和PAL科TPE褪赶垒妄金的.尿叫请廉戟着A、'、生 令穀酸鼓扎拿ft购故 护肌ETFE仙 /1 TPAL ;f&2Tamper机制需要被启动才能起作用。但在启动之前,如果引脚已处于设定的状态,那么一旦启动,就会产生一次Tamper事件,这需要注意,否那么会引起数据

5、的意外丧失而不自觉。3即便芯片上的 VDD电源断开,只要仍有 VBAT,那么Tamper检测仍是有效的,因此,设计硬件时必须要小心, 如果某设计是将 Tamper引脚通过上拉电阻接 VDD 并在这个引脚上接入机械开关到地。如果开关导通,那么就是一次Tamper事件,这个没有问题。但是,如果电源断开 VDD变低,也会引发一次 Tamper事件,而这往往并不是设 计都的本意。因此,这个引脚的上拉电阻必须接到VBAT而不是接到VDD4总的来说,TAMPERS不复杂,下面来看一看代码。1JT eapar这次是用的STM32库中的这个例子。有关LED的设置,这里就不再重复了,和上一篇文章数据的保存与消灭

6、 1 相同。/* En able write access to Backup doma in */PWR_BackupAccessCmd(ENABLE);这是翻开BKP功能。/* Clear Tamper pin Eve nt(TE) pending flag */BKP_ClearFlag();去除 Tamper 事件/* Tamper pin active on low level */BKP_TamperPinLevelConfig(BKP_TamperPinLevel_Low);配置 Tamper 引脚究竟是高电平有效还是低电平有效,这个再研究一下,继续跟踪:/* brief Con

7、figures the Tamper Pin active level.* param BKP_TamperPinLevel: specifies the Tamper Pin active level.* This parameter can be one of the following values:* arg BKP_TamperPinLevel_High: Tamper pin active on high level* arg BKP_TamperPinLevel_Low: Tamper pin active on low level* retval None*/void BKP_

8、TamperPinLevelConfig(uint16_t BKP_TamperPinLevel)/* Check the parameters */assert_param(IS_BKP_TAMPER_PIN_LEVEL(BKP_TamperPinLevel);*(_IO uint32_t *) CR_TPAL_BB = BKP_TamperPinLevel;CR_TPAL_B又是什么呢?/* Alias word address of TPAL bit */#define CR_OFFSET(BKP_OFFSET + 0x30)#define TPAL_BitNumber0x01#defi

9、 ne CR_TPAL_BB (TPAL_BitNumber * 4)(PERIPH_BB_BASE + (CR_OFFSET * 32) +要看懂上面有关CR_TPAL_B啲相关定义及理解为何这样写,恐怕又要涉及到 Con tex的另一个重要内容,即bit-ba nd ,这个暂不深究,留待下次学习(说句闲话:bit-ba nk 我早就看到,就是没有兴趣深入了解,因为没觉得什么地方有用到,今天既其用途,改 日必去改看,所以只有动起来,才能学更多的东西)。这里只管当它是能够直接设定该 平是0或都是1就行了。即根据实参决定 BKP_CF中的TPAL究竟是0还是1。可选参数为:#defi ne BK

10、P_TamperPi nLevel_High(ui nt16_t)0x0000)#defi ne BKP_TamperPi nLevel_Low(ui nt16_t)0x0001)BKP的其他用途:BKP的存放器可以用来存储RTC校验值的校验存放器。在PC13管脚(当该管脚不用于侵入检测时)上输出RTC校准时钟,RTC闹钟脉 冲或者秒脉冲为方便测量,RTC时钟可以经64分频输出到侵入检测引脚 TAMPE上。通过 设置RTC校验存放器(BKP_RTCCR勺CCO&来开启这一功能。 通过配置CAL6:0位,此时 钟可以最多减慢121ppmt542 RTC时钟校准存放器(BKP_RTCCR&

11、gt;W'MIfliifSi 0k2C11nn札 himOmOOOOOOOOP15:8IW:昭谀为Q.f<9ASOS:別"知'L迪山討fA&OSP i-J 和边Ml TAMPERr>imi上皆出的皐闱忖竝加 们趴0: IftHiflTC砌钟非冲11输訓件林冲巾耀曉帳不篙皿的轧何航淸常ASQE:九注输他刪帅幽涉味冲BWKASGS付的枚W.冲输时疋TA财PER引押上摘出皓it的电鹰为一WTC时钟的MM. itn fASOERH车億开门川(7CGOi M HHMeHOt丘越喈削业悅站吋以在慨入检甜切事覘卅$64加颠:的RTTCad U'iCCOl

12、 - ?' 1!-.'.必蝕瞪阖桂入心卑功能说就免松曲判无用的觀片:气VDDT.咽.託“讨.匪心:CAL6:0;坨卅W'j 2 7和耿冲 即“琴少牡卄 肚冲龍雜试 这町以用*U俯丁和;检J1L U1000000/(220H>pnnhr LHEQ i:i::ffTCIl'tltiil .'JQ-121ppmF面以RTC的那个例子为例,来看一看如何用Tamper(PC13)引脚来送出信号。/*翻开PWF和KBP模块的时钟信号 */RCC_APB1PeriphClockCmd(RCC_APB1Periph_PWR | RCC_APB1Periph_BKP

13、, ENABLE);/*允许对BKP进行存取*/PWR_BackupAccessCmd(ENABLE);/* 禁止引脚的TAMPE功能*/BKP_TamperPi nCmd(DISABLE); /* To output RTCCLK/64 on Tamper pin, thetamper function ality must be disabled */* 允许时钟信号在TAMPE引脚输出*/BKP_RTCOutputCo nfig(BKP_RTCOutputSource_CalibClock);这样就可以了,也不复杂。需要说明的一点是,PC13这个引脚 不需要被配置成输出引脚,但在这一时刻

14、 它是起到输出作用的。BKP_RTCOutputConfig()这个函数中所用到的参数可以有这样的一些:BKP_RTCOutputSource_ None不允许在Tamper引脚输出信号BKP_RTCOutputSource_CalibClock在Tamper引脚上输出RTC时钟经64分频后的频率信号BKP_RTCOutputSource_Alarm在Tamper引脚上输出RTC报警信号RTCOutputSource_Seco nd在Tamper引脚上输出秒信号经测试,(1)在Tamper引脚上输出的信号,不受复位的影响!当然,这是有条件的,条件是复位时不 会执行到操作RTC的相关代码。(2)

15、 在用J-LINK写入代码时,Tamper引脚输出的信号,不受影响,照样输出! 断电之后再上电,Tamper引脚送出的信号,不受影响,照样输出!(4)去掉VBAT供电端的电力供给,断电,再上电,Tamper引脚送出的信号消失!判断:前面的程序写的有关标志被保存在BKP区域,不断电不会消失。这是否对电池的寿命有影响呢?毕竟送出波形也会有消耗的。最后用两个图来结束,分别是运行时的BKP内容和POWER RESET CLOCK勺内容。RCC.CR | &(03030083厂 CSSON & HSEON厂 HSEBYP(7 HSERDrr7 H$!R0Yv HSIONPPRE1:4 H

16、CLK/2WCO |o No dock二PPRE20 HCLKSW2 PUdodc二HPRE0 SYSCLKSWS2 PlldoekuMdAOCPRE0 PCLK2/2RCC.CFGR |acOClD34dACortroL StatusRCC.CSR I&01000000Backup domar cortrolACCJDCR |&(00008103 r BDRSTPLL ConhgurabonV PHON F PLLRDYV PLLSRC r PLLXTPREPILMUL r7PLLOoek*9 创厂 LPWRRSTF 厂 WWDGRSTFT IWDGRSTF 厂 SFTRST

17、F 厂 PORRSTF r PINRSTF P RMVF 厂 LSIROY 厂 LSONRTCSEL |1 LSEP RTCEN r LSEBYP3 LSERDY I? LSEONClock rtenupcRX.CIR SOOOOOOOO JCSSC 厂 CSSIE 厂 CSSFJUNLNC 厂 UNLKIE 厂 UNLKFPower CortreJ & SlatutPWR.CR S6666OIOOPWR.CSR |(kOOOOOOOOCore i Memory and Penpheral ClocksRTCCLK J 32768 kHzMCO | 0.000000 MHz IWDGCLK |32 768 kHz USBCLK | 48.000000 MHz ADCCLK | 36.000000 MHzJPLLRDX: _JHSERDYC JHSIRMC _JLSERDYC

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论