历史上的今天
返回首页

历史上的今天

今天是:2025年01月04日(星期六)

2021年01月04日 | STM32时钟系统与时钟启动顺序详解

2021-01-04 来源:eefocus

概念基础:

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

1. 时钟树概述

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

  2. 主要时钟源:
    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. 常用时钟源选择

  1. 看门狗时钟:看门狗时钟只能是低速的LSI时钟,32Khz。

  2. RTC时钟源:可以选择LSI(32Khz)、LSE(32.768Khz)、HSE分频后提供(2-31分频)

  3. 系统时钟SYSCLK:可选择HSE、HSI和PLL

  4. USB高速设备会有外部PHY提供60Mhz

  5. NOTE:
    在上述的很多时钟输出中,有很多是带使能控制的,例如AHB总线时钟、内核时钟、各种APB1外设、APB2外设等。
    APB1是外设低速总线
    APB2是外设高速总线
    一般时钟总线是设备总线的2倍
    时钟主频可以设置为168Mhz,通过设置Over-driver模式可以超频到180Mhz
    FLASH Latency 延时配置参考:

    FLASH Latency 延时配置

3. 时钟源使能和配置

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

IO引脚复用器和映射

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

4. 寄存器配置

  1. RCC_CFGR,时钟配置寄存器

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

  2. RCC_PLLCFGR,PLL时钟配置寄存器

    这里写图片描述
    上电默认情况为HSI做为主PLL和I2SPLL的时钟入口。

  3. 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。

推荐阅读

史海拾趣

Chiplus Semiconductor Corp公司的发展小趣事

Chiplus深知企业管理对于公司发展的重要性。因此,公司建立了一套完善的管理体系,注重人才培养和团队建设。公司定期举办内部培训和技术交流活动,提升员工的专业技能和综合素质。同时,Chiplus还积极引进外部优秀人才,为公司的持续发展注入新的活力。

Apacer公司的发展小趣事

随着业务的不断发展,Apacer宇瞻科技开始在全球范围内布局。除了在台湾设立总部外,公司还在上海设立了宇瞻电子(上海)有限公司,并在美国、欧洲、日本、印度等地设立了分公司。这一全球布局使得宇瞻科技能够更好地服务全球客户,拓展市场份额。

DESIGNERSYSTEMS公司的发展小趣事

DESIGNERSYSTEMS公司非常注重人才的培养和引进。他们建立了一套完善的人才培养机制,通过内部培训、外部交流等多种方式不断提升员工的综合素质和专业能力。同时,DESIGNERSYSTEMS还积极引进国内外优秀人才,为公司的发展注入新的活力和创新力。这种对人才的重视和投入使得DESIGNERSYSTEMS在电子行业中保持了持续的创新力和竞争力。

GCi Technologies公司的发展小趣事
可能是由于外部电阻设置不当或IC内部故障导致。
FCI [First Components International]公司的发展小趣事
加入过流、过压、短路等保护电路,以确保充电过程的安全。
Aten International公司的发展小趣事

在电子行业中,标准化建设对于提升产品质量和企业竞争力具有重要意义。Aten International深知标准化建设的重要性,因此在产品研发和生产过程中始终坚持高标准、严要求。公司还积极参与国际标准化组织的活动,推动相关标准的制定和完善。正是凭借在标准化建设方面的卓越表现,Aten International赢得了业界的高度认可和广泛赞誉。

以上五个故事虽然基于虚构,但它们都反映了Aten International在电子行业发展的真实情况。这些故事展示了公司在技术创新、市场拓展、标准化建设等方面的努力和成就,也体现了Aten International在电子行业中的领先地位和卓越贡献。

问答坊 | AI 解惑

实用电动机控制电路350例

实用电动机控制电路350例…

查看全部问答>

历数下你知道的嵌入式操作系统

WINDOWS CE .NET WINDOWS CE .NET是一个功能强大的实时嵌入式操作系统,也是微软第一个能够全面支持中文的WINDOWS CE操作系统,适用于快速构建新一代内存少体积小的智能设备,例如手持式设备、智能电话、机顶盒、零售点设备和显示器等。不仅如此, ...…

查看全部问答>

布线不通过,error par:228

现在一个设计xc3s400,ise10.1,综合器为SynplifyERROR:$ar:228 - At least one timing constraint is impossible to meet because component delays alone exceed the   constraint. A timing constraint summary below shows the failing ...…

查看全部问答>

NMAKE : U1073: don't know how to make 'F:\WINCE420\public\common\sdk\lib\ARMV4I

在编译一个网卡驱动时出现 NMAKE :  U1073: don\'t know how to make \'F:\\WINCE420\\public\\common\\sdk\\lib\\ARMV4I\\retail\\ndis.lib\',我到这个目录下找找不到这个文件 SOURCES文件: DM9CE_SOURCENAME=DM9000 DM9CE_TARGET= ...…

查看全部问答>

★★★★★- 诚聘【MSP430】单片机设计工程师 -★★★★★

诚聘单片机设计工程师: 1,会msp430,有设计经验 2,有msp430 C语言开发经验 3,懂信号处理,会用matlab 4,最好有工作经验1年以上 电话:010-81504648 公司网站:www.safezx.com 注:工作地点北京…

查看全部问答>

Quartus2的FPGACPLD设计

给大家介绍一个好东西~…

查看全部问答>

菜鸟求教mlwang_km大侠

你好!我看过一个帖子:\\"请教:这样的波形是怎样编程的呢\\".(2006年6月10日12:37发的帖子) 其中有您的回帖.您给的这个程序(产生PWM波的) #include \\"LF2407Regs.h\\" unsigned int actrb[6] = {0x0c30,0x03c,0x030c,0x03c0,0x00c3,0x0 ...…

查看全部问答>

51单片机IO口驱动问题

这是最常见利用三极管驱动的电路图,看了很多遍,还是不太懂,谁能详细分析一些,谢谢了。 我的分析如下:                      1 网上 ...…

查看全部问答>

如何用stm32串口接收中断接收一帧数据?

请各位大侠指点小弟如何用串口接收中断接收一阵数据库,跪求相关的stm32串口中断收发例程,请大家帮忙,小弟急用,感激不尽…

查看全部问答>