网站优化关键词怎么做外贸一般在哪些网站

当前位置: 首页 > news >正文

网站优化关键词怎么做,外贸一般在哪些网站,陕西百度公司,品牌建设与质量培训BKP备份寄存器RTC实时时钟 VDDA和VSSA是内部模拟部分的电路 VDD和VSS_1、2、3是内部数字电路的供电。系统以VDD开头的电源都是主电源。在正常使用STM32时#xff0c;全部需要接到3.3v电源上。 VBAT备用电池供电引脚#xff0c;如使用STM32内部的BKP和RTC#xff0c;引…BKP备份寄存器RTC实时时钟 VDDA和VSSA是内部模拟部分的电路 VDD和VSS_1、2、3是内部数字电路的供电。系统以VDD开头的电源都是主电源。在正常使用STM32时全部需要接到3.3v电源上。 VBAT备用电池供电引脚如使用STM32内部的BKP和RTC引脚必须接备用电池用来维持BKP和RTC在VDD主电源掉电后的供电这里备用电池只有一跟正极的引脚接电池时电池正极接VBAT,电池负极和主电源负极接在一起供地。TAMPER引脚产生的侵入事件将所有备份寄存器内容清除TAMPER是一个接到stm32外部的引脚这个TAMPER是一个安全保障设计如果你做一个安全系数非常高的设备设备需要有防拆功能然后BKP里也存储了一些敏感数据这些数据不能被别人窃取或者篡改那你就可以使用这个TAMPER引脚的侵入检测功能。 设计电路时TAMPER引脚可以先加一个默认的上拉或者下拉电阻然后引一根线到你的设备外壳的防拆开关或触点别人一拆开你的设备触发开关就会在TAMPER引脚产生上升沿或者下降沿这样STM32就检测到侵入事件了这时BKP的数据会自动清零并且申请中断你在中断里还可以继续保护设备比如清除其他存储器数据然后设备锁死这样来保障设备的安全另外主电源断电后侵入检测仍然有效这样即使设备关机也能防拆。RTC引脚输出RTC校准时钟、RTC闹钟脉冲或者秒脉冲其中外部用设备测量RTC校准时钟可以对内部RTC微小的误差进行校准。 闹钟脉冲或者秒脉冲可以输出出来为别的设备提供这些信号这是RTC时钟输出的功能。因为PC13、temple和RTC这三个引脚共用一个端口所以这三个功能同一时间只能使用一个。存储RTC时钟校准寄存器这个可以配合上面这个校准时钟输出的功能结合一些测量方法可以对RTC进行校准那这两个功能实际上就是RTC的配置设计者目前就是把这两个RTC的功能放在BKP里了。我们使用的C8T6是中容量设备所以可以看出BKP的容量其实非常小一般只能用来存储少量的参数。 BKP基本结构 BKP的基本结构这个图中橙色部分我们可以叫做后备区域BKP处于后备区域但后备区域不只有BKP还有RTC的相关电路也位于后备区域。 STM32后备区域的特性就是当VDD主电源掉电时后备区域仍然可以由VBAT的备用电池供电当VDD主电源上电时后备区域供电会切换到VDD主电源有电时VBAT不会用的这样可以节省电池电量。 然后BKP是位于后备区域的BKP里主要有数据寄存器、控制寄存器、状态寄存器和RTC时钟校准寄存器其中数据寄存器是主要部分用来存储数据的每个数据寄存器都是16位的也就是一个数据寄存器可以存两个字节那对于中容量和小容量的设备里面有DR1、DR2一直到DR10总共十个数据寄存器那一个寄存器存两个字节所以容量是20个字节。总共是42个数据寄存器容量是84个字节。BKP功能这里的侵入检测可以从PC13位置的TAMPER引脚引入一个检测信号当TAMPER产生上升沿或者下降沿时清除BKP所有的内容以保证安全。时钟输出,可以把RTC的相关时钟从PC13位置的RTC引脚输出数据供外部使用其中输出较准时钟时再配合这个校准寄存器可以对RTC的误差进行校准。 RTC介绍 20位的可编程预分频器可适配不同频率的输入时钟保证分频器输出给计数器的频率为1Hz计时才正确。 RTCCLK频率比较高需要加一个分频器来降频。加了一个20位的可编程预分频器可以对选择的输入时钟进行1~2^20的范围分频这可适配不同频率的输入时钟。
H开头是高速L开头是低速。E结尾是外部I结尾是内部。高速时钟一般供内部程序运行和主要外设使用低速时钟一般供RTC看门狗使用。 RTCCLK有三个来源第一个是OSC引脚接的HSE外部高速晶振这个晶振是主晶振我们一般都用的8MHZ通过128分频可以产生RTCCLK信号因为这个8MHz的晶振太快了如果不提前分频直接给RTCCLK后续即使再通过RTC的20位分频器也分不到1Hz这么低的频率。 中间是时钟来源是LSE外部低速晶振我们在oc32这两个引脚接上外部低速晶振这个晶振产生的时钟可以直接提供给RTCCLK这个osc32的晶振是内部RTC的专用时钟通常跟RTC有关的晶振都是统一的数值就是32.768KHz一方面是32.768KHz这个值附近的频率是晶振工艺比较合适的频率另一方面是2的15次方等于32768所以32.768KHz经过一个15位分频器的自然溢出就能很方便地得到1Hz的频率。 第三路时钟源来自于LSI内部低速rc振荡器LSI固定是40KHz如果选择LSI当做RTCCLK后续再经过40k的分频就能得到1Hz的计数时钟了当然内部的RC振荡器一般精度没有外部晶振高所以LSI给RTCCLKl可以当做一个备选方案另外LSI还可以提供给看门狗。 总结 最常用的就是中间这一路外部32.768KHz的晶振提供RTCCLK的时钟。 第一个原因就是中间这一路32.768KHz的晶振本身就是专供RTC使用的上下这两路其实是有各自的任务上面这一路主要作为系统主时钟下面这一路主要作为看门狗时钟他们只是顺带可以备选当做RTC的时钟。 另外一个原因只有中间这一路的时钟可以通过VBAT备用电池供电上下两路时钟在主电源断电后是停止运行的所以要想实现RTC主电源掉电继续走时的功能必须得选择中间这一路的RTC专用时钟如果选择的是上下两路时钟主电源断电后时钟就暂停了这显然会导致走时出错。 RTC框图 左边这一块是核心的分频和计数计时部分右边这一块是中断输出使能和NVIC部分上面这一块是APB1总线读写部分下面这块是PWR关联的部分。 灰色填充的部分都处于后备区域这些电路在主电源掉电后可以使用备用电池维持工作另外这里还写了这些模块在待机时都会继续维持供电其他未被填充的部分就是待机时不供电。 首先看分频和计数器计数部分这一块的输入时钟是RTCCLKRTCCLK的来源需要在所以RTCCLK进来首先需要经过RTC预分频器进行分频这个分频器由两个计算器组成上面这个是重装载寄存器RTC_PRL下面这个RTC_DIV手册里叫做余数寄存器实际上是计数器的作用。 分频器其实就是一个计数器记几个数溢出一次就几分频所以对于可编程的分频器来说需要有两个寄存器一个寄存器用来不断的计数另一个寄存器我们写入一个计数目标值用来配置是几分频。 那在这里上面这个PRL就是计数目标我们写入六那就是七分频写九那就是十分频因为计数指包含了零。然后下面这个DIV就是每来一个时钟计一个数的用途了当然这个DIV计数器啊是一个自减计数器每来一个输入时钟DIV的值自减一次自减到0时再来一个输入时钟DIV输出一个脉冲产生溢出信号同时DIV从PRL获取重装值回到重装值继续自减。 计数计时部分32位可编程计数器RTC_CNT就是计时最核心的部分把这个计数器看作是Unix时间戳的秒计数器这样借助time.h的函数就可以很方便地得到年月日时分秒了。 这个RTC还设计的有一个闹钟寄存器RTC_ALR这个ALR也是一个32位的寄存器作用是设置闹钟我们可以在ALR写一个秒数设定闹钟当CNT的值跟ALR设定的闹钟值一样时也是这里的等号啊如果两个值相等就代表闹钟响了这时就会产生RTC_Alarm闹钟信号通往右边的中断系统在中断函数里你可以执行相应的操作。 同时闹钟还兼具一个功能闹钟信号可以让STM32退出待机模式比如你设计一个数据采集设备需要在环境非常恶劣的地方工作比如海底高原深井这些地方然后要求是每天中午12点采集一次环境数据其他时间为了节省电量避免频繁换电池芯片都必须处于待机模式这样的话我们就可以用这个RTC自带的闹钟功能定一个中午12点的闹钟闹钟一响芯片唤醒采集数据完成后继续待机另外这个闹钟值是一个定值只能响一次所以如果你想实现周期性的闹钟大家每次闹钟响之后都需要再重新设置下一个闹钟时间就是这个闹钟和闹钟唤醒的一个用途。 中断部分的在左边这里有三个信号可以触发中断 RTC_Second秒中断它的来源就是cnt的输入时钟如果开启这个中断那么程序就会每秒进一次RTC中断。 RTC_Overflow溢出中断它的来源是CNT的右边意思就是CNT的32位计数器计满溢出了会触发一次中断所以这个中断一般不会触发。这个CNT定义的是无符号数到2106年才会溢出所以这个中断在2106年会触发一次你可以让芯片罢工然后提示当前设备过老请及时更换但在2106年之后这个stm32的RTC就不太好用了。 RTC_Alarm闹钟中断当计数器和闹钟值相等时触发中断同时闹钟信号可以把设备从待机模式唤醒。 中断信号到右边这里这一块是中断标志位和中段输出控制这些F结尾的是对应的中断标志位IE结尾Interrupt ENABLE的是中断使能最后三个信号通过一个或门汇聚到NVIC中断控制器。 APB1总线和APB1接口就是程序读写寄存器的地方读写寄存器可以通过APB1总线来完成。另外RTC是APB1总线上的设备
最后下面退出待机模式有一个WKUPweak up引脚闹钟信号和WKUP引脚都可以唤醒设备WKUP引脚引脚图PA0的位置它兼具唤醒的功能。 RTC基本结构 RTC的核心部分如图所示 最左边是RTCCLK时钟来源这块需要在RCC里配置三个时钟选择一个当做RTCCLK之后RTCCLK先通过预分频器对时钟进行分频余数寄存器是一个自减计数器存储当前的计数值重装寄存器是计数目标决定分频值分频之后得到1Hz的秒计数信号通向32位计数器一秒自增一次下面还有个32位的闹钟值可以设定闹钟如果不需要闹钟的话下面这一块可以不用管。 然后右边有三个信号可以触发中断分别是秒信号、计数器溢出信号和闹钟信号三个信号先通过中断输出控制进行中断使能使能的中断才能通向NVIC然后向CPU申请中断。 在程序中配置数据选择器可以选择时钟来源配置重装寄存器可以选择分频系数配置32位计数器可以进行日期时间的读写需要闹钟的话配置32位闹钟值即可需要中断的话先允许中断再配置NVIC最后写对应的中断函数即可这是RTC外设的主要内容。 硬件电路 在最小系统电路上外部电路还要额外加两部分第一部分就是备用电池第二部分就是外部低速晶振首先备用电池供电部分我这里给了两个参考电路第一个是简单连接使用一个3v的电池负极和系统共地正极直接接到stm32 的VBAT引脚。 参考来源是数据手册在5.1.6供电方案这里就给出来这个图图上画的是直接接一个1.8~3.6v的电池到VBAT。另外在内部是有一个供电开关的当VDD有电时开关拨到下面后备电路由VDD供电当VDD没电时开关拨到上面后备电路由VBAT供电。 第二种方案是推荐连接这种连接方法是电池通过二极管D1向VBAT供电另外主电源的3.3V也通过二极管D2向VBAT供电最后VBAT再加一个0.1uf的电源滤波电容。 供电方案的参考来源是stm32的参考手册在这个4.1.2电池备份区域其中手册里有几个建议所以综合这两条建议我们可以设计出右边的推荐连接。 电池和主电源都加一个二极管防止电流倒灌VBAT加一个0.1uf的电源滤波电容0.1uf就是100nf如果没有备用电池就3.3V的主电源供电如果接了备用电池3.3v没电时就是备用电池供电这是根据参考手册设计的推荐电路。
如果你只是进行实验那使用左边的简单连接就行了如果你要画板子设计产品那还是推荐使用右边的连接这样更保险。 外部低速晶振部分这是一个典型的晶振电路了这里X1是一个32.768KHz的RTC晶振这个晶振不分正负极两端分别接在OSC32 这两个引脚上然后这两端再分别接一个启动电容到GND这个电路的设计参考来源还是stm32的数据手册。 在5.3.6外部时钟源特性这里有参考电路使用一个晶体或陶瓷谐振器产生的低速外部时钟CL1和CL2上面这里写了对于CL1和CL2建议使用高质量的5pF~15pF之间的瓷介电容器所以在这里给出的晶振电路是这样的起振电容给的是10pF。 纽扣电池
上图片是备用电池我们一般可以选择这样的3v纽扣电池型号是CR2032另外注意这个纽扣电池印字的这一面是正极然后32.768KHz的晶振。 我们可以选择这样的一个金属壳柱状体的晶振这个晶振也是比较常见这是32.768KHz的晶振晶振的全称是石英晶体振荡器所以我们常说的石英钟名称就来源于这样一个元件。
然后是这个是我们的最小系统板这个板子自带的有RTC晶振电路这里这个黑色的元件写的有32.768k这个也是一种样式的RTC晶振然后旁边这个金属壳柱状体是8MHz的外部高速晶振。 不过我们这个板子没有自带备用电池VBAT引脚直接通过右上角的这个端口引出来了如果需要备用电池的话可以接以上就是RTC的硬件电路部分。 RTC操作注意事项 如果你要使用BKP或者RTC都要先执行这两步第一步开启PWR和BKP的时钟第二步使用PWR使能BKP和RTC的访问。 这一步对应代码里的一个库函数就是RTC等待同步一般在刚上电的时候调用一下这个函数就可以。要求我们在APB1总线刚开机时要等一下RTCCLK只要RTCCLK来一个上升沿RTC把它的寄存器的值同步到APB1总线上这样之后读取的值就都是没问题的了这是设计细节的一个问题只需要在初始化时调用一个等待同步的函数就行了。 这一条其实比较简单就是RTC会有一个进入配置模式的标志位CNF位把这一位置1才能设置时间其实这个操作在库函数中每个写寄存器的函数它都自动帮我们加上了这个操作所以我们就不用再单独调用函数进入配置模式了。 这个操作也是调用一个等待的函数就行了就写入之前要等待一下如果上一次的写入还没完成你就别急着写下一次了或者说每次写入之后你要等待RTOFF为1只有RTOFF为1才表示写完成。 为什么要有这个操作呢其实还是因为这里的PCLK1和RTCCLK时钟频率不一样你用PCLK1的频率写入之后这个值还不能立刻更新到RTC的寄存器里因为RTC寄存器是由RTCCLK驱动的所以PCLK1写完之后得等一下RTCCLK的时钟RTCCLK来个上升沿值更新到RTC寄存器里整个写作过程才算结束了。在代码里也就是调用一个等待函数的事。
手册