MCU中的 HSI、HSE、LSI、LSE
HSI、HSE、LSI、LSE是STM32等ARM Cortex-M系列MCU中四种重要的时钟源。理解它们是进行MCU配置和低功耗设计的基础。
下面我将对这四种时钟源进行详细的解释和对比。
概览
这四种时钟源可以根据两个维度进行分类:
-
速度/用途:
- 高速时钟:为系统内核、外设等提供主时钟。
- 低速时钟:主要为实时时钟、独立看门狗等特定外设提供时钟。
-
来源:
- 内部时钟:由芯片内部RC振荡电路产生,成本低,启动快,但精度相对较低。
- 外部时钟:需要外接晶体/陶瓷谐振器,成本高,启动慢,但精度非常高。
组合起来,就得到了我们熟悉的四种时钟源:
| 时钟源 | 全称 | 中文名 | 类型 | 来源 | 主要特点与用途 |
|---|---|---|---|---|---|
| HSI | High-Speed Internal | 高速内部时钟 | 高速 | 内部RC | 成本低,启动快,精度一般,可作为备份时钟或系统时钟 |
| HSE | High-Speed External | 高速外部时钟 | 高速 | 外部晶振 | 精度高,稳定,作为主系统时钟源,用于USB、以太网等 |
| LSI | Low-Speed Internal | 低速内部时钟 | 低速 | 内部RC | 低功耗,精度低,主要为独立看门狗和RTC提供时钟 |
| LSE | Low-Speed External | 低速外部时钟 | 低速 | 外部晶振 | 精度高,功耗低,专为RTC提供精确时钟 |
详细解析
1. HSI - 高速内部时钟
- 产生方式:芯片内部的RC振荡器,通常频率为8MHz或16MHz(具体取决于MCU型号,如STM32F1多为8MHz,STM32F4多为16MHz)。
- 优点:
- 成本低:无需外部元件。
- 启动快:上电后很快就能稳定工作。
- 缺点:
- 精度低:受温度、电压影响较大,典型精度在±1%到±2%之间,不适合对时序要求严格的外设(如USB)。
- 典型应用:
- 芯片复位后的默认系统时钟。
- 当HSE失效(如外部晶振故障)时,自动切换到的安全时钟源。
- 作为PLL的输入时钟,倍频后得到更高的系统时钟。
2. HSE - 高速外部时钟
- 产生方式:外接4-26MHz(常见为8MHz或25MHz)的晶体/陶瓷谐振器或直接接入外部有源时钟源。
- 优点:
- 精度高:非常稳定,精度可达±10ppm(百万分之十)。
- 稳定性好:不受芯片内部温度和电压变化影响。
- 缺点:
- 成本高:需要额外的外部元件和PCB面积。
- 启动慢:需要较长的起振时间。
- 典型应用:
- 主系统时钟:大多数对性能要求高的应用都使用HSE作为系统时钟源。
- 精确外设的时钟源:为USB、以太网等需要精确时钟的外设提供时钟。
- PLL的输入:通过PLL倍频,为MCU提供高频率的系统时钟(如8MHz晶振倍频到72MHz,168MHz等)。
3. LSI - 低速内部时钟
- 产生方式:芯片内部的低速RC振荡器,频率通常为32kHz或40kHz。
- 优点:
- 成本低:无需外部元件。
- 低功耗:在低功耗模式下(如Stop、Standby)仍可运行。
- 缺点:
- 精度非常低:比HSI的精度更差。
- 典型应用:
- 独立看门狗:看门狗只需要一个大致的时间基准,对精度要求不高,LSI完全满足。
- RTC:在不需要精确计时,且对成本敏感的应用中,可以为RTC提供时钟。
4. LSE - 低速外部时钟
- 产生方式:外接32.768kHz的晶体。这个频率值是 (2^{15}),便于进行15次分频后得到精确的1Hz信号。
- 优点:
- 精度高:提供非常精确的1Hz时钟信号。
- 功耗极低:在低功耗模式下运行,对系统整体功耗影响很小。
- 缺点:
- 成本高:需要外部晶振。
- 典型应用:
- RTC:为实时时钟提供精确的时钟源,用于日历、计时等。这是LSE最主要、最核心的用途。
- 低功耗模式下的时钟:在低功耗模式下,可以作为某些定时器的唤醒时钟源。
时钟系统框图与工作流程
一个简化的STM32时钟系统框图可以帮助理解它们的关系:
+-------------------+
| PLL |
| (Clock Multiplier)|
+---------+---------+
|
v
+----------------+ +---------+---------+
| HSE Oscillator|--+ | System Clock |
| (e.g., 8MHz) | | | (SYSCLK, e.g., |--> CPU, Memory, etc.
+----------------+ | | 72MHz) |
| +-------------------+
v |
+----------------+ | +---------+ | +----------------+
| HSI RC |--+->| MUX / |---+ | AHB Prescaler |--> High-Speed Buses
| (e.g., 8MHz) | | Switch | +-------------------+
+----------------+ +---------+ |
| | +----------------+
| | | APB Prescalers |--> Peripherals (TIM, USART, etc.)
| | +----------------+
v |
+----------------+ | |
| LSE Crystal |--+ |
| (32.768kHz) | |
+----------------+ |
| |
+----------------+ | |
| LSI RC |--+ |
| (32kHz) | |
+----------------+ |
|
+------+------+
| RTC & IWDG |--> Real-Time Clock & Independent Watchdog
+-------------+
工作流程举例(STM32F103):
- 上电后,默认使用HSI(8MHz) 作为系统时钟。
- 在软件中,使能HSE(8MHz晶振),等待其稳定。
- 配置PLL,将HSE作为输入,倍频9倍,输出72MHz。
- 将系统时钟源从HSI切换到PLL输出。此时,系统就以72MHz运行。
- 同时,使能LSE(32.768kHz) 作为RTC的时钟源,用于精确计时。
- LSI始终处于使能状态,为独立看门狗提供时钟。
总结与选择建议
| 场景 | 推荐时钟源 | 理由 |
|---|---|---|
| 高性能应用,需要USB、网络 | HSE + LSE | HSE提供稳定高速主时钟,LSE为RTC提供精确计时。 |
| 成本敏感型应用,计时要求不高 | HSI + LSI | 无需外部晶振,成本最低。LSI可为看门狗和基本RTC提供时钟。 |
| 需要精确计时但成本有一定限制 | HSI + LSE | 放弃昂贵的高速晶振,但保留精确的RTC时钟。 |
| 极端低功耗应用(如电池设备) | HSE + LSE 或 MSI | HSE效率可能更高。新一代MCU(如STM32L系列)有MSI,一种多速度内部时钟,在功耗和灵活性上更优。 |
关键要点:
- HSI是“保底”时钟,HSE是“高性能”时钟。
- LSI是“看门狗专用”时钟,LSE是“精确RTC专用”时钟。
- 理解这四者的区别,是进行MCU初始化配置、电源管理和故障诊断的基础。在
system_stm32fxxx.c和hal_conf.h等配置文件中,你会频繁地与它们打交道。
1436

被折叠的 条评论
为什么被折叠?



