单片机为什么需要时钟?2种时钟电路对比?

news2024/11/26 4:29:19

目录

一、晶体振荡器(Crystal Oscillator)的核心知识

二、单片机为什么需要时钟电路?

三、单片机的时钟电路方案

01、外部晶振方案

02、内部晶振方案

 四、总结        


单片机研发设计的项目中,它的最小电路系统包含

  1. 电源电路
  2. 复位电路
  3. 时钟电路;

这些是构成电路的基本单元

6e84993589dd1b6310b0fd87bad772e0.png

其中电源电路与复位电路,工程师一般非常容易理解与设计。

然而对于时钟电路,由于不同的开发项目功能需求不一样,设计的方案选择也不尽相同,很难得到有效的统一设计。

比如:一个项目对研发成本要求较严格,功能较简单;而另一个项目电路系统需要与外界电路系统完成串口通信,通信数据要求不能出错;这两个电路就有很大区别

首先,从最基本的晶体振荡器说起

一、晶体振荡器(Crystal Oscillator)的核心知识

晶体振荡器是一种常见且精度高的时钟源。它通常由一个石英晶体振荡器组成,其振荡频率由晶体的物理特性决定

晶体振荡器一般包括以下几点:

石英晶体:晶体的选择取决于所需的振荡频率和精度。常见的石英晶体频率包括32.758K, 12MHz、24MHz等。

振荡电路:晶体振荡器需要一个振荡电路来启动和维持振荡。这通常涉及到晶体振荡器芯片或集成电路。

负载电容:晶体振荡器的工作需要与其并联的负载电容。这些电容帮助调节振荡频率。

振荡器输出:振荡器的输出连接到单片机的时钟输入引脚。

da7c10a615c7b4aad12d33647e08a356.png

晶体振荡器的优点包括高稳定性和精度,适用于需要较高时钟精度的应用,如通信设备和精密测量仪器。

二、单片机为什么需要时钟电路?

时钟电路对于单片机的正常运行至关重要,因为它提供了基准时序,用于同步单片机内部各个模块的操作。主要用在以下地方:

同步操作:单片机内部的各个功能模块,如CPU、存储器、输入/输出接口等,需要在特定的时间点协同工作。时钟信号提供了一个同步基准,确保这些模块按照预定的时间序列进行操作。

指令执行:单片机的CPU执行指令的速度是由时钟信号控制的。每个时钟周期,CPU执行一个或多个指令。时钟的存在确保了指令的有序执行。

数据传输:在数据传输和处理过程中,时钟信号确保了数据在正确的时间被读取或写入。这对于确保数据的可靠性和一致性非常重要。

定时器和计数器:许多单片机内置了定时器和计数器,用于执行定时任务、计算时间间隔等。这些功能通常依赖于时钟信号的精准计时。

串行通信:时钟信号对于串行通信协议(如UART、SPI、I2C等)的正确传输和接收数据至关重要。时钟同步确保数据的准确传输。

功耗管理:单片机通常具有不同的功耗模式,如运行模式、睡眠模式等。时钟电路有助于在不同的模式之间切换,并控制单片机的整体功耗。

系统稳定性:时钟信号的稳定性对于整个系统的稳定性和可靠性至关重要。不稳定的时钟信号可能导致系统不可预测的行为。

综上所述,时钟电路为单片机提供了一个基准,确保内部各个部件在协调的时间序列内正常运行。这对于单片机的可编程性和灵活性至关重要,使其能够适应各种不同的应用场景。

三、单片机的时钟电路方案

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

01、外部晶振方案

所谓外部晶振方案,是指在单片机的时钟引脚X1与X2外部连接一个晶振。如下图所示,这种电路常用在早期的单片机电路中,或者对时钟要求精度高的系统中。因为,内部时钟,由于单片机内部设计空间成本考虑,所以,始终精度有限。

         07e58c262009515ca8da8bf17c470da8.png

单片机外部晶振图

优点:时钟频率精度高,稳定性能好;

对于一些数据处理能力要求较高的项目,尤其是多个电路系统彼此需要信息通讯,如包含USB通讯、CAN通讯的项目,选用外部晶振的方案较多。

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


02、内部晶振方案

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

16a2025cd0a82a0a6a76c04226731f1a.png

单片机内部晶振电路图

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

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

这种电路,外部不需要晶振及电容,大批量生产,尤其节省成本,因此被多数成本敏感性方案所采纳。

然后,看看芯片内部的时钟大概结构

系统时钟控制器为单片机的CPU和所有外设系统提供时钟源,系统时钟有3个时钟源可供选择:内部高精度24MHz的IRC、内部32KHz的IRC(误差较大)、外部晶体振荡器或外部时钟信号。用户可通过程序分别使能和关闭各个时钟源,以及内部提供时钟分频以达到降低功耗的目的。

单片机进入掉电模式后,时钟控制器将会关闭所有的时钟源

1a63eee6b473de88eb058f5e6a081159.png

 四、总结        

单片机的时钟电路设计方案主要有两种:

外部晶振方案和内部RC振荡器方案。

外部晶振方案:

晶振选择:需要选择一个适当的晶振,通常是石英晶振。选择的晶振频率应符合单片机的时钟要求,如8MHz、11.0596MHz等。

振荡电路:外部晶振方案需要一个振荡电路来启动和维持晶振的振荡。这个电路通常由外部的振荡器芯片或晶振驱动芯片提供。

负载电容:晶振通常需要连接负载电容以确保振荡的稳定性。这些电容的值通常在晶振的数据手册中给出。

连接至单片机:振荡器的输出连接到单片机的时钟输入引脚。

外部晶振方案的优点包括稳定性高、精度好,适用于对时钟要求较高的应用,例如通信设备、高精度测量仪器等。

内部RC振荡器方案:

内部振荡器:很多单片机都内置了RC(电阻-电容)振荡器。这种振荡器通常比外部晶振简单,但精度较低。

调整频率:有些单片机允许通过软件调整内部RC振荡器的频率,以满足应用的要求。

成本和尺寸:内部RC振荡器方案通常更简单,成本更低,适用于对时钟要求不那么严格的应用。

连接至单片机:内部振荡器的输出直接连接到单片机的时钟输入引脚。

3ecc23a1163e215bd96726a55c622e72.png

二者对比:

内部RC振荡器方案的优点在于成本低、设计简单,适用于一些对时钟精度要求不高的应用,例如一般的嵌入式系统。        

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

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

相关文章

QT:颜色选择器

普通 Qt提供了一个现成的QColorDialog类。 用法: #include <QColorDialog>QColor color QColorDialog::getColor(Qt::white, this); if(!color.isValid()){//点击 关闭 或 cancel 颜色无效 }else {ui->text->setText(color.name());//类似##ffffQRgb rgb colo…

Android9-W517-使用NotificationListenerService监听通知

目录 一、前言 二、前提 三、方案 方案一 方案二 方案三 方案四 方案五 方案六 方案七 四、关于NotificationListenerService类头注释 五、结论 一、前言 NotificationListenerService可以让应用监听所有通知&#xff0c;但是无法获得监听通知的权限&#xff0c;如…

x86 Ubuntu上编译eudev给龙芯loongarch64架构主机使用

1、下载eudev库eudev-master.zip&#xff0c;链接&#xff1a;eudev库官方地址 2、下载龙芯的交叉编译工具&#xff1a;loongson-gnu-toolchain-8.3-x86_64-loongarch64-linux-gnu-rc1.2.tar.xz&#xff0c;链接&#xff1a;龙芯交叉编译官方地址 3、交叉编译器环境搭建 (1)、…

Spring-Cloud中服务发现是什么?干什么的?怎么用?

&#x1f413; 是什么 Spring Cloud通过Eureka或Consul等服务注册与发现组件来实现微服务间的相互感知。服务提供者将自己的服务信息注册到注册中心&#xff0c;服务消费者从注册中心获取服务提供者的信息&#xff0c;从而进行服务调用。 &#x1f413; 干什么 在Spring Cloud…

nodejs安装教程(及过程中的易错)

nodejs&#xff1a;Nodejs 是基于 Chrome 的 V8 引擎开发的一个 C 程序&#xff0c;目的是提供一个 JS 的运行环境。 npm&#xff1a;npm 是 Node Package Manager 的缩写&#xff0c;意思是 Node 的包管理系统&#xff0c;是最大的软件包仓库 下载nodejs 首先我们需要在node…

VNC 与 虚拟机 保姆级 快速入门图文指导

Time: 2024年3月5日22:31:49 By[ V ]: MemoryErHero 重要的事情先说三遍: 1 虚拟机内无需安装 VNC-Viewer-7.0.1-Windows 2 虚拟机内无需安装 VNC-Viewer-7.0.1-Windows 3 虚拟机内无需安装 VNC-Viewer-7.0.1-Windows 1 VNC 图文安装 流程 ① VNC-Viewer-7.0.1-Windows.e…

【Python】Python注册微服务到nacos

Python注册微服务到Nacos 1.Nacos部署 github 的nacos项目的发布页&#xff08;Releases alibaba/nacos GitHub &#xff09;&#xff0c;选择所要下载的nacos版本&#xff0c;在nacos下方的assets中选择安装包进行下载。 解压nacos安装包到指定目录。 tar -zxvf nacos-ser…

SpringCloud-MQ消息队列

一、消息队列介绍 MQ (MessageQueue) &#xff0c;中文是消息队列&#xff0c;字面来看就是存放消息的队列。也就是事件驱动架构中的Broker。消息队列是一种基于生产者-消费者模型的通信方式&#xff0c;通过在消息队列中存放和传递消息&#xff0c;实现了不同组件、服务或系统…

微信小程序触屏事件_上划下划事件

一、微信小程序触屏事件 bindtouchstart&#xff1a;手指触摸动作开始 bindtouchmove&#xff1a;手指触摸后移动 bindend&#xff1a;手指触摸动作结束 属性类型说明touchesArray触摸事件&#xff0c;当前停留在屏幕中的触摸点信息的数组 Touch 对象 属性类型说明identi…

【数据结构和算法初阶(C语言)】顺序表+单链表经典例题图文详解(题解大合集,搭配图文演示详解,一次吃饱吃好)

目录 1.移除链表元素 1.1思路1&#xff1a;遍历删除 1. 2 思路2&#xff1a;尾插法 2.反转链表 3.链表的中间节点 3.1解题思想及过程 3.2快慢指针思想解题---变式&#xff1a;返回链表的倒数第K个节点 4.合并两个有序链表 4.1解题思想 1取小的尾插 5.反转链表 6…

【工作经验分享】,金三银四大厂面经总结

面试题 一般Android面试分为两部分&#xff1a;Java部分和Android部分&#xff0c;下面说一下自己面试过程遇到的一些具体题目和一些相关知识点。 一 JAVA相关 1&#xff09;JAVA基础 1.java基本数据类型有哪些&#xff0c;int&#xff0c; long占几个字节 2. 和 equals有什…

Maven【5】在IDEA环境中配置和使用Maven

【1】创建父工程 1.创建 Project 按照idea工程的布局&#xff0c;project相当于父工程&#xff0c;里面的module相当于子工程&#xff08;模块工程&#xff09; 我们先来创建最外层这个父工程&#xff1a;

vue在线查看pdf文件

1.引入组件 npm install --save vue-pdf2、pdf组件页面模板 <template><div class"scrollBox" ><el-dialog :visible.sync"open" :top"1" width"50%" append-to-body><div slot"title"><el…

【强化学习的数学原理-赵世钰】课程笔记(七)时序差分方法

一.内容概述 第五节课蒙特卡洛&#xff08;Mento Carlo&#xff09;方法是全课程中第一次介绍 model-free 的方法&#xff0c;本节课的 Temporal-difference learning&#xff08;TD learning&#xff09;是我们要介绍的第二种 model-free 的方法。基于蒙特卡洛&#xff08;Me…

清澈喷嚏,宝宝舒爽轻松:新生儿打喷嚏的温馨指南

引言 新生儿的喷嚏声&#xff0c;如同小鸟啁啾&#xff0c;是宝宝在探索世界时展示的自然表现。尽管这种可爱的行为可能会让家长产生担忧&#xff0c;但实际上&#xff0c;喷嚏是宝宝健康成长的正常体征之一。在这篇文章中&#xff0c;我们将分享一些关于新生儿打喷嚏的注意事…

答题pk小程序源码技术大解析

答题pk小程序源码解析 在数字化时代&#xff0c;小程序因其便捷性、即用性而受到广泛欢迎。其中&#xff0c;答题pk小程序更是成为了一种寓教于乐的现象。它不仅为用户提供了趣味性的知识竞技平台&#xff0c;还为企业、教育机构等提供了互动营销和知识传播的新途径。本文将对…

Minio容器化部署并整合SpringBoot

1、启动minio容器 docker run -p 9000:9000 -p 9090:9090 --name minio -d --restartalways -e MINIO_ACCESS_KEYminio -e MINIO_SECRET_KEYminio -v /usr/local/minio/data:/data -v /usr/local/minio/config:/root/.minio minio/minio server /data --console-addr…

HTML入门:05HTML多媒体

HTML入门&#xff1a;05HTML多媒体 1 video标签1.1 控制按钮&#xff1a;controls1.2 宽度和高度&#xff1a;width和heightt1.3 预载&#xff1a;preload1.4 静音&#xff1a;muted1.5 自动播放&#xff1a;autoplay1.6 无限循环&#xff1a;loop1.7 poster 2 audio标签 在早期…

二百二十七、Linux——通过shell脚本判断HDFS文件是否存在,如果存在则删除HDFS文件

一、目的 在用脚本去实现对HDFS中过期的ODS层原始数据进行删除后&#xff0c;发现还需要在脚本中对HDFS文件是否存在进行判断&#xff0c;否则如果HDFS文件不存在那么任务执行就会报错 报错原因是这一天的HDFS文件并不存在 原有脚本 #! /bin/bash source /etc/profile nowda…

【bug日记】已解决:Invalid bound statement (not found): 找不到对应的Mapper映射类

急着解决问题的哥们直接用目录跳到下文哈 我放传送门了 目录 试错 尝试过确认的东西&#xff1a; 最终解决方案&#xff01;已经完美解决&#xff1a; 只需要在你配置数据源的地方&#xff1a; 更改为&#xff1a; MybatisSqlSessionFactoryBean sessionFactory …