前言:

由于之前对STM32Fxx系列相对熟悉,所以涉及到超低功耗设备时,自然就选用STM32家族的STM32Lxx系列产品。

STM32L151C8T6 功能特点:

(1)Flash:64k

(2)RAM:10k

(3)EEPROM:4k

(4)USART:3

(5)SPI:2。

了解一个CPU,时钟也是非常重要的,如下图所示:

从图中可知:共有5 种时钟源,分别为

HSE:外部8M晶振)、

HSI: 内部高速晶振16MHz

LSI:内部低速晶振37khz

LSE: 外部低速晶振 32.768khz

MSI: 内部多速度段晶振,65.536khz、131.072khz、262.144khz、524.288khz、1.048MHz、2.097MHz、4.194MHz,默认                 2.097MHz

一、MSI 介绍

MSI的使用机会比较多,分别为:reset后、stop模式下的wake-up、 待机模式。

MSI RC振荡器,具有超低功耗的优势(没有外部器件),用于低功耗模式时钟源,它被用于在超低功耗模式下的唤醒时钟。

如果HSE时钟源有故障,MSI也是作为备用时钟源。

二、HSE 介绍

HSE 就是外部时钟源,一般使用8M或12M,这个也是CPU在进入应用程序后,主要使用的时钟,CPU上电后,运行的第一个函数SystemInit就是针对HSE的配置,当然,如果HSE有故障,会切换使用MSI。HSE可以通过HSEON寄存器配置,实现使用/禁止功能。

三、HSI时钟

HSI是CPU的一个内部16MHz RC振荡器,是可以直接用于系统 时钟或PLL输入的,HSI的 优点是功耗低,因为不需要外围器件,而且启动时间比HSE快, 缺点是HSI的精度没有HSE的精度高,精度低就意味着涉及到精确延时时,不好 控制,比如18B20等传感器的时序经常都需要微秒级的计时。

四、PLL锁相环

这个锁相环的作用就是对时钟源频率 进行升频和分频,通过组合实现想要的时钟频率。内核工作电压不同,最大升频值也不同,最大可以到96MHz,但是CPU的最大频率只有32MHz。

五、LSE 时钟

外部低速时钟源,就是常见的32.768khz时钟,优点是,低功耗,高精度,所以一般用于RTC,LSE的启动和停止开关,通过LSEON位(RCC_CSR寄存器中)

六、LSI时钟

内部低速时钟,是一种低功耗时钟源,在stop模式、待机模式、独立看门狗下,使用该 时钟源,该时钟频率在37khz左右。

系统时钟SYSCLK源的选择有4种,分别为:

① HSI

② HSE (说明可以直接使用外部8M晶振,不经过PLL)

③ PLL

④ MSI(复位后的默认时钟源)

时钟源切换

一旦一个时钟源启用后,是不能直接stop它的。不过从一个时钟源 是可以切换到另一个时钟源的(这里应该就应用在低功耗模式与正常模式之间切换)。不过切换需要先让要换的时钟ready, 所以要通过对应的寄存器查询时钟是否ready,然后再进行切换。

时钟频率的改变,是要遵循规定的,如果改变频率超过4倍,则需要分次改变,而且 之间的时间间隔要大于5us,比如:

我们想将系统时钟从4.2MHz提升到32MHz,那么我们就要先将4.2MHz升频道16MHz,然后等待5us,再从16MHz升到32MHz。

系统时钟频率上限与内核工作电压范围对比

低功耗模式下,对应的时钟源

超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述的更多相关文章

  1. linux时钟系统概述

    1. 了解下linux系统中一些时间概念,在kernel/time/timekeeping.c中定义了多个时间.RTC时间:在PC中,RTC时间又叫CMOS时间,通常由一个专门的计时硬件来实现,软件可 ...

  2. 关于RFID电动车防盗、校园答题卡(超低功耗2.4G芯片SI24R2E)

          Si24R2E 是一颗工作在2.4GHz ISM 频段,专为低功耗有源RFID 应用场合设计,集成嵌入式发射基带的无线发射芯片.128 次可编程NVM 存储器以及自动发射模块.工作频率范围 ...

  3. 研发2nm芯片,台积电如何做到天下第一?

    日前,台积电宣布,正式启动2nm芯片工艺的研发,工厂将会设置在台湾新竹的南方科技园,预计2024年投入量产,发言人称:2nm工艺是一个重要节点,目标是比3nm制程缩小23%.科技先锋总会打脸分析专家, ...

  4. 智能门锁超低功耗:SI522(13.56芯片)替代MFRC522\FM17522

    SI522(超低功耗13.56M芯片)替代RC522 完全兼容 PIN对PIN,同时也替代FM17522. MF RC522 是应用于13.56MHz 非接触式通信中高集成度读写卡系列芯片中的一员.是 ...

  5. Linux下时钟框架实践---一款芯片的时钟树配置

    关键词:时钟.PLL.Mux.Divider.Gate.clk_summary等. 时钟和电源是各种设备的基础设施,整个时钟框架可以抽象为几种基本的元器件:负责提供晶振 Linux内核提供了良好的CC ...

  6. JZ2440开发板:修改ARM芯片时钟(学习笔记)

    想要修改ARM芯片的时钟,需要去查询芯片手册和原理图,获取相关的信息(见下方图片) 首先来看时钟的结构图 根据结构图可以看出,时钟源有两种选择:1. XTIpll和XTOpll所连接的晶振 2. EX ...

  7. STC8H开发(十四): I2C驱动RX8025T高精度实时时钟芯片

    目录 STC8H开发(一): 在Keil5中配置和使用FwLib_STC8封装库(图文详解) STC8H开发(二): 在Linux VSCode中配置和使用FwLib_STC8封装库(图文详解) ST ...

  8. linux 通用时钟框架CCF

    linux CCF 时钟框架 简单介绍 这里讲的时钟是给soc各组件提供时钟的树状框架,并非内核使用的时间,和其它模块一样,clk也有框架,用以适配不同的平台.适配层之上是客户代码和接口,也就是各模块 ...

  9. linux时钟管理

    ref https://access.redhat.com/solutions/18627 在el5中 如何查看系统现在使用的clock source是什么? 答: 方式1:需要说明的是不能保证这个两 ...

随机推荐

  1. ORACLE内存管理之ASMM AMM

    ORACLE ASMM ORACLE AMM ASMM转换至AMM AMM转换至ASMM

  2. 【洛谷P1069 细胞分裂】

    题目链接 首先,光看题就觉得它很扯淡(你哪里来这么多的钱来买试管) 根据某位已经ak过ioi的名为ych的神仙说(一看就是数学题,一看就需要因式分解,emm,我果然没有发现美的眼睛qwq) 那么我们就 ...

  3. 搭建python-flask开发环境

    ubuntu环境 1. 更新系统软件源: 没有通过更新系统软件源的话,可能无法通过apt-get install安装我们需要用到的软件: $ sudo apt-get update $ sudo ap ...

  4. Flask框架—flask_sqlalchemy组件使用

    一.flask_sqlalchemy组件 我们之前学过SQLAlchemy,一个独立的数据库关系对象映射,其实在flask中也有官方认可的第三方SQLAlchemy组件,用于处理flask中对象关系映 ...

  5. python进行数据库迁移的时候显示(TypeError: __init__() missing 1 required positional argument: 'on_delete')

    进行数据库迁移的时候,显示  TypeError: __init__() missing 1 required positional argument: 'on_delete' 图示: 出现原因: 在 ...

  6. shell 比较符号

    if [ 1 -ne 1 ];then...fi这是指当1不等于1时执行then后的语句 -eq:等于-ne:不等于-le:小于等于-ge:大于等于-lt:小于-gt:大于

  7. selenium元素定位之css选择器

    在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...

  8. 【ABAP系列】SAP ABAP实现发送外部邮件(添加附件)功能

    公众号:SAP Technical 本文作者:matinal 原文出处:http://www.cnblogs.com/SAPmatinal/ 原文链接:[MM系列]SAP ABAP实现发送外部邮件(添 ...

  9. springboot启动时报错 错误: 找不到或无法加载主类 com.xxx.xxx.Application

    1. Q1 错误: 找不到或无法加载主类 com.xxx.xxx.Application 解决办法:啥也不动,maven clean下,重启 1. Q2 layui控制下拉框高度 解决 .layui- ...

  10. IQueryable在LINQ中

    IQueryable接口定义如下: // 摘要: // 提供对未指定数据类型的特定数据源的查询进行计算的功能. public interface IQueryable : IEnumerable { ...