我們在從事STM32單片機的應用開發及調試過程中,往往會碰到各類異常。其中有不少比例的問題跟電源有關。對于一個電子產品而言,電源部分很關鍵、很重要,但在實際開發調試中,我們偶爾會有意無意的忽視它。這里分享幾個實際案例,以加強刺激,加深印象。
畢竟因為電源問題可能導致的異常很多很多,這里分享幾個案例算是拋磚引玉,希望大家在調試中對電源方面加以重視。個人認為,往往電源出問題時導致的異常時并不太好分析,多數時候異常表現得更為詭異或沒章法。【注:下面提到的案例中異常原因都與電源有關,但并不是說出現類似異常時一定是電源的原因。】
下面主要分享幾個基于STM32應用的案例。
案例1:ADC功能異常
某人使用STM32芯片的ADC功能,發現ADC數據完全不對。反復核對供電、ADC硬件線路、來回驗證ADC相關軟件配置都沒能解決問題,讓人抓狂。后來一個個檢查芯片的電源腳的連接情況,竟然發現VDDA沒有連接電源。
案例2:STM32芯片的PLL無法正常工作
有人使用STM32F373開發產品,每次開啟PLL都不能正常運行。如果不跑PLL,即運行基本HSI或HSE都沒有問題。首先懷疑是軟件配置方面的問題,可是即使使用ST官方的標準庫和CUBE庫中的例程測試也還是有問題。初步確認和檢查,供電電源穩定,一度懷疑芯片品質問題。幾經反復比較測試驗證,后來發現MCU芯片的一個VDDA腳處于懸空狀態,可靠接上電源后問題解決。因為PLL的正常工作也離不開VDDA的供電。
案例3:跟USB主機的VBUS引腳相連的GPIO容易壞掉
某客戶反映STM32芯片某管腳使用一陣子后出現電平異常,進一步證實為該管腳壞損。大致使用情況如下面原理圖所示:
STM32芯片從外部USB主機的VBUS取電。外部VBUS的供電經過一個LDO后再給STM32 MCU供電,同時,MCU的另外一個GPIO【PA9】與外部VBUS直接相連。
這個電路咋看上去貌似沒什么問題。但由于外部VBUS 5v電源先要經過LDO再供給MCU,這里就有個延時,而GPIO PA9腳則是與VBUS直連。這就導致接上USB插頭的一定時間內,VDD=0v,GPIO PA9的Vin=5v,進而出現VIN[5v]> (VDD+4.0v)的狀況,超過了MCU芯片數據手冊規定的相應GPIO最大輸入電壓。
所以在開發調試過程中,要注意遵守芯片的各個電源特性參數。
案例4:從STM32F1系列芯片移植到STM32F4時功能異常
曾有工程師反映,之前用STM32F1系列芯片好好的,后來因為產品需要,改用STM32F2或STM32F4芯片后,發現芯片根本不能正常工作,即使最簡單的程序也跑不順暢。后來發現其中有部分異常情況源于使用者沒有處理VCAP引腳。STM32F1系列芯片沒有外部VCAP引腳,而F2/F4等系列芯片有VCAP腳的,該類腳需外接合適的電容到地,以保證內核供電的穩定。【部分STM8也有VCAP腳】
案例5:JLINK無法連接STM32目標板
有人使用J-LINK調試STM32F071芯片的板子,通過JLINK與STM32F071目標板進行SWD連接,目標板已經供電。但發現不論是通過J-FLASH還是MDK,JLINK都沒法與目標板連接上。
來回檢查SWD的4根連接線VDD、SWDIO、SWCLK、GND,沒有發現問題。因擔心J-LINK驅動版本等問題,建議其使用STLINK進行連接,即使用ST官方的STLINK UTILITY軟件工具也無法連接目標板。建議客戶核對MCU芯片所有電源及管腳連接情況,最后發現有個負責給GPIO供電的電源腳VDDIO懸空,將其連接電源后,連接正常。
注:STM32系列中,有些芯片的電源部分,除了有VDD,VDDA、VDD_USB外,還有專門的VDDIO供電腳。本案例中,客戶是從STM32F1系列產品移植過來的,STM32F1系列芯片上是沒有VDDIO電源腳的,所以在移植到STM32F0芯片時,硬件設計時忽視了這個VDDIO腳。
順便說下,整體上講,STM32不同系列間移植時軟硬件的兼容性還是很高的,尤其硬件管腳方面的兼容性。不同系列間相同腳位數的管腳安排的差異大多體現在與電源相關的管腳,這點要特別注意。另外提醒下,部分STM8芯片也有這個VDDIO腳。
案例6:STM32芯片總時不時燒掉
曾經有人反映在使用STM32開發產品中,時不時發現STM32主芯片壞掉。后來幾經測試驗證發現是原來前端的電源供電芯片品質不行,一定比例的電源輸出器件輸出異常導致STM32遭殃,進而影響整個產品功能。
簡單羅列以上幾個案例,權當提醒。這些案例事后在這里寫起來是輕飄飄的幾句話,不過在沒找到原因之前往往并不那么輕松,有時可能折騰很久才解決問題。
====================================
發布評論請先 登錄
相關推薦
評論