历史上的今天
返回首页

历史上的今天

今天是:2024年10月18日(星期五)

正在发生

2021年10月18日 | STM32时钟体系结构

2021-10-18 来源:eefocus

STM32的时钟体系可以直接以图概括(摘自STM32F10X参考手册)

这里写图片描述

下面就此图做分析


1. STM32输入时钟源

1.1 时钟源的作用

无论是小型单片机还是像STM32这样高级单片机,它们工作的核心都是大规模的时序逻辑电路,而驱动时序逻辑电路的关键则是准确而又稳定的时钟源。它的作用就像小学在操场上做广播体操时候播放的背景音乐,用于协调和同步各单元运行,为时序电路提供基本的脉冲信号。


1.2 STM32时钟源的设计

在51单片机中,一般都外接一个11.0592MHz的晶振,注意,提供时钟的不是晶振,而是RC时钟电路,而晶振只是时钟电路的元件之一。同理,在STM32中,时钟源也是由RC时钟电路产生,与51单片机的区别是区别在于,RC电路的位置。根据RC电路的位置,可以将STM32的时钟源分为内部时钟电路和外部时钟、内外部时钟电路。


(1)内部时钟电路:

晶体振荡器和RC时钟电路都在STM32芯片内部,如图中标注1、标注4。

标注1处是产生8MHz的时钟源,称为HSI,高速内部时钟源(H意为高速,S意为源,I意为内部);

标注4处是产生32KHz的时钟源,称为LSI,低速内部时钟源;


(2)内外部时钟电路:

晶体振荡器在STM32芯片外部,RC时钟电路在STM32芯片内部,如图中标注2、标注3。

标注2处是产生4-16MHz的时钟源,称为HSE,高速外部时钟源;

标注3是产生32.768KHz的时钟源,称为LSE,低速外部时钟源;

OSC_OUT和OSC_IN、OSC32_OUT和OS32_IN分别接晶振的两个引脚。前者一般接8MHz晶振;后者一定接32.768KHz,因为这个时钟源是供给RTC实时时钟使用的。在51单片机中没有集成RTC模块,在做电子时钟时用到的DS1302集成芯片时,也是为其提供的也是32.768KHz的晶振。


(3)外部时钟电路

晶体振荡电路和RC时钟电路都在STM32芯片外部。如图中标注2、标注3。

OSC_OUT和OSC_IN、OSC32_OUT和OS32_IN除了分别接晶振的两个引脚,对于OSC_IN和OSC32_IN引脚,还可以接入外部的RC时钟电路,其时钟源直接由外部供给,不过这种方案少见。


综上所述,STM32的时钟源有4个: HSI、HSE和LSI、LSE。


HSI时钟源,它是在由STM32在内部用RC振荡电路实现的高速内部时钟源。HIS RC振荡器能够在不需要任何外部期间的条件下提供系统时钟,它的启动时间比HSE晶体振荡器短,但是不精准,即使在校准之后它的时钟频率精度仍较差。在手册中还明确说,当HSI被用作PLL时钟输入时,系统时钟能得到的最大频率是61MHz,这显然不能发挥STM32最极致的性能。


1.3 时钟信号通道选择

虽然HSI不精准,但是鉴于启动速度原因考虑,STM32上电复位,默认是采用HSI时钟源的,当然开发者可以不修改这个时钟源,那么系统将一直工作在一个时钟源不稳定不精准的环境下。


然而一般做法是改变时钟源,将时钟源改为HSE。改变时钟源的通道是在相关寄存器设置的,在图中的PLLSRC可以实现对这两个频率的切换。

这里写图片描述

1.4 锁相环倍频器PLL/预分频器Prescaler

STM32的cpu的工作常规频率是72MHZ(超过72MHz工作称为超频工作,CPU耗电加剧,且会发烫),但是我们接入的晶振是8MHz,这就需要一个对频率加倍的操作,即倍频。如图中的PLLMUL,PLLMULL实现对接入时钟源的倍频,如x2、x3、x4…倍频后的时钟源为PLLCLK。

这里写图片描述

预分频器是实现对频率削减作用的。倍频器将HSE倍频之后提供给cpu,但是除了cpu之外,其他片内外设,如SPI控制模块、IIC控制模块等的工作同样需要时钟源,这些外设的时钟源肯定是低于cpu运行时钟的,例如USB通讯才需要48MHz,所以需要对倍频后的时钟源进行分频。一般芯片的分频做法都是对一个时钟源倍频后供给某些部件,其他低于此倍频后的时钟都是基于此时钟源来分频的。用户可通过多个预分频器配置AHB,高速APB(APB2)和低速APB(APB1)域的频率。AHB和APB2域的最大频率是72MHz。APB1域的最大允许频率是36MHz。SDIO接口的时钟频率固定在HCLK / 2。

经过时钟源的选择、分频/倍频,就可以到HCLK(高性能总线AHB用)、FCLK(供给cpu内核的用,常说的cpu主频)、PCLK(高性能外设总线APB)、USBCLK、TIMXCLK、TIM1CLK、RTCCLK等,外设是挂载STM32的总线上的,具体哪个外设挂载哪个总线,看下图:

这里写图片描述

在软件开发中,我们要做的也无非设置门电路以选择时钟源输入、倍频/分频系数和打开/关闭对应外设所在总线的时钟。


2. STM32输出时钟源

图中的MCO功能模块,可以将PLLCLK / 2、HSI、HSE、SYSCLK输出,供给其他系统作为输入时钟源,对这一功能模块也是又相应的寄存器,图中以MCO标注。

这里写图片描述

3. 系统滴答Systick

Systick就是一个定时器而已,只是它放在了NVIC中,主要的目的是为了给操作系统提供一个硬件上的中断,称之为滴答中断操作系统进行运转的时候,也会有时间节拍。它会根据节拍来工作,把整个时间段分成很多小小的时间片,而每个任务每次只能运行一个时间片的时间长度,超时就退出给别的任务运行,这样可以确保任何一个任务都不会霸占操作系统提供的各种定时功能,都与这个滴答定时器有关。因此,需要一个定时器来产生周期性的中断,而且最好还让用户程序不能随意访问它的寄存器,以维持操作系统的节拍。只要不把它在SysTick控制及状态寄存器中的使能位清除,就一直执行。

这里写图片描述

RCC(复位与时钟控制器)通过AHB时钟(HCLK)8分频后作为Cortex系统定时器(SysTick)的外部时钟。通过对SysTick控制与状态寄存器的设置,可选择上述时钟或Cortex(HCLK)时钟作为SysTick时钟(后者图中没画出)。另外,还有其他时钟,如USB时钟,ADC时钟、独立看门狗时钟等,它们各自的时钟源通过前面学习,也可以轻易分析出来,这里不再赘述。


4. 时钟相关的寄存器

时钟体系涉及到的寄存器有


RCC_CR

RCC_CFGR

RCC_CIR

RCC_APB2RSTR

RCC_APB1RSTR

RCC_AHBENR

RCC_APB2ENR

RCC_APB1ENR

RCC_BDCR

RCC_CSR


这些寄存器的作用直接看数据可知,编程使用部分后续补充。

推荐阅读

史海拾趣

东软载波(EastSoft)公司的发展小趣事

凭借卓越的产品性能和技术实力,东软载波获得了多项荣誉和认证。公司被评为“国家绿色工厂”,多款产品通过国内外权威认证。同时,公司还荣获了多项行业奖项和荣誉称号,如“2022 PLC互联互通·基石奖”、“2022年山东民营企业新一代信息技术行业领军10强”等。这些荣誉的获得充分证明了东软载波在电子行业中的领先地位和实力。

风华(FH)公司的发展小趣事

近年来,全球半导体行业面临严重的缺芯问题,给包括福斯特半导体在内的众多企业带来了巨大挑战。为了应对这一挑战,福斯特半导体积极调整策略,加强内部管理和优化生产结构。公司更新了一套全新的内部管理系统,对多个业务领域和管理板块进行配套和升级,提升了团队研发效率和质量。同时,公司还加强了移动化办公模式的更新升级,满足了灵活管理的需要。通过这些措施,福斯特半导体在保持高效运营的同时,也增强了自身的抗风险能力,为未来的发展奠定了坚实基础。

GC Electronics公司的发展小趣事
如发现传感器、报警装置或电路中的其他部件损坏,应及时更换,以确保报警电路的可靠性。
Advanced Pressure Technology公司的发展小趣事

随着技术的不断进步和市场的不断扩大,APT公司的产品逐渐应用于半导体制造和其他清洁行业,如太阳能电池板、LCD、LED、平板显示器等。2000年,APT公司决定创建高纯度产品系列,并成功推出了HP特种气体应用和AK产品线。这一举措不仅进一步丰富了APT公司的产品线,也使其能够更好地满足高端市场的需求。此后,APT公司不断拓展其市场版图,产品远销全球各地,赢得了广泛的客户认可。

Ceratech Corporation公司的发展小趣事

随着电子行业的快速发展,对电感产品的需求也日益增长。Ceratech Corporation公司敏锐地捕捉到了这一市场机遇,决定拓展电感产品线。公司投入大量研发资源,成功开发出一系列新型电感产品,这些产品不仅性能优异,而且具有广泛的应用范围。通过不断拓展电感产品线,Ceratech Corporation进一步巩固了其在电子行业的地位。

Crystal Semiconductor Corp公司的发展小趣事

在快速发展的同时,Crystal Semiconductor Corp也注重可持续发展。公司积极推行环保理念,采用环保材料和工艺生产产品。同时,公司还加大了对教育和公益事业的投入,培养了一批批优秀的半导体人才。展望未来,Crystal Semiconductor Corp将继续秉承创新、务实、高效的理念,不断推动半导体行业的发展。

请注意,这些故事是虚构的,旨在展示一个半导体公司可能经历的发展阶段和挑战。如果您需要关于Crystal Semiconductor Corp的真实故事,建议您查阅相关公司资料或新闻报道。

问答坊 | AI 解惑

PCB电路版图设计的常见问题

本帖最后由 paulhyde 于 2014-9-15 08:57 编辑 问题1:什么是零件封装,它和零件有什么区别?   答:(1)零件封装是指实际零件焊接到电路板时所指示的外观和焊点位置。   (2)零件封装只是零件的外观和焊点位置,纯粹的零件封装仅仅是空间的概 ...…

查看全部问答>

Windows CE6.0键盘驱动源码中的一个问题

大家好,我最近在看MS的PS2键盘鼠标驱动,发现存在一个问题,在\\WINCE600\\PUBLIC\\COMMON\\OAK\\DRIVERS\\KEYBD\\PS2_8042目录中有ps2port.cpp,这个文件是关于PS2接口操作的实现。其中有两个成员函数: bool Ps2Port:: EnterWrite(   &n ...…

查看全部问答>

手机软件研发 项目经理 猎头职位

请联系 Vicky MSN : vicky121121@hotmail.com Job Description: Strong project management experience is required. Knowledge of embedded software design for mobile terminals and general knowledge about mobile device project is hi ...…

查看全部问答>

请教一个wince外围扩展ad的问题

我用的是2410,在bank1上接了个ad7859及其外围电路,用16位的地址总线   板子上电后,超级终端出现如下调试信息:   ......   USB : SerPowerOff   USB:HW_PowerOff()   -- Exit &nbs ...…

查看全部问答>

WinCE下的文件写入问题

为什么在SH4上创建了2个文件后,都想文件里写的话,只能最大写入4K,一个文件打开并写文件的话就可以超过4K,急待高手解惑!!…

查看全部问答>

有偿寻精通MINIGUI1.3的高手修改应用程序

开发环境: 24x0 ARM-linux 2.4/2.6 Minigui1.3.x 电话:010-81950515 邮件:lStonecn@gmail.com …

查看全部问答>

如何配置wince与winxp之间的直接电缆连接?

配置winxp为主机,wince为客户机(通过rs232串口连接),从wince连接winxp主机始终不成功,提示端口波特率不匹配。 望不吝赐教!…

查看全部问答>

2010安徽省电子设计大赛元器件清单

本帖最后由 paulhyde 于 2014-9-15 09:48 编辑 …

查看全部问答>

12232液晶模块12232液晶显示驱动程序

12232液晶模块12232液晶显示驱动程序.rar…

查看全部问答>

STM32USB转虚拟串口需要安装驱动?

                                 我把例程序移植到我的软件上之后系统响应到该设备可是需要安装驱动程序?在哪里可以下载到啊?…

查看全部问答>