时钟

STM32的时钟树

时钟信号推动单片机内各个部分执行相应的指令,时钟就像人的心跳一样。

STM32本身十分复杂,外设非常多,任何外设都需要时钟才能启动,但并不是所有的外设都需要系统时钟那么高的频率,如果都用高速时钟势必造成浪费。同一个电路,时钟越快功耗越大、抗电磁干扰能力越弱。复杂的MCU采用多时钟源的方法来解决这些问题。如下图,是STM32的时钟系统框图。

“”

如上图左边的部分,看到STM32有4个独立时钟源,HSI、HSE、LSI、LSE。

  • HSI是高速内部时钟,RC振荡器,频率为8MHz,精度不高。
  • HSE是高速外部时钟,可接石英/陶瓷谐振器,或者接外部时钟源,频率范围为4MHz~16MHz。
  • LSI是低速内部时钟,RC振荡器,频率为40kHz,提供低功耗时钟。
  • LSE是低速外部时钟,接频率为32.768kHz的石英晶体。

时钟树的右边红色框中,则是系统时钟通过AHB预分频器,给相对应的外设设置相对应的时钟频率。

其中LSI、LSE是作为IWDGCLK(独立看门狗)时钟源和RTC时钟源使用。而HSI、HSE以及PLLCLK经过分频或者倍频作为系统时钟SYSCLK来使用。

PLL为锁相环倍频输出,其时钟输入源可选择为HSI/2、HSE或者HSE/2。倍频可选择为2~16倍,但是其输出频率最大不得超过72MHz。通过倍频之后作为系统时钟的时钟源。

配置时钟

默认时钟

Keil编写程序是默认的时钟为72Mhz,其实是这么来的:

外部高速晶振HSE提供的8MHz(大小与电路板上的晶振相关)通过PLLXTPRE分频器后,进入PLLSRC选择开关,进而通过PLLMUL锁相环进行倍频(x9)后,为系统提供72MHz的系统时钟SYSCLK。之后是AHB预分频器对时钟信号进行分频,然后为低速外设提供时钟。

内部RC振荡器HSI为8MHz,2分频后是4MHz,进入PLLSRC选择开关,通过PLLMUL锁相环进行倍频(最大x16)后为64MHz。

USB时钟

“”

如上图,STM32的USB时钟不能超过48MHz,因此如果时钟源为72MHz,就需要进行1.5分频。

如果时钟源为48MHZ,则进行1分频即可。

把时钟信号输出到外部

“”

STM32可以选择一个时钟信号输出到MCO脚(PA8)上,可以选择为PLL输出的2分频、HSI、HSE、或者系统时钟,可以把时钟信号输出供外部使用。

AHB分频器

如时钟树图右边的部分,系统时钟通过AHB分频器给外设提供时钟。从左到右可以简单理解为:

系统时钟->AHB分频器->各个外设分频倍频器->外设时钟的设置。

右边部分为:系统时钟SYSCLK通过AHB分频器分频后送给各模块使用,AHB分频器可选择1、2、4、8、16、64、128、256、512分频。其中AHB分频器输出的时钟送给5大模块使用:

内核总线:送给AHB总线、内核、内存和DMA使用的HCLK时钟。

Tick定时器:通过8分频后送给Cortex的系统定时器时钟。

I2S总线:直接送给Cortex的空闲运行时钟FCLK。

APB1外设:送给APB1分频器。APB1分频器可选择1、2、4、8、16分频,其输出一路供APB1外设使用(PCLK1,最大频率36MHz),另一路送给通用定时器使用。该倍频器可选择1或者2倍频,时钟输出供定时器2-7使用。

APB2外设:送给APB2分频器。APB2分频器可选择1、2、4、8、16分频,其输出一路供APB2外设使用(PCLK2,最大频率72MHz),另一路送给高级定时器。该倍频器可选择1或者2倍频,时钟输出供定时器1和定时器8使用。另外,APB2分频器还有一路输出供ADC分频器使用,分频后送给ADC模块使用。ADC分频器可选择为2、4、6、8分频。需要注意的是,如果APB预分频器分频系数是1,则定时器时钟频率(TIMxCLK)为PCLKx。否则,定时器时钟频率将为 APB 域的频率的两倍:TIMxCLK = 2xPCLKx。

APB1和APB2的对应外设

“”

F1系列中,APB1上面连接的是低速外设,包括电源接口、备份接口、CAN、USB、I2C1、I2C2、USART2、USART3、UART4、UART5、SPI2、SP3等。

APB2上面连接的是高速外设,包括UART1、SPI1、Timer1、ADC1、ADC2、ADC3、所有的普通I/O口(PA-PE)、第二功能I/O(AFIO)口等。

具体可以在stm32f10x_rcc.h中查看外设挂在哪个时钟下。

时钟监视系统(CSS)

“”

另外,STM32还提供了一个时钟监视系统(CSS),用于监视高速外部时钟(HSE)的工作状态。倘若HSE失效,会自动切换(高速内部时钟)HSI作为系统时钟的输入,保证系统的正常运行。

本文转载自:multisim
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:
cathy@eetrend.com)。

围观 277

工程师在开发一个电路系统,往往会需要用到中央处理器,比如单片机、FPGA、或者DSP等等;当然一些简单的纯硬件电路项目方案例外,如充电器、热水壶等等。

作为单片机研发设计的项目,它的最小电路工作系统包含电源电路、复位电路、时钟频率电路;其中电源电路与复位电路,相信工程师都非常容易理解与设计。然而时钟频率电路,由于不同的开发项目功能需求不一样,设计的方案选择也不尽相同,很难得到有效的统一设计。

比如:

  • A项目对研发成本要求较严格,功能较简单;

  • B项目电路系统需要与外界电路系统完成串口通信,通信数据要求不能出错;

  • C项目包含一个时钟万年历功能,时间要求不能间断而且精度要求高。

针对单片机的时钟频率电路,工程师依据不同的项目要求去设计与选择匹配的方案,具体的选择方案包含三类。

01、外部晶振方案

所谓外部晶振方案,是指在单片机的时钟引脚X1与X2外部连接一个晶振。

“单片机外部晶振图"
单片机外部晶振图

优点:时钟频率精度高,稳定性能好;对于一些数据处理能力要求较高的项目,尤其是多个电路系统彼此需要信息通讯,如包含USB通讯、CAN通讯的项目,选用外部晶振的方案较多。

缺点:由于增加了外部晶振,所以研发的BOM表元器件成本增加扩大了。

02、内部晶振方案

所谓内部晶振方案,是指单片机利用内部集成的RC振荡电路产生的时钟频率。

“单片机内部晶振图"
单片机内部晶振图

优点:省去外部晶振,工程师可以有效的节约研发BOM元器件成本。

缺点:RC振荡电路产生的时钟频率精度比较低,误差较大,容易引起一些高频率通信的数据交互错误。

03、时钟芯片方案

所谓时钟芯片方案,是指在单片机外部加入一个专门处理时钟的时钟芯片,用来给单片机提供精准的时钟信号。

“单片机与时钟芯片电路"
单片机与时钟芯片电路

优点:精度高,误差小;适用于一些要求较高的电路项目。

缺点:电路设计复杂,工程师开发难度较高,研发BOM元器件成本高。

关于时钟芯片的一些电路特性,以美信的DS1338型号为例说明:

“DS1338时钟芯片"
DS1338时钟芯片

(1)供电

时钟芯片的供电电源包含两个部分:

  • VCC供电,是指电路项目系统的电源,同时也是单片机的电源。

  • Vbat供电,是指电池供电的电源,由于某种原因在VCC供电突然失去的条件下,时钟芯片自动启用Vbat电池电源,用以保持时钟芯片内部的时钟信号处理,不必因为电路系统电源VCC断电而失去电路工作。

(2)功能

时钟芯片内部集成时间的“秒”“分”“时”“日”“周”“月”和“年”详细信息计时电路功能,通过IIC通信方式将时间的信息发送至单片机,单片机即可获得高精度的时钟信息。

(3)接口

时钟芯片与单片机的接口是IIC通信接口,此接口方式为串口通信,工程师开发设计较为简单,容易实现电路功能;

(4)精度

精度,是指时钟芯片在正常工作条件下产生的时钟误差;例如美信的DS1338时钟芯片精度控制在10PPM,换算成一天24小时误差精度在0.8秒左右。

(5)应用

时钟芯片,一般用来处理精确计算时间的电路项目,如时间万年历。

结语

当然这三个方案都是针对一些工业与民用领域,如果涉及到航空航天应用领域,比如卫星导航与遥感测量等,则需要选择更高精度的时钟频率电路,如原子钟方案。

本文转载自:今日头条(作者:芯片哥)
免责声明:本文为转载文章,转载此文目的在于传递更多信息,版权归原作者所有。本文所用视频、图片、文字如涉及作品版权问题,请联系小编进行处理(联系邮箱:
cathy@eetrend.com)。

围观 106

全球半导体解决方案供应商瑞萨电子集团(TSE:6723)今日宣布,面向数据中心、服务器和网络基础设施领域推出抖动低于100fs的全新“使用点”时钟解决方案,以扩展瑞萨时钟解决方案。全新FemtoClock2产品家族包括超低抖动时钟发生器和抖动衰减器,采用4mm x 4mm小型封装,可为新一代高速互连设计配置经济且简单的时钟树。

“”

FemtoClock2可提供达64fs RMS的超低抖动性能,使客户能够轻松满足新交换机或路由器设计对新一代PAM4的要求。FemtoClock2产品家族为4mm x 4mm封装,不足市场同类解决方案尺寸的三分之一。这使得设计人员可将时钟源放置于使用点(即非常靠近接收时钟信号的器件),以简化PCB布局、减少串扰,获得更干净的信号。优异的灵活性使该系列产品适用于诸多应用。FemtoClock2可配置为DCO、时钟发生器或抖动衰减器,从而提供极具价值的设计灵活性和复用性。

瑞萨电子数据中心事业部时钟产品副总裁Bobby Matinpour表示:“PAM4技术正在推动通信和数据中心领域数据传输速率的重大飞跃,由此也对该类系统中的时钟提出严苛要求。此次我们扩展广受欢迎的FemtoClock产品阵容,推出全新高性能产品家族,以小尺寸提供超低抖动和低功耗,让时钟可放置于板上任何便于使用的位置。通过消除与电路板上时钟走线相关的附加抖动,大幅简化设计。”

FemtoClock2产品家族的关键特性

  • 抖动低至64fs(典型值)RMS
  • 600mW低功耗
  • 采用24和28引脚,4mm x 4mm QFN封装
  • 具有四个差分输出的单、双输入选项
  • 电源噪声抑制优于-80dB
  • 输出到输出隔离为-80dBc
  • 符合ITU-T G.8262和G.8262.1标准,用于增强型同步以太网/OTN
  • 集成晶体选件,可节省更多空间

用户可将全新FemtoClock2解决方案与瑞萨小型、单输出、高性能振荡器,或更广泛的ClockMatrixTM系列时钟解决方案相结合,以满足高性能服务器和网络基础设施设计中对时钟产品的严苛要求。FemtoClock2也可与新近推出的基于IEEE1588协议的PTP Clock Manager无缝结合, 亦可与瑞萨丰富的电源、微控制器相结合, 开发多种应用, 如IEEE1588成功产品组合等。FemtoClock2作为下游时钟,能够在不中断同步的情况下在引脚上实现100fs低抖动。

瑞萨电子作为先进供应商,提供“一站式”时钟解决方案,涵盖从全功能系统解决方案到简单的时钟树构建模块的专业技术及产品。

供货信息

RC32504A和RC22504A FemtoClock解决方案及评估板现已上市。更多信息,请访问:renesas.com/femtoclock2。

关于瑞萨电子集团

瑞萨电子集团 (TSE: 6723) ,提供专业可信的创新嵌入式设计和完整的半导体解决方案,旨在通过使用其产品的数十亿联网智能设备改善人们的工作和生活方式。作为全球微控制器、模拟、电源和SoC产品供应商,瑞萨电子为汽车、工业、家居、基础设施及物联网等各种应用提供综合解决方案,期待与您携手共创无限未来。更多信息,敬请访问renesas.com。

围观 18

全新的SmartClock技术可满足日益增长的时钟监测和故障检测需求

致力于建立更智能、更互联世界的领先芯片、软件和解决方案供应商Silicon Labs(亦称“芯科科技”,NASDAQ: SLAB)日前推出在其AEC-Q100合规的Si5332-AM时钟发生器系列中采用的SmartClock新技术,为业界广泛应用的基于硅的汽车时钟解决方案组合扩展了更多的功能。全新的SmartClock技术可主动监测参考时钟以检测潜在故障,并提供内置的时钟冗余功能。

Silicon Labs时钟产品总经理James Wilson表示:“汽车电子设计传统上依赖于石英晶体和振荡器,它们在整个使用寿命中容易发生故障。随着汽车应用对时钟的要求变得越来越复杂,所需的精密时钟数量也在不断增加。我们的SmartClock新技术为系统设计人员提供了新工具,可以主动监测系统时钟的运行状况和可靠性,提高每个设计的弹性和操作性。”

如果检测出故障情况,SmartClock会与外部的系统微控制器或系统安全管理器共享信息,它们会转而指示Si5332-AM切换到冗余的备份源,以确保系统继续安全运行。在仅需对单一时钟进行运行监测的应用中,新型的Si5118-AM SmartClock合成器可以在参考时钟源和端点之间运行。这些创新的功能有助于解决汽车网络、先进驾驶辅助系统、自动驾驶以及车载信息娱乐系统(IVI)/数字驾舱等应用的电子设计中日益复杂的时钟挑战。

目前可提供的新产品和功能如下:

  • 在Si5332-AM 时钟发生器产品系列中,SmartClockTM运行状况监测、故障检测和本地参考备份是全新的可定制功能,可以利用Silicon Labs的ClockBuilder Pro配置软件启用这些功能
  • 新型独立式Si5118-AM SmartClock合成器
  • 新版本的12输出Si5332-AM时钟发生器
  • 新版本的10输出Si53350-AM缓冲器

有关SmartClock的更多信息,请访问silabs.com/timing/automotive-timing-solutions.

关于Silicon Labs

Silicon Labs(亦称“芯科科技”,NASDAQ:SLAB)是领先的芯片、软件和解决方案供应商,致力于建立一个更智能、更互联的世界。我们屡获殊荣的技术正在塑造物联网、互联网基础设施、工业自动化、消费电子和汽车市场的未来。我们世界一流的工程团队创造的产品专注于性能、节能、互联和简易化。更多信息请浏览网站:silabs.com。

围观 17

单片机应用中,常常会遇到这种情况~~在用单片机制作电子钟或要求根据时钟启控的控制系统时,会突然发现当初校准了的电子时钟的时间竟然变快或是变慢了。于是,尝试用各种方法来调整它的走时精度,但是最终的效果还是不尽人意,只好每过一段时间手动调整一次。那么,是否可使时钟走时更精确些呢?

现探讨如下:

一、误差原因分析

1. 单片机电子时钟的计时脉冲基准,是由外部晶振的频率经过12分频后提供的,采用内部的定时,计数器来实现计时功能。所以,外接晶振频率的精确度直接影响电子钟计时的准确性。

2. 单片机电子时钟利用内部定时,计数器溢出产生中断(12MHz晶振一般为50ms)再乘以相应的倍率,来实现秒、分、时的转换。大家都知道,从定时,计数器产生中断请求到响应中断,需要3_8个机器周期。定时中断子程序中的数据人栈和重装定时,计数器的初值还需要占用数个机器周期。此外。从中断人口转到中断子程序也要占用一定的机器周期。例如:

从上述程序可以看出,从中断人口到定时/计数器初值的低8位装入需要占用2+2+2=6个机器周期。所以,在编程时一般会把这6个机器周期加入定时/计数器的初值中。但是,从定时,计数器溢出中断请求到执行中断需要几个机器周期(3~8个机器周期)。就很难确定准确值,正是这一原因导致了电子时钟计时的不准。

二、解决方法

1、采用高精度晶振方案

虽然采用高精度的晶振可以稍微提高电子钟计时的精确度,但是晶振并不是导致电子钟计时不准的主要因素,而且高精度的晶振价格较高,所以不必采用此方案。

2、动态同步修正方案

从程序人手,采用动态同步修正方法给定时,计数器赋初值。动态同步修正方法如下:由于定时,计数器溢出后,又会从O开始自动加数,故在给定时/计数器再次赋值前,先将定时,计数器低位(TLO)中的值和初始值相加,然后送人定时,计数器中,此时定时,计数器中的值即为动态同步修正后的准确值。

具体程序如下:

采用此种方法后,相信制作的电子时钟的精度已有提高了。

3、自动调整方案

采用同步修正方案后,电子时钟的精度虽然提高了很多,但是由于晶振频率的偏差和一些其他未知因素的影响(同一块电路板、同样的程序换了一片单片机后,走时误差不一样,不知是何原因),时间长了仍然会有积累误差。为此,可采用自动调整方案。实际上是一种容错技术。其自动调整原理为:实测出误差Is所需的时间,然后每隔这样一段时间后就对秒进行加“1”或减“1”调整。例如:电子钟每过50小时就慢1秒,其自动调整程序如下:

以下是一个完整实例:

来源:畅学电子,转载此文目的在于传递更多信息,版权归原作者所有。

围观 123

1 CRG的SPEC参考

1.1 时钟设计需求

(1)生成AHB时钟,APB时钟,RTC时钟;
(2)AHB最高时钟频率为98MHz;
(3)APB时钟为AHB同步时钟,且可以配置AHB时钟的1/2,1/4,1/8;
(4)RTC时钟单独控制时钟,时钟频率1KHz;
(5)各外设时钟可以单独门控,满足低功耗要求。

1.2 时钟设计要点

(1)DFT可控,隔离,可观测。
(2)上电工作外部参考时钟,PLL稳定后,时钟自动切换。
(3)低功耗要求,在系统不工作时,时钟自动关闭。
(4)各个外设时钟均能门控。

1.3 时钟设计电路


看上图,首先进来的是8M时钟,给PLL倍频。OSC_OUT是OSC_IN取反得到的,这是外部时钟要求的。经过无毛刺切换后,就产生sys_clk系统时钟,然后进入一个分频模块;分频之后的时钟进入ICG,产生apb和ahb时钟。这个ICG看做是一个buffer,对sys_clk做门控,时钟路径时钟是sys_clk系统时钟,注意这里出来是不是分频时钟,而是sys_clk出来的,分频时钟只是控制作用而已。

2 时钟的无毛刺切换

2.1 毛刺的产生

两个时钟频率可以彼此完全无关,或者它们可以是彼此的倍数。在任何一种情况下,都有可能在切换时在时钟线上产生毛刺。时钟线上的毛刺对整个系统是危险的,因为它可能被某些寄存器解释为捕获时钟边沿而被其他寄存器忽略。毛刺的处理分为两种,当时钟是彼此的倍数时是一种,完全无关的两个时钟处理又是一种。

2.2 倍数关系的时钟毛刺解决方案

这一篇文章很值得参考!

其原理是,先gating住之前选择的时钟,然后再放开将要选择的时钟。下图显示了防止源时钟相互倍数的时钟开关输出出现毛刺的解决方案。在每个时钟源的选择路径中插入一个负边沿触发的D触发器。



2.3 针对无关时钟源的毛刺保护

先前避免时钟开关输出处的毛刺的方法需要两个时钟源彼此的倍数,在该实现中没有处理异步信号的机制。当两个时钟源彼此完全无关时,异步行为的源可以是SELECT信号或从一个时钟域到另一个时钟域的反馈。同步器只是两级触发器,其中第一级通过锁定数据来帮助稳定数据,这一级可以用上升沿,也可以用下降沿,用上升沿是为了节省时间然后将数据传递到下一级,后一级的DFF必须使用clock下降沿,因为是用AND门进行gating。



2.4 RTL代码


module clk_sw(
     input   wire    clk_a,
     input   wire    clk_b,
     input   wire    rst_n,
     input   wire    sel,
     output  wire    clk_o
 );
 reg     clk_a_en ;
 reg     clk_b_en ;
 always @(posedge clk_a or negedge rst_n) begin
     if(~rst_n)                         
      clk_a_en     <=  1'b0 ;
     else                                
     clk_a_en     <=  ~sel & ~clk_b_en   ;
 end
 always @(posedge clk_b or negedge rst_n) begin
     if(~rst_n)                          
     clk_b_en     <=  1'b0  ;
     else                                
     clk_b_en     <=  sel  & ~clk_a_en   ;
end
assign  clk_o   =   (clk_a & clk_a_en) | (clk_b & clk_b_en) ;
endmodule

本文转自:博客园 - yiwenbo,转载此文目的在于传递更多信息,版权归原作者所有。

围观 95

概念基础:

STM32时钟系统基本一致,不同系列之间有细微差别。此文档主要针对STM32F446的时钟系统进行介绍。

1. 时钟树概述

① 为何不是采用一个系统时钟?如51
因为STM32本身非常复杂,外设非常多,但是并非所有外设都需要系统时钟这么高的频率,比如看门狗和RTC只需要几十K的时钟即可。同一个电路,时钟越快,功耗越大,同时抗电磁干扰能力也会越弱,所以对于较为复杂的MCU一般采用多时钟源的方法来解决这些问题。

② 主要时钟源:
5个最主要的时钟源:
高速时钟源:HSI、HSE、PLL
低速时钟源:LSI、LSE
其中PLL实际又分为3个时钟源:主PLL、I2S部分专用PLLI2S、SAI部分专用PLLASI。

详解:
LSI是低速内部时钟,RC振荡器,频率为32K,供独立看门狗和自动唤醒单元使用。
LSE是低速外部时钟,接频率为32.768Khz的石英晶体,这个主要是RTC的时钟源。
HSE是高速外部时钟,频率范围为4Mhz-26Mhz,可以直接作为系统时钟或PLL输入。
HSI是高速内部时钟,RC振荡器,频率为16Mhz,可以直接作为系统时钟或PLL输入。
PLL为锁相环倍频输出,STM32F4有三个PLL:
a、 主PLL由HSE或HSI提供时钟信号,并具有两个不同的输出时钟。
第一个输出PLLP用于生成高速的系统时钟(最高180Mhz)
第二个输出PLLQ为48M,用于USB OTG FS时钟,随机数发生器的时钟和SDIO时钟。
b、 第一个专用PLL(PLLSAI)用于生成精确时钟,用作SAI输入时钟。Q是SAI时钟分频系数。P可以生成PLL48CLK用于给USB FS或SDIO提供48M时钟。
c、 第二个专用PLL(PLLI2S)用于生成精准时钟,在I2S和SAI上实现高品质音频性能。R是I2S时钟的分频系数,Q是SAI时钟的分频系数。

2. 常用时钟源选择

① 看门狗时钟:看门狗时钟只能是低速的LSI时钟,32Khz。
② RTC时钟源:可以选择LSI(32Khz)、LSE(32.768Khz)、HSE分频后提供(2-31分频)
③ 系统时钟SYSCLK:可选择HSE、HSI和PLL
④ USB高速设备会有外部PHY提供60Mhz
⑤ NOTE:
在上述的很多时钟输出中,有很多是带使能控制的,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等。
APB1是外设低速总线
APB2是外设高速总线
一般时钟总线是设备总线的2倍
时钟主频可以设置为168Mhz,通过设置Over-driver模式可以超频到180Mhz
FLASH Latency 延时配置参考:


3. 时钟源使能和配置

在配置好时钟系统之后,如果我们要使用某些外设,例如GPIO、ADC,还要使能这些外设时钟,如果在使用外设之前没有使能外设时钟,这个外设是不可能正常运行的。

IO引脚复用器和映射

一个GPIO如果可以复用为内置外设的功能引脚,那么这个GOIO作为内置外设使用的时候,就叫做复用。

4. 寄存器配置

① RCC_CFGR,时钟配置寄存器


Bit2 bit3代表使用的时钟源,具体可查参考手册,系统刚上电时默认为内部HSI。

② RCC_PLLCFGR,PLL时钟配置寄存器


上电默认情况为HSI做为主PLL和I2SPLL的时钟入口。

③ RCC_CR,RCC时钟控制寄存器


通过Bit16可以切换为外部晶振。在时钟初始化的时候被调用。时钟切换之后,根据时钟设置逻辑,如果外部晶振使能了,则等待外部晶振正常起震。起震后查看RCC_CFRG寄存器,当前使用的还是HSI。下一步需要判断程序中是否要使用PLL,若使用,则继续进行PLL配置。

配置结束PLL的各种分频后,一块进行寄存器配置。此时再切换到外部HSE工作。

时钟配置过程:
(1)AHB配置预分频,得到HCLK时钟,分频值写入RCC_CFGR bit4-bit7
(2)系统时钟配置 RCC_CFGR bit0-bit1
(3)检查系统时钟状态是否切换成功 RCC_CFGR bit2-bit3
(4)APB1、APB2配置预分频,得到PCLK1、PCLK2时钟RCC_CFGR bit10-bit15
(5)更新系统全局变量SystemCoreClock

5. I2S时钟配置

(1)选择I2S外设的时钟源
(2)配置各项时钟分频系数,一般情况下使用PLLI2SR时钟
(3)计算时钟分频,需要在PLLI2SR上获得需要的48K

下列公式为参考手册提供:
When the master clock is generated (MCKOE in the SPIx_I2SPR register is set):
fS = I2SxCLK / [(16*2)*((2*I2SDIV)+ODD)*8)] when the channel frame is 16-bit wide
fS = I2SxCLK / [(32*2)*((2*I2SDIV)+ODD)*4)] when the channel frame is 32-bit wide
When the master clock is disabled (MCKOE bit cleared):
fS = I2SxCLK / [(16*2)*((2*I2SDIV)+ODD))] when the channel frame is 16-bit wide
fS = I2SxCLK / [(32*2)*((2*I2SDIV)+ODD))] when the channel frame is 32-bit wide
将计算额I2SDIV和奇数值ODD写入相应寄存器。
此例中,I2SxCLK为192MHz,使用48K时可以被整除,时钟准确,但是96K时不能被整除,造成时钟偏移。所以若需要进行I2S时钟动态调节,需要好好计算I2SxCLK。

版权声明:本文为CSDN博主「yk150915」的原创文章,
遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https://blog.csdn.net/yk150915/article/details/79112766

围观 604

页面

订阅 RSS - 时钟