引言
客戶在使用 STM32U5 時(shí),想對(duì)外部 LSE 的起振情況和精度進(jìn)行監(jiān)測(cè),于是使用 HSE 為時(shí)鐘基準(zhǔn),對(duì) LSE 進(jìn)行測(cè)量。
Note : 本文中由于 Nucleo 開(kāi)發(fā)板默認(rèn)沒(méi)有焊接 HSE 器件,因此,采用內(nèi)部高速時(shí)鐘替代 HSE作為 PLL 的時(shí)鐘源。為保證測(cè)量精度,應(yīng)用中可將時(shí)鐘源替換為 HSE 。
測(cè)量的實(shí)現(xiàn)
使用 NUCLEO-U575 開(kāi)發(fā)板的 Timer15 進(jìn)行 LSE 的測(cè)量。Timer15 在 APB2 總線上, 配置為使用內(nèi)部時(shí)鐘,時(shí)鐘 base 為 160MHz。使用 Timer15 對(duì) 256 個(gè) LSE 周期進(jìn)行測(cè)量,然后對(duì)比精確度。
測(cè)量的詳細(xì)情況
TIM15 時(shí)鐘源選擇內(nèi)部時(shí)鐘,頻率為 160MHz。設(shè)置為捕獲模式。
通過(guò)配置 TIM15_SMCR.TS[4 :0]對(duì)應(yīng) bit21,20,6,5,4 位為 0x00101B,選擇 Filtered Timer Input 1(tim_ti1fp1)做為啟動(dòng) TIM15 開(kāi)始計(jì)時(shí)的觸發(fā)源,根據(jù)圖 3 可以看到等待捕獲的時(shí)鐘源是 LSE。
通過(guò) TIM15_CCMR1.CC1S[1:0]為 0x01,選擇 CC1 通道輸入信號(hào),tim_ic1 連接到 tim_ti1,如下圖黃色部分。
通過(guò)配置 TIM15_SMCR.TS[4 :0]為 0x00101B 選擇 Filtered Timer Input 1(tim_ti1fp1)做為觸發(fā)源。即 LSE 過(guò)來(lái)的信號(hào)為觸發(fā)源。通過(guò)配置 TIM15_SMCR.SMS[3 :0]為 0x0110B 選擇 Trigger Mode,在觸發(fā)源的上升沿啟動(dòng) TIM15。
開(kāi)啟 DMA 的時(shí)鐘,因?yàn)?GPDMA1 是掛在 AHB1 總線上的,因此代碼如下:
下面是 Timer15 的初始化代碼:
對(duì)捕獲和用時(shí)的計(jì)時(shí)的程序處理:
在 timer15 DMA 256 個(gè)數(shù)據(jù)存儲(chǔ)完成的回調(diào)函數(shù)中做如下處理,并停止 Timer15 的更新中斷和 DMA 中斷,256 個(gè) LSE 周期計(jì)時(shí)數(shù)據(jù)存儲(chǔ)在 LES_buffer[256]中。
DMA 運(yùn)行的同時(shí)需要使能 Timer15 溢出中斷,并對(duì)計(jì)數(shù)器溢出進(jìn)行計(jì)數(shù)。代碼如下:
在 LES_Counter=256 時(shí)進(jìn)行 LSE 頻率的計(jì)算,代碼如下:
標(biāo)準(zhǔn)值為:(255/32768)x10000000 = 77819 實(shí)際 255 個(gè) LSE 周期值為:[(LSE_End_timer2-LSE_Start_timer1)+65536*(LSE_Timer15_overload_counter-1)]/16 = A, 255 LSE timer period. one LSE period average accuracy error is (A-77819)/255看 LSE 是否準(zhǔn)確,只要比較上面的標(biāo)準(zhǔn)值和實(shí)際測(cè)量值就好。
小結(jié)
這個(gè) LSE 的準(zhǔn)確性測(cè)試程序采用的是 DMA 結(jié)合時(shí)鐘溢出計(jì)數(shù)方式進(jìn)行計(jì)算。使用 DMA 存儲(chǔ)每個(gè) LSE 周期的捕獲值,同時(shí)配合 Timer15 溢出中斷進(jìn)行溢出次數(shù)計(jì)數(shù),最后對(duì)取得的結(jié)果進(jìn)行計(jì)算,對(duì) 255 個(gè) LSE 周期累加在一起的計(jì)時(shí)結(jié)果進(jìn)行判斷,并同理想值進(jìn)行比較得知實(shí)際的LSE 精度。
同時(shí)請(qǐng)留意把驅(qū)動(dòng)能力調(diào)節(jié)大些,用 LOW 有時(shí)候測(cè)到的誤差會(huì)偏大,代碼如下:
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_MEDIUMHIGH);
文檔中所用到的工具及版本
NUCLEO-U575 開(kāi)發(fā)板
STM32CubeMX Version:6.99.12-B1
來(lái)源:STM32單片機(jī)
審核編輯:湯梓紅
-
STM32
+關(guān)注
關(guān)注
2292文章
11029瀏覽量
363967 -
LSE
+關(guān)注
關(guān)注
0文章
10瀏覽量
10410 -
開(kāi)發(fā)板
+關(guān)注
關(guān)注
25文章
5646瀏覽量
103961 -
時(shí)鐘源
+關(guān)注
關(guān)注
0文章
98瀏覽量
16299
發(fā)布評(píng)論請(qǐng)先 登錄
stm32的時(shí)鐘源分析
STM32有哪幾個(gè)時(shí)鐘源
外部高速時(shí)鐘(HSE)以及外部低速時(shí)鐘(LSE)
STM32的5個(gè)時(shí)鐘源
在STM32中的時(shí)鐘源
STM32的5個(gè)時(shí)鐘源介紹
STM32的時(shí)鐘源綜述
【原創(chuàng)分享】單片機(jī)的時(shí)鐘源
如何去實(shí)現(xiàn)一種HSE時(shí)鐘和LSE時(shí)鐘外部電路的硬件設(shè)計(jì)呢
STM32時(shí)鐘源學(xué)習(xí)筆記
stm32的五個(gè)時(shí)鐘源參數(shù)設(shè)置經(jīng)驗(yàn)

關(guān)于系統(tǒng)時(shí)鐘的配置問(wèn)題,如是stm32f1的系統(tǒng)時(shí)鐘為72Mhz

STM32 時(shí)鐘系統(tǒng)--RCC寄存器

認(rèn)識(shí)STM32的時(shí)鐘源

評(píng)論