內部RC是“能用”,外部晶振是“用得準”。
一、STM32芯片內部的“晶振電路”是什么?
STM32內部確實集成了兩個RC(電阻-電容)振蕩器:
- HSI(高速內部振蕩器):通常8MHz,精度約±1%(全溫度范圍可能達±5%)
- LSI(低速內部振蕩器):約40kHz,精度僅±5%以上
它們不是真正的“晶振電路”,而是通過半導體工藝制造的模擬電路,其精度和穩定性受溫度、電壓、工藝偏差影響較大。
二、為什么需要外接晶振?
1. 精度需求(核心原因)
- 主系統時鐘(HSE):外部高速晶振(4-26MHz)精度可達±10~50ppm(百萬分之十到五十)
- 對比:內部HSI誤差可能達5000ppm(0.5%)!
- 影響:
- 通信接口(USART, SPI, I2C):波特率偏差導致通信失敗
- 定時器:時間計量嚴重不準
- USB:必須用48MHz±0.25%的高精度時鐘
2. 穩定性需求
- 外部晶振的頻率-溫度曲線更平緩(如±10ppm/-40°C~85°C)
- 內部RC振蕩器會隨溫度漂移(可能漂移幾百ppm)
3. 時鐘樹靈活性
外接晶振可解鎖全部性能:例如用8MHz晶振通過PLL倍頻到72MHz(STM32F1最大值)
三、為什么RTC需要獨立的外部32.768kHz晶振?
1. 超低功耗需求
- RTC在待機模式下仍需工作
- 外部32.768kHz晶振功耗僅約1μA
- 內部LSI功耗高數十倍且精度不足
2. 時間精度保障
- 32.768kHz晶振誤差可控制在±20ppm(約每月52秒誤差)
- 內部LSI誤差±5% ≈?每月偏差數小時!
- 數學原理:32768 = 21?,分頻15次后恰好得到1Hz(1秒)信號
3. 獨立供電設計
- 部分型號支持VBAT引腳單獨供電
- 外部晶振+VBAT可使RTC在主電源斷電時繼續計時(配合紐扣電池)
四、實戰設計建議
-
最小系統必備:
-
PCB布局要點:
- 晶振盡量靠近芯片引腳
- 用地線包圍晶振電路
- 負載電容C1、C2按晶振規格書選擇(通常12-22pF)
-
替代方案:
- 無高精度需求時可用內部時鐘
- 可外接有源晶振(適用惡劣環境)
- 某些型號支持時鐘校準(如STM32F4的時鐘校準單元)
總結關鍵區別
特性 | 內部RC振蕩器 | 外部晶振 |
---|---|---|
精度 | ±1%~5% | ±10~100ppm |
溫度穩定性 | 差(數百ppm/°C) | 優(±0.035ppm/°C) |
功耗 | 較低 | 極低(RTC專用) |
啟動時間 | 快(μs級) | 慢(ms級) |
成本 | 免費(片內集成) | 需外購元件 |