STM32內建晶振和外接晶振的精度差別
STM32系列處理好像都有內建的RC振盪器,這個內建RC振盪器可以代替外接晶振,可以節省成本和PCB空間。
我之前有幾個設計都是使用的內建的晶振,覺得使用起來很方便,我也知道內建振盪器的精度不如外接的晶振,但是一直沒有遇到對於振盪器的精度有十分嚴格的要求的應用。不過這次對付一個對時間精度要求比較高的應用,我發現了內建RC振盪器和外接晶振的差別還是很大的,而其我使用的還是最廉價的外接晶振,其精度就遠高於內建振盪器。
例如有個應用我需要精確延時9999秒鐘,使用定時器進行定時中斷,設定10ms的定時週期,需要經過9999 / 10 * 1000=999900個定時週期才能完成。而定時器的時鐘源是由APB2(文件上寫的是APB1,程式上是APB2)提供的,APB2的時鐘最終來自HSI、PLL、HSE三個時鐘源。因此我簡單測試了一下使用HSI和HSE通過PLL倍頻之後得到的時鐘的精度。但是直接測量9999秒鐘的時間有點麻煩,我就測量2秒鐘的時間即可,看看定時2秒鐘,內外時鐘源分別能提供什麼樣的精度,採集裝置使用邏輯分析儀或者示波器即可。
下面是使用HSI時鐘測到的2秒鐘的波形:
可以看到實際定時時間為2.004270583秒鐘,規定 α = Ta / Tb,其中Ta表示設定的定時時間,Tb表示實際定時時間,阿爾法為比例係數,我們大致按照比例縮放來計算如果定時9999秒的話實際定時時間為Ta = Tb * α = 10020.3507797085秒,誤差為21秒鐘,說實話,這誤差已經很大了。
使用外接晶振進行測試結果如下:
可以看到實際定時時間為2.000074417秒,按照同樣的方法進行計算可以得到Ta = Tb * α = 9999.3720477915秒,誤差0.372秒,這個是完全可以接受的,如果還要更高精度的定時時間可以使用更高精度的晶振,也可以使用頻率值高一點的晶振,然後下調PLL倍頻係數,因為晶振的誤差是固定的,經過PLL倍頻之後,誤差同樣被放大了,降低PLL倍頻係數可以減少誤差的放大。同樣的還可以直接選取48MHz的晶振,然後SYSCLK的時鐘源直接選擇HSE即可,這樣誤差可以做到更小,但是STM32能支援最大的晶振是有限制的。
相關文章
- RTC-晶振基礎
- RTC-晶振指標指標
- 新版Keil開啟晶振模擬
- AT32F415 修改時鐘和晶振方法(原創)
- 晶振頻偏產生原理及背景教程(一)
- 痞子衡嵌入式:i.MXRT1xxx系列MCU外接24MHz有源晶振的方式與注意事項
- 關於GPIO合封引腳以及晶振引腳使用注意事項
- 基於完全整合的設計,OX5021-EAE-1080-20M000晶體振盪器
- 硬體開發基本流程(七):建立基礎DIP元器件(晶振)封裝並關聯原理圖元器件封裝
- ASEMI大功率場效電晶體和三極體的區別
- 20261134虞振偉
- 柔性振動盤 機器人上料 視覺振盤機器人視覺
- 116052018028+林振楠
- 《Celeste》:3675 次失敗的結晶
- VK1616低功耗 28點陣 新年份 內建 RC 振盪LED數顯驅動
- 來自MCC的振動測量和分析解決方案
- 電晶體 放大電路的分析方法
- Knometa Research: 2021 年底全球IC晶圓月產能為 2160 萬片 200 毫米當量的晶圓
- 常見的並聯諧振應用案例
- 佈局加速度?晶澳科技百億投建新能源產業基地產業
- 鄉村沒有人,談何振興
- TRIZ 機械振動原理 例項
- 黨建資訊化管理系統引領推動鄉村振興
- SRAM中晶圓級晶片級封裝的需求晶片封裝
- 如何計算振盪電路的固有頻率
- 不同阻尼比下的振動形式-python程式碼Python
- 英特爾如何助力構建邊緣智慧的工業網際網路---振工鏈
- 聲網許振明:RTC 場景 UHD 影片應用和探索
- 韓國內容振興院:調查顯示57.5%的韓國父母和孩子一起玩遊戲遊戲
- 爆料:Win10 2019秋/2020春新版開發代號將分別是“釩”和“振金”Win10
- 數百萬晶體資料訓練,解決晶體學相位問題,深度學習方法PhAI登Science深度學習AI
- 江鈴晶馬 X 袋鼠雲:搭建企業級資料資產中心,推進打造“智數晶馬”
- 柔性振動盤用於哪些行業行業
- 音圈電機原理-柔性振動盤
- 柔性振動盤智慧柔性供料系統
- 柔性振動盤柔性視覺選料視覺
- 《貪吃蛇巴士》:《貪吃蛇》和《瘋狂計程車》的「完美結晶」
- News Chain傳播鏈聯合創始人熊振:構建全球資料內容價值生態體系AI