STM32的时钟系统(嵌入式学习)

news2024/11/15 0:07:05

STM32的时钟系统

  • 时钟的基本概念
  • 时钟系统的组成
  • 时钟源
    • 晶体振荡器和RC振荡器的区别
      • 晶体振荡器
      • RC振荡器
  • STM32G030时钟源
  • 时钟树
  • STM32CubeMX时钟树配置

时钟的基本概念

时钟是指用于计量和同步时间的装置或系统。时钟是嵌入式系统的脉搏,处理器内核在时钟驱动下完成指令执行,状态变换等动作,外设部件在时钟的驱动下完成各种工作,例如:串口数据的发送、AD转换、定时器计数等。因此时钟对于计算机系统是至关重要的,通常时钟系统出现问题也是致命的,比如振荡器不起振、振荡不稳、停振等。 时钟信号推动单片机内各个部分执行相应的指令,时钟就像人的心跳一样。

以下是一些与时钟相关的基本概念:

  1. 时钟频率:时钟频率指的是时钟信号的周期性重复次数,通常以赫兹(Hz)为单位表示。它表示每秒钟时钟信号的发生次数。较高的时钟频率可以提供更高的系统性能,但也会增加功耗和热量。

  2. 时钟周期:时钟周期是时钟信号完成一个完整周期所需的时间。它是时钟频率的倒数,表示一个时钟周期的持续时间。例如,一个1 MHz的时钟频率对应的时钟周期为1微秒(1μs)。

  3. 时钟源:时钟源是提供时钟信号的来源。在计算机系统中,可以使用外部晶体振荡器、外部时钟信号或内部振荡器作为时钟源。

  4. 时钟同步:时钟同步是确保多个组件或设备使用相同的时钟信号进行操作的过程。同步时钟信号可以确保系统的稳定性和可靠性,避免数据损坏或操作错误。

  5. 时钟分频器:时钟分频器是一种用于减小时钟频率的电路或模块。它可以通过将时钟信号分频来降低系统时钟频率,以适应特定的需求。分频器可以将高频时钟信号分成较低频率的时钟信号。

  6. 时钟延迟:时钟延迟是指由于时钟信号的传播和处理所引入的时间延迟。在计算机系统中,时钟延迟可能会对操作的准确性和性能产生影响。因此,在设计和优化系统时,需要考虑和管理时钟延迟。

时钟在计算机系统中起着至关重要的作用,它不仅用于同步操作,还用于计算、通信和各种时序操作。

时钟系统的组成

时钟系统是计算机或电子设备中的一个重要组成部分,它提供了计时、同步和协调各个组件的功能。以下是常见的时钟系统组成部分:

  1. 振荡器(Oscillator):振荡器是时钟系统的基础,用于产生稳定的时钟信号。它可以是晶体振荡器(Crystal Oscillator)、陶瓷振荡器(Ceramic Oscillator)或压控振荡器(Voltage Controlled Oscillator,VCO)等。振荡器的频率决定了时钟信号的频率。

  2. 时钟发生器(Clock Generator):时钟发生器接收振荡器提供的时钟信号,并根据需要生成其他频率的时钟信号。它通常包括频率分频器(Divider)、锁相环(Phase-Locked Loop,PLL)等模块,用于产生不同频率的时钟信号。

  3. 分频器(Divider):分频器用于将输入时钟信号分频为较低频率的时钟信号。通过分频器,可以将高频率的时钟信号分割为适合特定组件或子系统的低频率时钟信号。

  4. 锁相环(Phase-Locked Loop,PLL):PLL是一种反馈环路系统,用于将输入的时钟信号倍频为更高频率的时钟信号。它由相频比较器(Phase Comparator)、电压控制振荡器(Voltage Controlled Oscillator,VCO)、分频器等组成。

  5. 时钟分配网络(Clock Distribution Network):时钟分配网络将时钟信号传输到系统中的各个组件或子系统。它通常包括时钟线路、时钟分配器(Clock Distributor)、时钟缓冲器(Clock Buffer)等元件,以确保时钟信号的准确传递和稳定性。

  6. 外设时钟控制(Peripheral Clock Control):许多系统中包含各种外设,如UART、SPI、ADC等。这些外设通常具有自己的时钟域,需要通过外设时钟控制模块来配置和控制其操作时钟。

  7. 时钟检测与校准(Clock Monitoring and Calibration):为了确保时钟系统的可靠性和准确性,可能需要进行时钟检测和校准。这可以包括检测时钟频率、校准时钟偏差、监控时钟故障等功能。

时钟系统的组成可以根据具体的应用和设计要求而有所不同。以上列举的组成部分是常见的基本元素,用于提供稳定、精确和可靠的时钟信号,并确保系统各个组件的同步运行。

主要组成:时钟源(振荡源)、唤醒定时器、倍频器、分频器
在这里插入图片描述

时钟源

时钟源是时钟系统中提供时钟信号的来源。以下是一些常见的时钟源:

  1. 外部晶体振荡器(Crystal Oscillator):外部晶体振荡器使用晶体(通常是石英晶体)来产生稳定的时钟信号。这种时钟源提供了高精度和稳定性,并常用于需要较高时钟质量的应用,例如微处理器、微控制器和精确计时系统。

  2. 陶瓷振荡器(Ceramic Oscillator):陶瓷振荡器是一种使用陶瓷谐振器来产生时钟信号的振荡器。它相对于晶体振荡器来说成本较低,尺寸较小,但精度和稳定性通常较差。它适用于一些对精度要求相对较低的应用。

  3. 内部振荡器(Internal Oscillator):一些微控制器和集成电路内部集成了振荡器电路,用于产生基本的时钟信号。这些内部振荡器通常是RC振荡器(使用电阻和电容)或LC振荡器(使用电感和电容)。相对于外部晶体振荡器,内部振荡器成本低,但精度和稳定性较差。

  4. 外部时钟信号(External Clock Signal):有些系统可以通过外部接口接收来自其他设备或系统的时钟信号作为时钟源。这种外部时钟信号可以是其他设备的输出,如主机系统时钟或网络时间协议(NTP)同步的时钟信号。

  5. 内部时钟生成模块(Internal Clock Generation Module):一些系统具有内部时钟生成模块,可以根据特定的配置和设置生成时钟信号。这些模块通常由PLL(锁相环)和分频器组成,可以产生具有不同频率和相位的时钟信号。

晶体振荡器和RC振荡器的区别

晶体振荡器

在这里插入图片描述

在这里插入图片描述

优点: 晶体振荡器信号稳定、质量好,连接方式简单。
缺点: 价格高,需要较长的启动时间(起振时间)
晶体振荡器分类:
无源晶振是有2个引脚的无极性元件,需要借助于时钟电路才能产生振荡信号,自身无法振荡起来。
有源晶振有4只引脚,是一个完整的振荡器,其中除了石英晶体外,还有晶体管和阻容元件,因此体积较大。有源晶振不需要CPU的内部振荡器,信号稳定,质量较好,而且连接方式比较简单。

RC振荡器

由电阻和电容设计的振荡电路,能够将直流电转换成具有一定频率的交流信号输出。
在这里插入图片描述
优点: 实现的成本比较低,仅由电阻电容构成。
缺点: 精度存在问题,振荡频率会存在误差。

倍频器: CPU需要更高频率,晶体振荡器制作成本较高(而且自身不稳定),不易直接生产高频振荡器,可以利用倍频器对现有时钟频率进行放大。
分频器: 外设需要不同频率,为了降低功耗,可以进行分频以提供不同频率时钟信号。

为什么要设计倍频器和分频器?
在STM32微控制器中,倍频器(PLL)和分频器用于产生系统时钟(SYSCLK)以及其他外设时钟。它们的设计是为了满足不同应用的需求,提供灵活性和可调节性。

倍频器(PLL)是一个时钟发生器,它通过将输入时钟信号(通常为晶体振荡器提供的低频时钟)进行倍频来生成高频时钟。倍频器允许系统以更高的频率运行,从而提高处理器的执行速度和系统的性能。通过适当设置倍频系数,可以将输入时钟倍增到所需的频率,以满足处理器和外设的时钟要求。

分频器是一个时钟调整器,它将系统时钟或外部时钟信号进行分频,以获得所需的较低频率时钟信号。分频器常用于外设模块,因为某些外设可能只能工作在特定的频率范围内。通过选择适当的分频系数,可以将系统时钟分频为适合特定外设的频率。

STM32微控制器提供了多个时钟源和时钟分频器,以满足不同应用的需求。这种设计使得开发者能够根据系统要求调整系统时钟和外设时钟的频率,以获得最佳性能和功耗平衡。

STM32G030时钟源

在这里插入图片描述

HSI : 高速内部时钟,由RC振荡电路产生16Mhz的时钟频率。
HSE : 高速外部时钟,由外部晶体/陶瓷谐振器产生4-48Mhz的时钟信号,一般外接8Mhz晶振。
LSI : 低速内部时钟,由低速RC振荡电路产生32Khz的时钟频率。
LSE: 低速外部时钟,由低速晶振产生32.768Khz的时钟频率。

时钟树

在这里插入图片描述
RTC实时时钟是一个独立的定时器。STM32 的 RTC 模块拥有一组连续计数的计数器,在相应软件配置下,可提供时钟日历的功能。只要电源电压保持在工作范围内,RTC永远不会停止。

Hclk为高性能总线(AHB bus peripherals )供给时钟信号(AHB为advanced high-performance bus) ; 由系统时钟SYSCLK分频得到,一般不分频,等于系统时钟,HCLK是高速外设时钟,是给外部设备的,比如内存,flash。

Pclk为低速总线外设总线(APB busperipherals)供给时钟信号

PLL为锁相环倍频输出, 如果希望有一个比较大的时钟频率,可选择 PLLCLK 作为系统时钟。其时钟输入源可选择为HSI,HSE、倍频可选择为8~86倍,但是其输出频率最大不超过64MHz

STM32CubeMX时钟树配置

在STM32CubeMX中配置时钟树是相对简单的过程。下面是一个大致的步骤指南:

  1. 打开STM32CubeMX软件,并创建一个新的项目。

  2. 选择适合你的STM32微控制器型号,并选择相应的封装。

  3. 在"Pinout & Configuration"选项卡中,根据你的需求配置引脚和外设。

  4. 在"RCC"选项卡中,配置系统时钟(SYSCLK)和外设时钟。以下是一些关键步骤:

    a. 选择主时钟源(HSE、HSI、PLL等)。

    b. 配置主时钟源的参数,例如晶体振荡器的频率或HSI的使能。

    c. 配置PLL的倍频系数和分频系数,以生成所需的系统时钟频率。

    d. 配置AHB、APB1和APB2总线的分频系数,以产生外设时钟。

  5. 配置其他时钟源和外设时钟,例如RTC时钟、USB时钟等。

  6. 根据需求,配置低功耗模式和时钟安全系统。

  7. 确认配置无误后,点击"Project"菜单中的"Generate Code"或"Open Project",生成代码或打开生成的工程文件。

请注意,具体的配置选项可能会因不同的STM32微控制器型号而有所差异。因此,在进行时钟树配置之前,你需要了解所选微控制器的数据手册和参考手册,以获得更详细的指导和确切的配置选项。

以下是STM32G030的配置

1.选择好芯片后,点击Clock Configuration 进入时钟树的配置
在这里插入图片描述
2.点击RCC选择时钟源在这里插入图片描述
3.配置时钟树
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/671576.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Goby 漏洞发布|PandoraFMS 软件 upload_head_image.php 任意文件上传漏洞

漏洞名称:PandoraFMS 软件 upload_head_image.php 任意文件上传漏洞 English Name:PandoraFMS upload_head_image.php Arbitrary File Upload Vulnerability CVSS core: 9.0 影响资产数:768 漏洞描述: PandoraFMS是美国Pando…

【Python】文件操作 ④ ( 文件操作 | 向文件写出数据 | 使用 write 函数向文件中写出数据 | 使用 flush 函数刷新文件数据 )

文章目录 一、向文件写出数据1、使用 write 函数向文件中写出数据2、使用 flush 函数刷新文件数据3、代码示例 - 使用 write / flush 函数向文件中写出数据 一、向文件写出数据 1、使用 write 函数向文件中写出数据 Python 中 通过 调用 write 函数 向文件中写入数据 ; 语法如下…

Fiddler抓包工具之fiddler的常用快捷键

一、常用三个快捷键 ctrlX :清空所有记录 CtrlF:查找 F12:启动或者停止抓包 使用 QuickExec Fiddler2 成了网页调试必备的工具,抓包看数据。Fiddler2自带命令行控制。 fiddler 命令行快捷键:ctrl q ,然后 输入 help…

记一次杀猪盘网站渗透

1、首先访问杀猪盘主站。 2、通过扫描子域名找到后台管理系统。 3、对其后台的登录接口进行测试,发现接口的用户名参数存在sql注入,直接跑数据。 4、注入得到后台的账密如下,用户名和safecode是明文的,password使用自定义加密。 跑出来了账号…

PaaS2.0、Matter、AIGC、新能源…TUYA开发者大会亮点抢先看

6月29日,TUYA开发者大会(深圳)即将开幕。作为业内备受关注的盛会,大会的各种“路透”消息络绎不绝。那么TUYA开发者大会将呈现哪些精彩,我们带大家一探究竟。 亮点1:IoT行业风向标 积蓄2年的硬核分享 TUYA…

【Ribbon实现客户端负载均衡和故障转移】—— 每天一点小知识

💧 R i b b o n 实现客户端负载均衡和故障转移 \color{#FF1493}{Ribbon实现客户端负载均衡和故障转移} Ribbon实现客户端负载均衡和故障转移💧 🌷 仰望天空,妳我亦是行人.✨ 🦄 个人主页——微风撞见云的博客…

掌握会议任务追踪技巧,提高会议效率!

跟踪会议任务是有效项目管理的重要组成部分。会议可以产生许多需要完成的行动项目和任务,如果没有适当的跟踪,这些任务很容易被遗漏。在本文中,我们将概述如何有效地跟踪会议任务。 1、在会议中分配任务 在会议期间,将任务分配给特…

眼球交互vs眼疲劳,前Vision Pro设计师揭秘这些细节

Vision Pro的发布带来了众多讨论,从交互层面来看,它真正的将AR/VR的首选交互从手柄转移到手势眼球上面来,此前的AR、VR大部分还是通过手柄来完成交互(HoloLens除外),手势交互是它们的第二选择。 交互方式主…

leetcode847. 访问所有节点的最短路径

847. 访问所有节点的最短路径 状态压缩 这是一个等权无向图&#xff0c;题目要我们求从「一个点都没访问过」到「所有点都被访问」的最短路径。 同时1 < n < 12, n 最大只有 12&#xff0c;容易想到使用「状态压缩」来代表「当前点的访问状态」&#xff1a;使用二进制表…

Windows下部署Appium教程(Android App自动化测试框架搭建)

摘要: 1&#xff0c;appium是开源的移动端自动化测试框架&#xff1b; 2&#xff0c;appium可以测试原生的、混合的、以及移动端的web项目&#xff1b; 3&#xff0c;appium可以测试ios、android、firefox os&#xff1b; 4&#xff0c;appium是跨平台的&#xff0c;可以用在os…

【系统开发】尚硅谷 - 谷粒商城项目笔记(七):消息队列

文章目录 消息队列概述两大种类RabbitMQ安装及基操Docker中安装添加用户创建Virtual Hosts设置权限添加交换机创建队列交换机绑定队列 五种消息模型SpringBoot整合MQ引入依赖properties配置开启RabbitMQ API使用创建交换机创建队列交换机绑定队列发送消息接收消息 消息确认机制…

Notification API实战

什么是Notification&#xff1f; Notifications API 的接口 Notification 用于配置以向用户显示桌面通知。 这些通知的外观和功能因平台而异&#xff0c;但通常它们会提供一种异步向用户提供信息的方式。 前置要求 win10系统&#xff0c;且通知与操作中开启浏览器的通知权限 浏…

学习 SSL/TLS ,这一篇就够了

写在前面 如果某个网站受 SSL 证书保护&#xff0c;其相应的 URL 中会显示 HTTPS&#xff08;超文本传输安全协议&#xff09;。单击浏览器地址栏的小绿锁&#xff0c;即可查看证书中的详细信息。那么一本证书是如何诞生的&#xff1f;HTTPS 背后的 SSL/TLS 是如何在工作过程中…

❤ vue3 组件传值

❤ vue3 组件传值 [1] 子组件向父组件传值 使用emit使用方法 【子组件】 1、定义 emits,emits的定义是与component、setup等这些属性是同级 emits此时是作为数组&#xff0c;它也可以接收一个对象 2、使用 setup(props, { emit, refs }) {emit(addImg, 参数); }有时候需使…

Ubuntu20.04的cuda、cudnn、paddle安装完整过程

1、查看显卡驱动版本 显卡驱动安装看这篇&#xff1a; https://blog.csdn.net/Trisyp/article/details/131302061?spm1001.2014.3001.5501 然后输入命令nvidia-smi 查看显卡状态 2、CUDA 下载安装 直接手动在官网下载&#xff1a;CUDA Toolkit Archive | NVIDIA Developer…

【计算机视觉 | 目标检测】arxiv 计算机视觉关于目标检测的学术速递(6月 21 日论文合集)

文章目录 一、检测相关(14篇)1.1 CrossKD: Cross-Head Knowledge Distillation for Dense Object Detection1.2 Depth and DOF Cues Make A Better Defocus Blur Detector1.3 Spatiotemporal Pyramidal CNN with Depth-Wise Separable Convolution for Eye Blinking Detection …

使用Kettle做数据迁移

1.Kettle简介 Kettle是一个颇受认可的开源ETL(Extract-Transform-Load 的缩写&#xff0c;即数据抽取、转换、装载的过程)工具&#xff0c;2006年被Pentaho收购&#xff0c;2015年又被Hitachi Vantara收购&#xff0c;正式命名为PDI。 PDI EE&#xff08;企业商用版&#xff0…

ASP.NET Core MVC 从入门到精通之Filter

随着技术的发展&#xff0c;ASP.NET Core MVC也推出了好长时间&#xff0c;经过不断的版本更新迭代&#xff0c;已经越来越完善&#xff0c;本系列文章主要讲解ASP.NET Core MVC开发B/S系统过程中所涉及到的相关内容&#xff0c;适用于初学者&#xff0c;在校毕业生&#xff0c…

【数据分享】1929-2022年全球站点的逐月降雪深度数据(Shp\Excel\12000个站点)

气象数据是在各项研究中都经常使用的数据&#xff0c;气象指标包括气温、风速、降水、能见度等指标&#xff0c;说到气象数据&#xff0c;最详细的气象数据是具体到气象监测站点的数据&#xff01; 对于具体到监测站点的气象数据&#xff0c;之前我们分享过1929-2022年全球气象…

JavaScript排序sort()方法(解决null、undefined、0之间的排序(混乱)问题)

问题&#xff1a; 如果数组内某一对象为空值&#xff0c;排序是怎样的呢&#xff1f;(显然并不是按年龄顺序排序的&#xff0c;因为存在null和undefined) var arr[{"age":24,name:zs},{"age":0,name:ls},{"age":0,name:gr}&#xff0c;{"…