第七章复位和系统时钟
第7章 RTL设计原则及技巧

7.2.2 流水线操作
图 7–2 串行多任务示意图 流水线操作,在每个组合逻辑块之间加入寄存器簇,所有的寄存 器采用一个公共的时钟信号来驱动,一旦时钟的有效沿到来,寄 存器就会把前一阶段所得出来的结果输出下一级组合逻辑块,否 则就一直等待。 当流水线刚开始加载的时候,数据会有一个等待时间,因此第一 个数据从输入到输出所经历的时间和非流水线操作的时间几乎相 等,第一个时间时产生的任务a1从开始到结束用时与有没有采用 流水线操作没有关系。
7.1.4同步原则
同步化设计,就是核心逻辑采用触发器来实现,电路的主要信号 都使用触发器来触动,尽量采用同一个时钟域的时钟进行驱动。 同步原则的好处在于它不仅可以很好的避免毛刺的产生,而且有 利于器件的移植,而最重要的是它可以产生较好的静态时延分析 报告。 进行同步设计的关键就是认真了解和掌握并且设计好整个系统的 时钟域的划分。
图 7–5 未采用资源共享的RTL线路图
图 7–6 未采用资源共享的资源利用报告
图 7–7 采用资源共享的R用报告
7.2.4逻辑复用操作
逻辑复用操作跟资源共享操作是一个相反过程。 逻辑复用是通过增加面积来改善时序条件的优化手段。 逻辑复用最常用的场合就是调整信号的扇出。 资源共享操作中的实现方法一就是一个逻辑复用的逆操作。 香农扩展定律则可以清楚地表明怎样把一个逻辑组合来实现逻辑 复用、提高频率。而卡诺图化简则相当于香农扩展的逆操作,相 当于资源共享操作。
7.1.3系统原则
CPLD/FPGA本身就一个系统的集合,需要以系统的眼光来看待和 设计CPLD/FPGA,以最优的设计方案来实现。 FPGA速度快、内部寄存器资源和布局布线丰富,因此适合于那些 实时性要求很高、频率又要快、寄存器消耗多的功能模块设计; 另外现在很多FPGA都内嵌DSP模块,因此适合于嵌入式DSP设计 。对于那些速度要求不是很高的功能模块,或者组合逻辑要求相 对丰富、输入输出管脚要求比较多的功能单元,则可以采用CPLD 来完成。 系统原则其实就是自顶向下的方式的具体化。CPLD/FPGA设计工 程师只有清楚了这些系统级的定义和规范才能开始芯片选型、具 体的逻辑模块的划分以及子模块的RTL设计。
STM32复位和时钟控制(RCC)

复位STM32F10xxx支持三种复位形式,分别为系统复位、电源复位和备份区域复位。
1、系统复位系统复位将所有寄存器设置成复位值,除了RCC_CSR(控制状态寄存器)中的相关复位标志位,通过查看RCC_CSR寄存器,可以识别复位源。
系统复位可由以下5种方式产生:1)外部引脚NRST复位(低电平触发);2)窗口看门狗(WWDG)计数终止3)独立看门狗(IDOG)计数终止4)软件复位(SW RESET),通过将中断应用和复位控制寄存器(Application Interrupt and Reset Control Register )中SYSRESETREQ位置1。
具体参考Cortex-M3 programming manual。
5)低功耗管理复位:①通过进入等待模式(StandBy)产生复位:通过User Option Bytes中设置nRST_STDBY位使能这种复位模式。
这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。
②通过进入停止模式(STOP)产生复位:通过User Option Bytes中设置nRST_STOP位使能这种复位模式。
这时,即使执行了进入停止模式的过程,系统将被复位而不是进入停止模式。
2、电源复位电源复位设置所有寄存器置初始值,除了备份区域。
电源复位可由以下2种方式产生:1)上电复位和掉电复位(POR/PDR reset)2)退出等待(StandBy)模式这些复位源都作用在NRST引脚上,并且在复位延迟期间保持低电平。
提供给设备的系统复位信号都由NRST引脚输出,对每一个内部/外部复位源,脉冲发生器都将保证一个20us最小复位周期。
对于外部复位,当NRST位置低时,将产生复位信号。
3、备份区复位备份区复位仅仅影响被分区域,有以下两种产生方式:1)软件复位,设置备份区域控制寄存器RCC_BDCR BDRST= 1;2)在V DD和V BAT两者掉电的前提下,V DD或V BAT上电。
时钟原理图

时钟原理图时钟原理图是指用来表示时钟工作原理的图表或图示。
时钟是我们日常生活中常见的时间测量工具,而时钟原理图则是用来解释时钟是如何运作的。
在时钟原理图中,通常包括了时钟的各个部件和它们之间的关联,以及时钟的工作原理和信号传输方式等内容。
下面我们将详细介绍时钟原理图的相关知识。
时钟原理图通常包括以下几个部分,时钟信号发生器、时钟信号输出、时钟信号分配、时钟信号接收和时钟信号处理。
时钟信号发生器是指产生时钟信号的部件,它可以是晶体振荡器、PLL(锁相环)或者其他类型的振荡器。
时钟信号输出是指时钟信号从时钟发生器传输出去的过程,它可以通过不同的方式输出,比如差分输出、单端输出等。
时钟信号分配是指将时钟信号传输到不同的模块或器件中,确保它们能够同步工作。
时钟信号接收是指接收外部时钟信号的部件,它可以是时钟缓冲器或者时钟分频器等。
时钟信号处理是指对时钟信号进行处理和调整,确保它符合系统的要求。
在时钟原理图中,各个部件之间的连接关系和信号传输路径也是非常重要的。
时钟信号的传输路径需要考虑信号的传输延迟、传输损耗以及信号的稳定性等因素。
因此,在设计时钟原理图时,需要对信号传输路径进行合理的规划和布局,以确保时钟信号的传输质量。
此外,时钟原理图还需要考虑时钟信号的频率、相位和抖动等特性。
时钟信号的频率是指每秒钟的脉冲数,它决定了时钟的计时精度。
时钟信号的相位是指信号的相对时间位置,它影响了时序电路的正常工作。
时钟信号的抖动是指信号的周期性波动,它会对系统的性能产生影响。
总之,时钟原理图是时钟工作原理的图示表示,它包括了时钟的各个部件和它们之间的关联,以及时钟的工作原理和信号传输方式等内容。
设计时钟原理图需要考虑时钟信号发生器、时钟信号输出、时钟信号分配、时钟信号接收和时钟信号处理等方面,以及各个部件之间的连接关系和信号传输路径。
同时,还需要考虑时钟信号的频率、相位和抖动等特性。
希望本文对时钟原理图有所帮助,谢谢阅读!。
第七章 定时计数器TPM

Slide 18
18
第七章 定时计数器TPM
模块寄Байду номын сангаас器
定时器x状态控制寄存器(TPMxSC)
数据位 定义 复位
D7 D6
D5
D4
D3
D2
D1
D0
TOF TOIE CPWMS CLKSB CLKSA PS2 PS1 PS0
0
0
0
0
0
0
0
0
D4、D3 — 时钟源选择位
CLKSB:CLKSA 预置输入的TPM
概述
5
第七章 定时计数器TPM
定时器系统的特性
总共8个通道 每一个TPM的所有通道都可以 配置成为带缓冲的中心对齐脉 宽调制模式(CPWM)
概述
6
第七章 定时计数器TPM
定时器系统的特性
每一个TPM预分频器的时钟源 都可以独立选择总线时钟、固 定系统时钟或外部时钟:
预分频除数可以为1,2,4,8, 16,32,64或128 可以用外部时钟输入(仅对64管 脚的封装):TPM1用TPM1CLK ,TPM2用TPM2CLK
▪ 若fbus=2MHz,Pre=32,计数 间隔2MHz/32,即16μs计数一 次。如果TPMMOD=62500,则 得1秒溢出间隔。
▪ 自由计数是预置计数在TPMMOD =0000H时的特例
功能描述
12
第七章 定时计数器TPM
预置计数定时
▪ 向16位模数计数寄存器 TPMxMODH:TPMxMODL写入 一个确定的数值,则计数器每进 行一次计数都会将计数和模数计 数寄存器的值进行比较,如果相 同就产生溢出,同时置溢出标志 位TOF为1,然后重新开始计数, 溢出时若TOIE为1,还会产生中 断请求
单片机的时钟、时序及复位

四川工程职业技术学院单片机应用技术课程电子教案Copyright © 第讲58051及P89V51RD2单片机的时钟、时序和复位本讲主要内容5-1. 标准80C51的时钟电路、时间单位与时序5-2. P89V51RD2单片机的时钟电路、时间单位与时序5-3. P89V51RD2单片机的复位与复位电路时钟电路——用于产生供单片机各部分同步工作的时钟信号方法1:用石英晶体振荡器方法2:从外部输入时钟信号(80C51)80C51振荡器C1C2CYS80C51悬空外部时钟信号XTAL1XTAL2XTAL2XTAL1单片机内部的时间单位S1S2S3S4S5S6机器周期T CY分频器振荡器晶振周期时钟周期(S 状态)80C51P1P2ALE 信号单片机内部的时间单位✧振荡频率f osc = 石英晶体频率或外部输入时钟频率振荡周期= 振荡频率的倒数✧机器周期机器周期是单片机应用中衡量时间长短的最主要的单位在多数51系列单片机中:1机器周期= 12×1/ fosc✧指令周期——执行一条指令所需要的时间单位:机器周期51单片机中:单周期指令、双周期指令、四周期指令单片机内部的时间单位课堂练习:如果某单片机的振荡频率f=12MHz,则:osc振荡周期=S=mS=uS;机器周期=uS;已知乘法指令“MUL AB”是一条4周期指令,则执行这条指令需要uS;加法指令“ADD A,#01H”是单周期指令,那么1S内该单片机可以进行次加法运算。
单片机内部的时序单片机执行各种操作时,CPU都是严格按照规定的时间顺序完成相关的工作,这种时间上的先后顺序成为时序。
✧单周期指令的操作时序S1S2S3S4S5S61个机器周期P1P2ALE读操作码空读S1S2S3S4S5S61个机器周期P1P2ALE读操作码读第二字节单字节指令双字节指令单片机内部的时序✧双周期指令的操作时序S1S2S3S4S5S6第1机器周期P1P2ALE读操作码空读3次S1S2S3S4S5S6第2机器周期时钟电路✧时钟电路参数:频率范围:0~40MHz C1、C2:20~30pF80C51振荡器C1C2CYSXTAL2XTAL1P89V51RD2的两种时钟模式✧X1模式✧X2模式器件含有一个时钟加倍选项,可以加速器件的运行速度。
第七章复位和系统时钟

第七章复位和系统时钟7.1 复位复位,是系统开始正常运转前的一个必经过程,复位部分设计的好坏,关系体统的稳定。
STM32F10xxx 支持三种复位形式,分别为系统复位、上电复位和备份区域复位。
7.1.1 系统复位系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器(见图7-1-1)。
图7-1-1复位系统图当以下事件中的一件发生时,产生一个系统复位:1. NRST管脚上的低电平(外部复位)2. 窗口看门狗计数终止(WWDG复位)3. 独立看门狗计数终止(IWDG复位)4. 软件复位(SW复位)5. 低功耗管理复位可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。
软件复位,通过将Cortex™-M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’,可实现软件复位。
低功耗管理复位在以下两种情况下可产生低功耗管理复位:1. 在进入待机模式时产生低功耗管理复位:通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。
这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。
2. 在进入停止模式时产生低功耗管理复位:通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。
这时,即使执行了进入停机模式的过程,系统将被复位而不是进入停机模式。
7.1.2 电源复位当以下事件中之一发生时,产生电源复位:1. 上电/掉电复位(POR/PDR复位)2. 从待机模式中返回电源复位将复位除了备份区域外的所有寄存器。
(见图7-1-1) 图中复位源将最终作用于RESET管脚,并在复位过程中保持低电平。
复位入口矢量被固定在地址0x0000_0004。
备份区域拥有两个专门的复位,它们只影响备份区域。
7.1.3备份域复位当以下事件中之一发生时,产生备份区域复位。
软件复位,备份区域复位可由设置备份区域控制寄存器RCC_BDCR中的BDRST位产生。
同步复位和异步复位的比较:多时钟系统中复位的处理方法
同步复位和异步复位的比较3:多时钟系统中复位的处理方法这是一个很实际的问题,因为在较大型的系统中,一个时钟驱动信号显然不能满足要求,一定会根据系统的要求用多个同源时钟当然也可以是非同源了去驱动系统的不同部分;那么在这样的多时钟系统中,复位键怎么设置它的稳定与否直接关系到了整个系统的稳定性,因此要格外注意在我看来,复位信号在同步时序系统中的地位和时钟信号一样重要;下面就说一下具体的处理方法,当然所遵循的原则就仍应该是上文的“异步复位,同步释放”:reset removal:顾名思义,就是同一个系统中的多个同源时钟域的复位信号,由彼此独立的“reset synchronizer”驱动;当异步复位信号有效时,各时钟域同时复位,但是复位释放的时间由各自的驱动时钟决定,也是就说:时钟快的先释放,时钟慢的后释放,但是各复位信号之间没有先后关系;coordinated reset removal:这是相对于上述方式来说的,也就是说各时钟域的复位信号彼此相关,各个部分系统虽然也同时复位,但是却分级释放;而分级的顺序可由各个“reset synchronizer”的级联方式决定;可以先复位前级,再复位后级,也可以反过来;反正方式很灵活,需要根据实际需要而定;由于图片上传问题,我只能用程序表示了,大家凑或看吧,哈哈例子:三级复位系统,系统中的时钟分别为1M,2M,11M:第一级Reset_Sychronizer程序:module Reset_Synchronizeroutput reg rst_n,input clk, asyncrst_n;reg rff1;always posedge clk , negedge asyncrst_n beginif asyncrst_n {rst_n,rff1} <= 2'b0;else {rst_n,rff1} <= {rff1,1'b1};endendmodule第2,3级的Reset_Sychronizer程序:module Reset_Synchronizer2output reg rst_n,input clk, asyncrst_n, d;reg rff1;always posedge clk , negedge asyncrst_n beginif asyncrst_n {rst_n,rff1} <= 2'b0;else {rst_n,rff1} <= {rff1,d};endendmodule顶层模块的源程序:`include ""`include ""module AsynRstTree_Transinput Clk1M,Clk2M,Clk11M,SysRst_ n,output SysRst1M_n,SysRst2M_n,SysRst11M_n;Reset_Synchronizer Rst1M.clkClk1M,. asyncrst_n SysRst_n,.rst_nSysRst1M_n;Reset_Synchronizer2 Rst2M.clkClk2M,.d SysRst1M_n,.asyncrst_nSysRst_n,.rst_nSysRst2M_n;Reset_Synchronizer2 Rst11M.clkClk11M,.d SysRst2M_n,. asyncrst_nSysRst_n,.rst_nSysRst11M_n;endmodule最后,我要说明一下,这两种方法我都试过,复位都很稳定,但并没有明显看出孰优孰劣;不知个人高人是怎么在实际系统中用的,帮忙指点一下呀;哈哈。
微机原理与接口技术第七章课后答案
微机原理与接口技术第七章课后答案1、 Keil uVision 5集成开发环境中,钩选“creat Hex File”复选框后,默认状态下的机器代码文件名与()相同。
[单选题] *A、项目名(正确答案)B、文件名C、项目文件夹名D、主函数名2、 Keil uVision 5集成开发环境中,编译生成的机器代码文件的后缀名为() [单选题] *A、.mifB、.asmC、 .hex(正确答案)D、 .uvproj3、累加器与扩展RAM进行数据传送,采用的助记符是() [单选题] *A、MOVB、 MOVCC、MOVX(正确答案)D、 XCH4、对于高128字节,访问时采用的寻址方式是() [单选题] *A、直接寻址B、寄存器间接寻址(正确答案)C、变址寻址D、立即数5、对于特殊功能寄存器,访问时采用的寻址方式是() [单选题] *A、直接寻址(正确答案)B、寄存器间接寻址C、变址寻址D、立即数6、对于程序存储器,访问时采用的寻址方式是() [单选题] *A、直接寻址B、寄存器间接寻址C、变址寻址(正确答案)D、立即数7、定义变量x为8位无符号数,并将其分配的程序存储空间,赋值100,正确的是() [单选题] *A、unsigned char code x=100;(正确答案)B、 unsigned char data x=100;C、 unsigned char xdata x=100;D、 unsigned char bdata x=100;8、当执行P1=P1&0xfe;程序时相当于对P1.0进行()操作,不影响其他位。
[单选题] *A、置1B、清零(正确答案)C、取反D、不变9、当执行P2=P2|0x01;程序时相当于对P2.0进行()操作,不影响其他位 [单选题] *A、置1(正确答案)B、清零C、取反D、不变10、当执行P3=P3^0x01;程序时相当于对P3.0进行()操作,不影响其他位 [单选题] *A、置1B、清零C、取反(正确答案)D、不变11、当(TMOD)=0x01时,定时/计数器T1工作于方式()状态 [单选题] *A、0,定时(正确答案)B、 0,计数C、 1,定时D、 1,计数12、当(TMOD)=0x00时,T0X12为1时,定时时/计数器T0计数脉冲是() [单选题] *A、系统时钟;(正确答案)B、系统时钟的12分频信号;C、P3.4引脚输入信号;D、 P3.5引脚输入信号13、当(IT0)=1时,外部中断0触发的方式是() [单选题] *A、高电平触发;B、低电平触发;C、下降沿触发(正确答案)D、上升沿/下降沿触皆触发14、 IAP15W4K58S4单片机串行接口1在工作方式1状态下工作时,一个字符帧的位数是() [单选题] *A、8B、 9C、 10(正确答案)D、1115、当(SM1)=1,(SM0)=0时,IAP15W4K58S4单片机的串行接口工作方式为()[单选题] *A、工作方式0B、工作方式1(正确答案)C、工作方式2D、工作方式316、 IAP15W4K58S4单片机的A/D转换模块中转换电路的类型是() [单选题] *A、逐次比较型(正确答案)B、并行比较型C、双积分型D、Σ-Δ型17 IAP15W4K58S4单片机的A/D转换的8个通道是在()口 [单选题] *A、P0B、 P1(正确答案)C、 P2D、P318、IAP15W4K58S4单片机的PWM计数器是一个()位的计数器。
Cortex-M0+,STM32L0x3参考手册-复位和时钟电路
7.2.1 HSE振荡器和负载电容需要安置在离OSC管脚越近越好,减少时钟倾斜和时钟的稳定时间。
HSE时钟旁路最高32M Hz,通过RCC_CR寄存器中HSEBYP和HSEON位设置。
OSC_IN通过50%占空比的时钟信号驱动,OSC_OUT需要保持在Hi-Z。
外部时钟信号可以是方波,正弦波和三角波,为了减少消耗,推荐使用方波。
晶体和陶瓷振荡器1-24M Hz外部振荡器可以产生一个非常精确的时钟,用来做主时钟。
RCC_CR寄存器中的HSERDY位用于指示HSE是否已经稳定。
7.2.2 HSI16 时钟HSI16可以直接用于系统时钟或者作为PLL输入。
HSI16可以用于从stop模式或low power模式唤醒后,比MSI更小的唤醒时间。
HSI16的启动时间比HSE更短。
但是即使是经过校准,HSI16的精确度也比外部振荡器低。
由于制造过程的变化,不同芯片的RC 振荡频率会不同,每个器件都经过ST的校准,保证在25℃下1%的精确度。
reset后,出厂校准值被load进RCC_ICSCR的HSI16CAL[7:0]。
RCC_CR寄存器中的HSI16RDY位指示着HSI16是否已经稳定。
RCC_CR寄存器中的HSI16ON位可以开启或者关闭HSI16.7.2.3 MSI clockMSI时钟信号由内部RC振荡器产生。
频率范围由RCC_ICSCR中的MSIRANGE[2:0]校正。
MSI的频率有:65.536KHz,131.072KHz,262.144KHz,524.0288KHz,1.048MHz,2.097MHz(默认值)和4.194MHz。
MSI时钟通常被用于复位之后的重启或者从standby模式唤醒的系统时钟(MSI复位到2.097MHz)。
当从停止模式唤醒后(MSI的值不变),MSI可以被用于系统时钟。
MSI可以提供低成本低功耗的时钟源。
在低功耗模式下,MSI被用于唤醒时钟。
RCC_CR寄存器中的MSIRDY标志位用来指示MSI是否已经稳定。
单片机rcc的介绍
单片机rcc的介绍
单片机中的RCC(Reset and Clock Control)模块是用于控制
系统时钟和复位的重要模块。
它通常包括时钟源选择、时钟频率控制、复位控制等功能。
首先,RCC模块负责选择单片机的时钟源。
单片机通常具有多
个时钟源,例如内部振荡器、外部晶体振荡器、PLL(锁相环)等。
RCC模块允许开发人员选择适合应用需求的时钟源,并配置时钟源
的频率。
其次,RCC模块也负责配置时钟的分频和倍频。
通过RCC模块,开发人员可以对时钟频率进行调节,以满足不同外设的时钟要求,
同时也可以降低功耗或者提高性能。
此外,RCC模块还负责控制系统的复位。
它包括对系统的软件
复位和外部复位的控制,确保系统在启动时处于可靠的状态。
总的来说,RCC模块在单片机中扮演着控制系统时钟和复位的
重要角色,通过对时钟源的选择和时钟频率的配置,以及对系统复
位的控制,确保单片机系统的稳定运行和可靠性。
除了以上介绍的功能,RCC模块还可能包括一些其他特定单片机厂商提供的特色功能,例如低功耗模式控制、时钟输出控制等。
在实际应用中,开发人员需要根据具体的单片机型号和厂商提供的技术文档来详细了解RCC模块的具体功能和使用方法,以便充分发挥其作用。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
第七章复位和系统时钟7.1 复位复位,是系统开始正常运转前的一个必经过程,复位部分设计的好坏,关系体统的稳定。
STM32F10xxx 支持三种复位形式,分别为系统复位、上电复位和备份区域复位。
7.1.1 系统复位系统复位将复位除时钟控制寄存器CSR中的复位标志和备份区域中的寄存器以外的所有寄存器(见图7-1-1)。
图7-1-1 复位系统图当以下事件中的一件发生时,产生一个系统复位:1. NRST管脚上的低电平(外部复位)2. 窗口看门狗计数终止(WWDG复位)3. 独立看门狗计数终止(IWDG复位)4. 软件复位(SW复位)5. 低功耗管理复位可通过查看RCC_CSR控制状态寄存器中的复位状态标志位识别复位事件来源。
软件复位,通过将Cortex™-M3中断应用和复位控制寄存器中的SYSRESETREQ位置’1’,可实现软件复位。
低功耗管理复位在以下两种情况下可产生低功耗管理复位:1. 在进入待机模式时产生低功耗管理复位:通过将用户选择字节中的nRST_STDBY位置’1’将使能该复位。
这时,即使执行了进入待机模式的过程,系统将被复位而不是进入待机模式。
2. 在进入停止模式时产生低功耗管理复位:通过将用户选择字节中的nRST_STOP位置’1’将使能该复位。
这时,即使执行了进入停机模式的过程,系统将被复位而不是进入停机模式。
7.1.2 电源复位当以下事件中之一发生时,产生电源复位:1. 上电/掉电复位(POR/PDR复位)2. 从待机模式中返回电源复位将复位除了备份区域外的所有寄存器。
(见图7-1-1) 图中复位源将最终作用于RESET管脚,并在复位过程中保持低电平。
复位入口矢量被固定在地址0x0000_0004。
备份区域拥有两个专门的复位,它们只影响备份区域。
7.1.3 备份域复位当以下事件中之一发生时,产生备份区域复位。
软件复位,备份区域复位可由设置备份区域控制寄存器RCC_BDCR中的BDRST位产生。
在V DD和V BAT两者掉电的前提下,V DD或V BAT上电将引发备份区域复位。
7.2 时钟三种不同的时钟源可被用来驱动系统时钟(SYSCLK):HSI振荡器时钟HSE振荡器时钟PLL时钟这些设备有以下2种二级时钟源:1. 40kHz低速内部RC,可以用于驱动独立看门狗和通过程序选择驱动RTC。
RTC用于从停机/待机模式下自动唤醒系统。
2. 32.768kHz低速外部晶体也可用来通过程序选择驱动RTC(RTCCLK)。
当不被使用时,任一个时钟源都可被独立地启动或关闭,由此优化系统功耗。
图7-2-1是系统的时钟树。
图7-2-1 时钟树当HSI被用于作为PLL时钟的输入时,系统时钟的最大频率不得超过64MHz。
用户可通过多个预分频器配置AHB、高速APB(APB2)和低速APB(APB1)域的频率。
AHB和APB2域的最大频率是72MHZ。
APB1域的最大允许频率是36MHZ。
SDIO接口的时钟频率固定为HCLK/2。
RCC通过AHB时钟8分频后供给Cortex系统定时器的(SysTick)外部时钟。
通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex AHB时钟作为SysTick时钟。
ADC时钟由高速APB2时钟经2、4、6或8分频后获得。
定时器时钟频率分配由硬件按以下2种情况自动设置:1.如果相应的APB预分频系数是1,定时器的时钟频率与所在APB总线频率一致。
2.否则,定时器的时钟频率被设为与其相连的APB总线频率的2倍。
FCLK是Cortex™-M3的自由运行时钟。
7.2.1 HSE时钟(外部高速时钟)高速外部时钟信号(HSE)由以下两种时钟源产生:HSE外部晶体/陶瓷谐振器HSE用户外部时钟为了减少时钟输出的失真和缩短启动稳定时间,晶体/陶瓷谐振器和负载电容器必须尽可能地靠近振荡器管脚。
负载电容值必须根据所选择的振荡器来调整。
图7-2-2 时钟电路外部时钟源(HSE旁路)在这个模式里,必须提供外部时钟。
它的频率最高可达25MHz。
用户可通过设置在时钟控制寄存器中的HSEBYP和HSEON位来选择这一模式。
外部时钟信号(50%占空比的方波、正弦波或三角波)必须连到SOC_IN管脚,同时保证OSC_OUT管脚悬空。
见图7-2-2。
外部晶体/陶瓷谐振器(HSE晶体)4~16Mz外部振荡器可为系统提供更为精确的主时钟。
相关的硬件配置可参考图7-2-2。
在时钟控制寄存器RCC_CR中的HSERDY位用来指示高速外部振荡器是否稳定。
在启动时,直到这一位被硬件置’1’,时钟才被释放出来。
如果在时钟中断寄存器RCC_CIR中允许产生中断,将会产生相应中断。
HSE晶体可以通过设置时钟控制寄存器里RCC_CR中的HSEON位被启动和关闭。
7.2.2 HSI时钟HSI时钟信号由内部8MHz的RC振荡器产生,可直接作为系统时钟或在2分频后作为PLL输入。
HSI RC振荡器能够在不需要任何外部器件的条件下提供系统时钟。
它的启动时间比HSE晶体振荡器短。
然而,即使在校准之后它的时钟频率精度仍较差。
校准:制造工艺决定了不同芯片的RC振荡器频率会不同,这就是为什么每个芯片的HSI时钟频率在出厂前已经被ST校准到1%(25°C)的原因。
系统复位时,工厂校准值被装载到时钟控制寄存器的HSICAL[7:0]位。
如果用户的应用基于不同的电压或环境温度,这将会影响RC振荡器的精度。
你可以通过利用在时钟控制寄存器里的HSITRIM[4:0]位来调整HSI频率。
时钟控制寄存器中的HSIRDY位用来指示HSI RC振荡器是否稳定。
在时钟启动过程中,直到这一位被硬件置’1’,HSI RC输出时钟才被释放。
HSI RC可由时钟控制寄存器中的HSION位来启动和关闭。
如果HSE晶体振荡器失效,HSI时钟会被作为备用时钟源。
7.2.3 PLL内部PLL可以用来倍频HSI RC的输出时钟或HSE晶体输出时钟。
参考图7-2-1时钟树和时钟控制寄存器。
PLL的设置(选择HIS振荡器除2或HSE振荡器为PLL的输入时钟,和选择倍频因子)必须在其被激活前完成。
一旦PLL被激活,这些参数就不能被改动。
如果PLL中断在时钟中断寄存器里被允许,当PLL准备就绪时,可产生中断申请。
如果需要在应用中使用USB接口,PLL必须被设置为输出48或72MHZ时钟,用于提供48MHz的USBCLK时钟。
7.2.4 LSE时钟LSE晶体是一个32.768kHz的低速外部晶体或陶瓷谐振器。
它为实时时钟或者其他定时功能提供一个低功耗且精确的时钟源。
LSE晶体通过在备份域控制寄存器(RCC_BDCR)里的LSEON位启动和关闭。
在备份域控制寄存器(RCC_BDCR)里的LSERDY指示LSE晶体振荡是否稳定。
在启动阶段,直到这个位被硬件置’1’后,LSE时钟信号才被释放出来。
如果在时钟中断寄存器里被允许,可产生中断申请。
外部时钟源(LSE旁路)在这个模式里必须提供一个32.768kHz频率的外部时钟源。
你可以通过设置在备份域控制寄存器(RCC_BDCR)里的LSEBYP和LSEON位来选择这个模式。
具有50%占空比的外部时钟信号(方波、正弦波或三角波)必须连到OSC32_IN管脚,同时保证OSC32_OUT管脚悬空。
见图7-2-1。
7.2.5 LSI时钟LSI RC担当一个低功耗时钟源的角色,它可以在停机和待机模式下保持运行,为独立看门狗和自动唤醒单元提供时钟。
LSI时钟频率大约40kHz(在30kHz和60kHz之间)。
进一步信息请参考数据手册中有关电气特性部分。
LSI RC可以通过控制/状态寄存器(RCC_CSR)里的LSION位来启动或关闭。
在控制/状态寄存器(RCC_CSR)里的LSIRDY位指示低速内部振荡器是否稳定。
在启动阶段,直到这个位被硬件设置为’1’后,此时钟才被释放。
如果在时钟中断寄存器(RCC_CIR)里被允许,将产生LSI中断申请。
注意:只有大容量产品可以进行LSI校准LSI校准:可以通过校准内部低速振荡器LSI来补偿其频率偏移,从而获得精度可接受的RTC时间基数,以及独立看门狗(IWDG)的超时时间(当这些外设以LSI为时钟源)。
校准可以通过使用TIM5的输入时钟(TIM5_CLK)测量LSI时钟频率实现。
测量以HSE的精度为保证,软件可以通过调整RTC的20位预分频器来获得精确的RTC时钟基数,以及通过计算得到精确的独立看门狗(IWDG)的超时时间。
LSI校准步骤如下:1.打开TIM5,设置通道4为输入捕获模式;2.设置AFIO_MAPR的TIM5_CH4_IREMAP位为’1’,在内部把LSI连接到TIM5的通道4;3.通过TIM5的捕获/比较4事件或者中断来测量LSI时钟频率;4.根据测量结果和期望的RTC时间基数和独立看门狗的超时时间,设置20位预分频器。
7.2.6 系统时钟(SYSCLK)选择系统复位后,HSI振荡器被选为系统时钟。
当时钟源被直接或通过PLL间接作为系统时钟时,它将不能被停止。
只有当目标时钟源准备就绪了(经过启动稳定阶段的延迟或PLL稳定),从一个时钟源到另一个时钟源的切换才会发生。
在被选择时钟源没有就绪时,系统时钟的切换不会发生。
直至目标时钟源就绪,才发生切换。
在时钟控制寄存器(RCC_CR)里的状态位指示哪个时钟已经准备好了,哪个时钟目前被用作系统时钟。
7.2.7 时钟安全系统(CSS)时钟安全系统可以通过软件被激活。
一旦其被激活,时钟监测器将在HSE振荡器启动延迟后被使能,并在HSE时钟关闭后关闭。
如果HSE时钟发生故障,HSE振荡器被自动关闭,时钟失效事件将被送到高级定时器TIM1的刹车输入端,并产生时钟安全中断CSSI,允许软件完成营救操作。
此CSSI中断连接到Cortex™-M3 的NMI中断。
注意:一旦CSS被激活,并且HSE时钟出现故障,CSS中断就产生,并且NMI也自动产生。
NMI将被不断执行,直到CSS中断挂起位被清除。
因此,在NMI的处理程序中必须通过设置时钟中断寄存器(RCC_CIR)里的CSSC位来清除CSS中断。
如果HSE振荡器被直间或间接地作为系统时钟,(间接的意思是:它被作为PLL输入时钟,并且PLL时钟被作为系统时钟),时钟故障将导致系统时钟自动切换到HSI振荡器,同时外部HSE振荡器被关闭。
在时钟失效时,如果HSE振荡器时钟(被分频或未被分频)是用作系统时钟的PLL的输入时钟,PLL 也将被关闭。
7.2.8 RTC时钟通过设置备份域控制寄存器(RCC_BDCR)里的RTCSEL[1:0]位,RTCCLK时钟源可以由HSE/128、LSE或LSI时钟提供。
除非备份域复位,此选择不能被改变。
LSE时钟在备份域里,但HSE和LSI时钟不是。