当前位置: 首页 > news >正文

【SoC基础】单片机之RCC模块

📢:如果你也对机器人、人工智能感兴趣,看来我们志同道合✨
📢:不妨浏览一下我的博客主页【https://blog.csdn.net/weixin_51244852】
📢:文章若有幸对你有帮助,可点赞 👍 收藏 ⭐不迷路🙉
📢:内容若有错误,敬请留言 📝指正!原创文,转载注明出处

RCC模块简介

RCC(Reset and Clock Control)即复位和时钟控制模块,其基本功能总结如下:

时钟源管理

  • 多源选择:支持多种时钟源,包含内部RC振荡器(如HSI、LSI)和外部晶振(如HSE、LSE),能够依据系统需求和不同应用场景来挑选合适的时钟源。
  • 切换灵活:可在不同时钟源之间灵活切换,确保系统在不同条件下都能稳定运行,例如在外部晶振故障时,能自动切换到内部RC振荡器。

时钟信号生成与调节

  • 倍频与分频:借助PLL(锁相环)实现时钟信号的倍频,以得到更高频率的时钟;同时可以对时钟进行分频操作,满足不同外设对不同时钟频率的要求。
  • 精准控制:能够精确控制各个时钟域(如AHB、APB1、APB2)的时钟频率,保证各部件按预定的时序准确工作。

复位控制

  • 多种复位模式:提供系统复位、电源复位、备份区域复位等多种复位方式,可在系统出现异常或需要初始化时,使单片机恢复到初始状态。
  • 复位状态监测:能对复位原因进行记录和监测,方便开发人员在系统出现问题时进行故障排查。

时钟使能与管理

  • 按需供电:可以对各个外设的时钟进行独立的使能和关闭操作,在不需要某些外设工作时,关闭其时钟供应,从而降低系统功耗。
  • 同步协调:确保各个外设和模块的时钟同步,使它们能够协同工作,避免因时钟不同步而导致的数据传输错误或系统故障。

以下是RCC基本功能的表格总结:

功能分类具体功能
时钟源管理支持内部RC振荡器和外部晶振等多种时钟源,可灵活切换
时钟信号生成与调节通过PLL实现倍频,对时钟进行分频,精确控制各时钟域频率
复位控制提供多种复位方式,记录和监测复位原因
时钟使能与管理独立使能或关闭外设时钟,确保各模块时钟同步,降低功耗

系统时钟来源

单片机的系统时钟来源主要有内部时钟源和外部时钟源两种,以下是单片机系统时钟来源的总结表格:

时钟源类型名称产生方式频率范围特点应用场景
内部时钟源HSI(高速内部时钟)芯片内部RC振荡器产生如STM32F1系列通常为8MHz,STM32F407为16MHz成本低,启动快,精度和稳定性相对差对时钟精度要求不高的简单控制任务等
LSI(低速内部时钟)内部RC振荡器30kHz - 60kHz左右,通常约为40kHz可在停机和待机模式下运行,功耗低独立看门狗、自动唤醒单元等
PLL(锁相环倍频输出)以HSI/2、HSE或HSE/2等为输入,经倍频得到输出频率有一定限制,如STM32F1系列最大不超过72MHz能提供较高频率时钟,可灵活配置高速数据处理、通信接口等对时钟频率要求高的模块
外部时钟源HSE(高速外部时钟)外接石英/陶瓷谐振器或外部时钟源4MHz - 16MHz,常用8MHz精度高,稳定性好对时钟精度和稳定性要求高的系统,如通信设备等
LSE(低速外部时钟)接外部32.768kHz石英晶体32.768kHz功耗低,精度高实时时钟(RTC)或其他定时功能

AHB 的时钟频率

AHB 的时钟频率通常由系统时钟(Sysclk)分频得到。不同的单片机型号,其 AHB 时钟频率有所不同,以常见的 STM32 系列单片机为例:
STM32F1 系列:若选择 HSE 作为时钟源,并通过 PLL 倍频到 72MHz,一般情况下,AHB 总线时钟(HCLK)与系统时钟相同,即 72MHz。
STM32F4 系列:当系统时钟配置为 180MHz 时,AHB 总线时钟(HCLK)通常也为 180MHz。
STM32H7 系列:对于 STM32H743 等芯片,其 AHB 总线时钟的极限频率根据芯片版本不同有所区别,Revision V 版本的极限是 240MHz,Revision Y 版本的极限是 200MHz。

APB1和APB2时钟频率通常是不一样的

在一些单片机(如 STM32 系列)中,APB1 通常用于挂载低速外设,其时钟频率相对较低,一般为 36MHz。而 APB2 则用于挂载高速外设,它的时钟频率相对较高,通常为 72MHz。这样的设计是为了满足不同外设对时钟频率的不同要求,以优化系统性能和功耗。

http://www.dtcms.com/a/75771.html

相关文章:

  • 【C++】:C++11详解 —— 右值引用
  • 常用的加密算法及相关术语简介
  • 如何通过Python的`requests`库接入DeepSeek智能API
  • 孜然SEO静态页面生成系统V1.0
  • Qwen2-Audio:通义千问音频大模型技术解读
  • Java内部类
  • 【STM32】uwTick在程序中的作用及用法,并与Delay函数的区别
  • redis三主三从集群部署
  • Logic-RL:小参数qwen模型复现DeepSeek R1 zero
  • 自学软硬件第755 docker容器虚拟化技术
  • 图解Spring-解决循环依赖流程
  • 使用 OpenSSL 构建安全的网络应用
  • 前端开发概论
  • 网易云信架构升级实践,故障恢复时间缩至8秒
  • TDengine 支持的所有运算符
  • 零基础学python+人工智能ai(持续更新ing)
  • 【MySQL】基本查询(下)
  • 什么是MCP(Model Context Protocol)?对话、意图识别、服务调用和上下文管理
  • django self.get_queryset() 如何筛选
  • Flask实时监控:打造智能多设备在线离线检测平台(升级版)
  • 素数判定方法详解:从基础试除法到优化策略
  • linux系统 Ubuntu22.04安装Nvidia驱动,解决4060系列显卡重启黑屏方法
  • c语言笔记 结构体内嵌套结构体的表示方式
  • 二维前缀矩阵
  • 十七、实战开发 uni-app x 项目(仿京东)- 后端指南
  • 5.0 VisionPro调用USB相机的方法与步骤说明(一)
  • Vue 渲染 LaTeX 公式 Markdown 库
  • 问题 | ACOS(X) 与 ACOSD(X)的区别
  • cmake结合qt开发界面程序实例
  • 二、小白学JAVA-认识数据类型【变量】