引言
客戶在使用 STM32U5 時,想對外部 LSE 的起振情況和精度進行監(jiān)測,于是使用 HSE 為時鐘基準,對 LSE 進行測量。
Note : 本文中由于 Nucleo 開發(fā)板默認沒有焊接 HSE 器件,因此,采用內(nèi)部高速時鐘替代 HSE作為 PLL 的時鐘源。為保證測量精度,應(yīng)用中可將時鐘源替換為 HSE 。
測量的實現(xiàn)
使用 NUCLEO-U575 開發(fā)板的 Timer15 進行 LSE 的測量。Timer15 在 APB2 總線上, 配置為使用內(nèi)部時鐘,時鐘 base 為 160MHz。使用 Timer15 對 256 個 LSE 周期進行測量,然后對比精確度。

測量的詳細情況
TIM15 時鐘源選擇內(nèi)部時鐘,頻率為 160MHz。設(shè)置為捕獲模式。
通過配置 TIM15_SMCR.TS[4 :0]對應(yīng) bit21,20,6,5,4 位為 0x00101B,選擇 Filtered Timer Input 1(tim_ti1fp1)做為啟動 TIM15 開始計時的觸發(fā)源,根據(jù)圖 3 可以看到等待捕獲的時鐘源是 LSE。


通過 TIM15_CCMR1.CC1S[1:0]為 0x01,選擇 CC1 通道輸入信號,tim_ic1 連接到 tim_ti1,如下圖黃色部分。

通過配置 TIM15_SMCR.TS[4 :0]為 0x00101B 選擇 Filtered Timer Input 1(tim_ti1fp1)做為觸發(fā)源。即 LSE 過來的信號為觸發(fā)源。通過配置 TIM15_SMCR.SMS[3 :0]為 0x0110B 選擇 Trigger Mode,在觸發(fā)源的上升沿啟動 TIM15。




開啟 DMA 的時鐘,因為 GPDMA1 是掛在 AHB1 總線上的,因此代碼如下:

下面是 Timer15 的初始化代碼:


對捕獲和用時的計時的程序處理:
在 timer15 DMA 256 個數(shù)據(jù)存儲完成的回調(diào)函數(shù)中做如下處理,并停止 Timer15 的更新中斷和 DMA 中斷,256 個 LSE 周期計時數(shù)據(jù)存儲在 LES_buffer[256]中。

DMA 運行的同時需要使能 Timer15 溢出中斷,并對計數(shù)器溢出進行計數(shù)。代碼如下:

在 LES_Counter=256 時進行 LSE 頻率的計算,代碼如下:

標準值為:(255/32768)x10000000 = 77819 實際 255 個 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 是否準確,只要比較上面的標準值和實際測量值就好。
小結(jié)
這個 LSE 的準確性測試程序采用的是 DMA 結(jié)合時鐘溢出計數(shù)方式進行計算。使用 DMA 存儲每個 LSE 周期的捕獲值,同時配合 Timer15 溢出中斷進行溢出次數(shù)計數(shù),最后對取得的結(jié)果進行計算,對 255 個 LSE 周期累加在一起的計時結(jié)果進行判斷,并同理想值進行比較得知實際的LSE 精度。
同時請留意把驅(qū)動能力調(diào)節(jié)大些,用 LOW 有時候測到的誤差會偏大,代碼如下:
__HAL_RCC_LSEDRIVE_CONFIG(RCC_LSEDRIVE_MEDIUMHIGH);
文檔中所用到的工具及版本
NUCLEO-U575 開發(fā)板
STM32CubeMX Version:6.99.12-B1
來源:STM32單片機
審核編輯:湯梓紅
-
STM32
+關(guān)注
關(guān)注
2305文章
11118瀏覽量
370925 -
LSE
+關(guān)注
關(guān)注
0文章
10瀏覽量
10554 -
開發(fā)板
+關(guān)注
關(guān)注
25文章
6112瀏覽量
112913 -
時鐘源
+關(guān)注
關(guān)注
0文章
108瀏覽量
16630
發(fā)布評論請先 登錄
stm32的時鐘源分析
外部高速時鐘(HSE)以及外部低速時鐘(LSE)
STM32的5個時鐘源介紹
如何去實現(xiàn)一種HSE時鐘和LSE時鐘外部電路的硬件設(shè)計呢
STM32時鐘源學(xué)習(xí)筆記
關(guān)于系統(tǒng)時鐘的配置問題,如是stm32f1的系統(tǒng)時鐘為72Mhz
STM32 時鐘系統(tǒng)--RCC寄存器
認識STM32的時鐘源

使用HSE時鐘源對LSE精度進行測量
評論