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