历史上的今天
今天是:2025年02月24日(星期一)
2020年02月24日 | 超低功耗研发-STM32L151C8T6芯片(一)时钟系统概述
2020-02-24 来源:eefocus
前言:
由于之前对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。
系统时钟频率上限与内核工作电压范围对比

低功耗模式下,对应的时钟源
史海拾趣
|
演讲主题:我国汽车电子产业发展的技术障碍与攻关战略 演讲嘉宾:上海交通大学 许敏 主要议题: 1、我国汽车电子的产业发展与研发现状 2、我国汽车电子产业发展的技术障碍 3、我国汽车电子产业发展的攻关战略 重点论述了我国汽车电子产 ...… 查看全部问答> |
|
第一定律:打工失败论 如何你离开华为后再次到另一个公司打工,失败的机率是99%。其他公司的文化和平台与华为差异大,很难像在华为那样工作的得心应手,然后陷入不断换公司的负循环。现在全国著名的基金经理杨典和名师在线公司COO高建国都有 ...… 查看全部问答> |
|
在65纳米节点,单个芯片中可容纳数亿规模的门电路。其高复杂性使层次化设计流程变得极为耗时,同时要达到良率要求也很困难。要想及时解决这些问题,高水平的IC自动化设计技术以及对流程中功耗、良率、片上变异(OCV)和多种模式的优化和分析等功能的 ...… 查看全部问答> |
|
1. 上班迟到3~5分钟,扣20RMB; 2. 迟到1小时以上,算半天矿工; 3. 迟到2小时以上,算1天矿工; 4. 请事情,扣1天工资 月工资/22; 5. 加班没加班费; 6. 节假日加班算免费为公司贡献,公司不补偿。… 查看全部问答> |
|
if(flag_1s==1) { tmp=T0count*65536+TH0*256+TL0 } 一秒计数的脉冲为何是tmp=T0count*65536+TH0*256+TL0,不是每次中断都T0count++?… 查看全部问答> |
|
请问各位大侠,我需要一些用C实现的关于Wi-Fi数据传输的指导。请赐教。 我是新手 ,请大侠们赐教,使用Wi-Fi传输到底是个什么样的过程,怎么用C实现啊?比如说,我现在电脑上有一些视频文件,需要传输到另外一个电脑上,怎么用C实现?谢谢。… 查看全部问答> |
|
我的开发板起来之后,我插入U盘,它会认出来harddisk。但如果我插入它开机,系统就不会认出来有U盘。 请问这该怎么处理啊?怎么让系统一起来就识别U盘? 另外一个问题,如果我开发代码,我该怎么判断u盘有没有插入?createfile(harddisk...)?还 ...… 查看全部问答> |
|
如上图设置wince 进入各种模式的时间,启动系统后,不操作,系统会按照设置准确的进入useridle和systemidle ,但是不会按照设定时间进入suspend,有时延时一段时间(几十分钟不等)进入suspend,有时根本就不会进入suspend.请问大侠指点一下.谢谢啦!… 查看全部问答> |




