最近有個STM32用戶反映,他們目前在調試STM32G431CBU6這款芯片。使用ST官方的Cube庫進行編程,發現時鐘沒法配置到技術手冊上告知的170MHz。當然這個170MHz的頻率要經過PLL倍頻產生。不管選用內部時鐘源還是外部晶振,只要配置成170MHz,芯片肯定會復位。
基于HSI時鐘源的相關時鐘配置代碼大致如下:
他嘗試做了各種軟硬件調整排查,經過反復測試驗證,發現設置PLL所產生的時鐘只有在不高于80MHz時,芯片才能正常運行。可STM32芯片手冊白紙黑字明明寫著主頻可以跑到170MHz啊!
由于死活找不出軟件或硬件方面的原因,幾近內心崩潰。甚至不直覺地開始懷疑該芯片是否真的支持170MHz的主頻。所以他的問題簡單直接,STM32G4到底支不支持170MHz的主頻?
關于STM32G4系列的主頻參數,是最基本而核心的一個參數,手冊是不可能寫錯的。何況本人之前也使用STM32G4的開發板做過一些測試,都是基于170MHz進行的。
鑒于這種情況,我們首先可以檢查一個參數,即CPU通過FLASH控制器取指時的那個延時等待參數,它配置得是否合適會影響MCU的正常工作。我們知道CPU的訪問速率通常要比FLASH控制器的取指速率快得多,這個延時等待參數的配置需要跟CPU的主頻匹配。各個STM32系列的參考手冊里都有個對照表。下圖是STM32G4系列的。
按照上面表格來看,如果內核時鐘跑到170MHz,這個Latency參數應該設置為8。
經了解,他已經注意到這個參數了,并將這個參數做了正確配置。看來不是這方面的原因,再換個方向看看。
主頻的提高往往意味著功耗的增大或噪聲及干擾方面可能加劇。于是試圖從系統供電能力、電源穩定度、時鐘穩定性方面查找原因,依然沒有發現明顯問題。
建議他對STM32芯片所有電源或電源相關管腳逐個排查連接、焊接情況,當然也包括VDDA腳的連接情況。遇到類似這種沒法一下子從軟硬件上找出與異常癥狀之間明顯的邏輯關系時,這樣做往往是個簡單而且比較有效的排錯辦法。
經針對相關管腳的逐個排查,很快發現芯片的VDDA腳虛焊了,重新處理后芯片于170MHz運行穩健。
問題終于得以解決。看到這里,相信很多人會認為該問題不復雜、也談不上深奧,可這類問題原因往往容易被我們忽視掉,難就難在一會半會想不到可能的原因所在。
在我們的實際調試過程中可能很多類似的問題,雖談不上多么復雜或深奧,但往往由于我們內心深處從頭到尾存在對某些點的忽視或者想當然,導致一時半會找不到問題原因而耽誤時間。比方一個大小端的選擇、一個變量數據寬度的適時調整、一個虛焊的BOOT腳等,它們都很可能將我們困住好一陣子。
在此分享相關案例, 愿各位在MCU嵌入式開發過程中多些經驗的積累,令開發過程盡量平坦而舒心些。
-
芯片
+關注
關注
454文章
50442瀏覽量
421920 -
STM32
+關注
關注
2266文章
10873瀏覽量
354877
原文標題:難道STM32G4芯片的主頻才到80MHz?
文章出處:【微信號:stmcu832,微信公眾號:茶話MCU】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論