如何開(kāi)始做b2b網(wǎng)站站長(zhǎng)查詢工具
前言
本系列基于復(fù)旦微FM33系列單片機(jī)的DataSheet編寫(xiě),旨在提供一些開(kāi)發(fā)指南。
本文章及本系列其他文章將持續(xù)更新,本系列其它文章請(qǐng)?zhí)D(zhuǎn)↓↓↓
【復(fù)旦微FM33 MCU 外設(shè)開(kāi)發(fā)指南】總集篇
本文章最后更新日期:2024/08/04
文章目錄
- 前言
- 時(shí)鐘源
- 1. 高頻RC振蕩器RCHF(RC High Frequency)
- 2. 中頻RC振蕩器RCMF(RC Middle Frequency)
- 3. 低功耗RC振蕩器LPOSC(Low Power OSC)
- 4. 低頻晶體振蕩器XTLF(Crystal Low Frequency)
- 5. 高頻晶體振蕩器XTHF(Crystal High Frequency)
- 重點(diǎn):注意事項(xiàng)
- 1. 時(shí)鐘校準(zhǔn)(RCHF/RCMF/LPOSC)
- 2. 穩(wěn)定性(RCHF/RCMF/LPOSC/XTLF/XTHF)
- 3. 起振時(shí)間
- 4. FLASH讀寫(xiě)等待周期
- 5. 外設(shè)時(shí)鐘頻率
- 應(yīng)用Tips
- 1. 快速的初始化
- 時(shí)鐘相關(guān)的寄存器
- 1. 時(shí)鐘管理單元
- 2. 總線與存儲(chǔ)單元
本文對(duì)應(yīng)FM33LC0xx DataSheet 第11章——時(shí)鐘管理單元(CMU),部分參數(shù)來(lái)源于 第3章——電參數(shù)。
時(shí)鐘源
系統(tǒng)所有用到的時(shí)鐘都是以下時(shí)鐘源產(chǎn)生的。
1. 高頻RC振蕩器RCHF(RC High Frequency)
RCHF可選的時(shí)鐘頻率為8MHz/16MHz/24MHz,全溫區(qū)最大偏差±1%。
RCHF在上電后即為8MHz的時(shí)鐘頻率,用于MCU完成初始化操作。
2. 中頻RC振蕩器RCMF(RC Middle Frequency)
RCMF的時(shí)鐘頻率為4MHz,全溫區(qū)最大偏差±3%。
3. 低功耗RC振蕩器LPOSC(Low Power OSC)
LPOSC的時(shí)鐘頻率為32kHz,在-40℃最大偏差-6%,在85℃偏差最大4%。
4. 低頻晶體振蕩器XTLF(Crystal Low Frequency)
對(duì)于英文縮寫(xiě),我認(rèn)為應(yīng)該是因?yàn)閄T和Crystal的發(fā)音很像,所以就用XT代替Crystal(晶振)了。
XTLF只有在有外接晶振的情況下才有時(shí)鐘,其性能應(yīng)該就是取決于外部晶振。
XTLF具有停振檢測(cè)電路,詳見(jiàn)DataSheet第12章——停振檢測(cè)(FDET)
5. 高頻晶體振蕩器XTHF(Crystal High Frequency)
XTHF只有在有外接晶振的情況下才有時(shí)鐘,其性能應(yīng)該就是取決于外部晶振。
XTHF具有停振檢測(cè)電路,詳見(jiàn)DataSheet第12章——停振檢測(cè)(FDET)
重點(diǎn):注意事項(xiàng)
1. 時(shí)鐘校準(zhǔn)(RCHF/RCMF/LPOSC)
由于每顆芯片的差異,實(shí)際的時(shí)鐘頻率和設(shè)定的時(shí)鐘頻率有一定的差異,向調(diào)校寄存器中寫(xiě)入校準(zhǔn)值可以在一定范圍內(nèi)調(diào)整時(shí)鐘頻率。
校準(zhǔn)值的讀取
MCU在出廠前,測(cè)試儀會(huì)測(cè)試MCU的時(shí)鐘頻率,并將校準(zhǔn)值寫(xiě)入Flash中供用戶讀取。
需要注意32bit的校驗(yàn)值中,高16位和低16位分別保存校準(zhǔn)值和反碼校驗(yàn)字,在使用前應(yīng)做正反碼校驗(yàn)。
校準(zhǔn)值的寫(xiě)入
由于RCHF上電即為8MHz的頻率,MCU會(huì)自動(dòng)讀取8MHz的時(shí)鐘校準(zhǔn)值并寫(xiě)入寄存器中。
但如果切換其它頻率的時(shí)鐘,就需要我們自己讀取相應(yīng)頻率的時(shí)鐘校準(zhǔn)值,并寫(xiě)入調(diào)校寄存器中了。
(顯然,當(dāng)你從16MHz的時(shí)鐘頻率切換到8MHz時(shí),也要重新讀取8MHz的時(shí)鐘校準(zhǔn)值寫(xiě)入)
2. 穩(wěn)定性(RCHF/RCMF/LPOSC/XTLF/XTHF)
以RCHF為例,DataSheet上寫(xiě)明,RCHF可以最高配置為24MHz
(其實(shí)RCHF應(yīng)該可以配置為更高的時(shí)鐘頻率,但Flash中沒(méi)有保存其校準(zhǔn)值)
我們可以將高頻率的RCHF作為系統(tǒng)時(shí)鐘并提供給APB總線上掛載的各種外設(shè)
使用內(nèi)置RC振蕩器應(yīng)該注意:
1.更高頻率的RCHF的穩(wěn)定性將變差。如常溫下8MHz的RCHF頻率偏差為0.16MHz,而24MHz的RCHF頻率偏差為0.48MHz
(即偏差的百分比固定,頻率越高偏差越大)
2.高頻率的RCHF高低溫性能將變差。8MHz的RCHF全溫區(qū)偏差為±1%,而24MHz的RC HF全溫區(qū)偏差為±3%
3.相比RCMF,RCHF有更好的全溫區(qū)性能。RCHF為±1%,而RCMF為±3%
顯然在大部分的應(yīng)用場(chǎng)景中可能不差這一點(diǎn)時(shí)鐘偏差,但系統(tǒng)時(shí)鐘的偏差將直接影響APB總線時(shí)鐘,如果你是用定時(shí)器高精度的采集脈沖信號(hào)寬度的話,那就需要注意這些方面的影響了。一旦MCU放入量產(chǎn)產(chǎn)品中,其在各種工況下的穩(wěn)定性就十分重要了。
因此在系統(tǒng)時(shí)鐘要求頻率很高,或穩(wěn)定性要求高的時(shí)候:
1.使用內(nèi)置時(shí)鐘,用8MHz的RCHF,分頻給PLL并等待其鎖定后,將PLL作為系統(tǒng)時(shí)鐘(PLL的高低溫穩(wěn)定性更好)。
2.使用外接晶振,外接晶振的高低溫穩(wěn)定性更好,但要注意其起振時(shí)間慢,可能需要200ms。
3. 起振時(shí)間
外置晶振
前面提到外置晶振其穩(wěn)定性更好,但晶振的起振時(shí)間較長(zhǎng),實(shí)測(cè)下來(lái)要200ms以上。
起振時(shí)間和晶體振蕩電路的振蕩強(qiáng)度有關(guān),FM33提供了XTHF的振蕩強(qiáng)度配置寄存器RCC_XTHFCR
但注意不是振蕩強(qiáng)度越強(qiáng),起振時(shí)間越短的,在振蕩強(qiáng)度和晶振匹配時(shí),起振時(shí)間是最短的。
RC振蕩器
文檔沒(méi)有寫(xiě)RCHF的起振時(shí)間(有可能是因?yàn)樯想姾驲CHF就自動(dòng)啟動(dòng),所以這個(gè)參數(shù)沒(méi)什么意義?)
RCMF的起振時(shí)間為10us。
LPOSC的起振時(shí)間為50——100us。
PLL
前面已經(jīng)講過(guò)在高頻的系統(tǒng)時(shí)鐘應(yīng)用中,應(yīng)該使用PLL。
PLL接收到時(shí)鐘輸入后,是需要等待一段時(shí)間才能建立穩(wěn)定的時(shí)鐘輸出的,DataSheet典型值為65us。
因此軟件必須在配置和啟動(dòng)PLL后,等待PLL鎖定后,才可以將PLL配置為系統(tǒng)時(shí)鐘。
如果沒(méi)有等待鎖定就配置為系統(tǒng)時(shí)鐘,就很容易產(chǎn)生一些莫名其妙的錯(cuò)誤
1.在啟動(dòng)PLL和切換系統(tǒng)時(shí)鐘中間的語(yǔ)句執(zhí)行時(shí)間較長(zhǎng),長(zhǎng)于鎖定時(shí)間,那么就沒(méi)什么問(wèn)題
2. 把初始化階段的系統(tǒng)時(shí)鐘頻率變高,導(dǎo)致同樣的程序執(zhí)行之間變短,短與鎖定時(shí)間,那很有可能進(jìn)入硬件錯(cuò)誤中斷了
4. FLASH讀寫(xiě)等待周期
在系統(tǒng)時(shí)鐘頻率很高時(shí),必須按照手冊(cè)要求配置FLS_RDCR
寄存器配置FLASH讀寫(xiě)等待周期。
如果沒(méi)有配置正確的FLASH讀寫(xiě)等待周期,就很容易產(chǎn)生一些莫名其妙的錯(cuò)誤
1.程序在這塊板子上好好的,換一塊板子跑不起來(lái)了
2.程序本來(lái)好好的,填了幾句話崩掉了,斷點(diǎn)還打不上
5. 外設(shè)時(shí)鐘頻率
各個(gè)外設(shè)有其上限的工作頻率。以SPI為例,其最高工作頻率為16MHz。
SPI外設(shè)掛載在APB總線上,而APB時(shí)鐘來(lái)源于系統(tǒng)時(shí)鐘。
例:當(dāng)系統(tǒng)時(shí)鐘為64MHz時(shí):
1.APBCLK使用不分頻的系統(tǒng)時(shí)鐘,就必須將SPI的工作時(shí)鐘預(yù)分頻為4分頻或更高分頻。
2.APBCLK使用4分頻的系統(tǒng)時(shí)鐘,SPI工作時(shí)鐘可以不分頻或配置為更高的預(yù)分頻。
應(yīng)用Tips
1. 快速的初始化
在MCU上電后,并不是馬上進(jìn)入main()
函數(shù)的。
啟動(dòng)文件告訴我們,系統(tǒng)上電復(fù)位后,在main函數(shù)之前先取SystemInit()
函數(shù)的指針并跳轉(zhuǎn)。
因此對(duì)一些要求初始化時(shí)間很短的場(chǎng)合,可以在SystemInit()
函數(shù)中將默認(rèn)的8MHz RCHF系統(tǒng)時(shí)鐘更改為更高頻率的時(shí)鐘源。
時(shí)鐘相關(guān)的寄存器
1. 時(shí)鐘管理單元
2. 總線與存儲(chǔ)單元
這里是配置Flash的讀等待周期的寄存器。