問:最近在使用STM32F103RB時,出現(xiàn)了斷電后再上電時備份數(shù)據(jù)區(qū)數(shù)據(jù)丟失的現(xiàn)象,不知道是什么原因,最初在設(shè)計的時候芯片核的電源(數(shù)字部分電源)和ADC的電源是相連的,備份數(shù)據(jù)區(qū)的數(shù)據(jù)沒有丟失,現(xiàn)在將ADC的電源單獨(dú)采用一個電壓基準(zhǔn)芯片供電后,斷電再上電發(fā)現(xiàn)備份數(shù)據(jù)區(qū)的數(shù)據(jù)丟失了,全部為0包括時間。如果我將現(xiàn)在的電路板的ADC電源鏈接到數(shù)字電源上,數(shù)據(jù)就不丟失了。為提高ADC精度,又不丟失備份數(shù)據(jù)區(qū)數(shù)據(jù),哪位仁兄有好的建議,感謝!! 答:在斷電時,請保證同時切斷VDD和VDDA 請用示波器看看,懷疑斷電時你的VDDA下降的太慢,而VDD很快消失。在斷電時,應(yīng)該保證同時切斷VDD和VDDA。 問:RTC備份數(shù)據(jù)區(qū)與ADC電源關(guān)系???不管是VDDA下降慢,還是VDD下降慢,我認(rèn)為這個芯片的工作與否不應(yīng)該受VddA的影響,如果說備份電池數(shù)據(jù)受VDDA的影響的話,應(yīng)該在手冊中有說明,我還認(rèn)為當(dāng)不使用ADC時我們可以不給ADC供電,為什么說呢,當(dāng)模擬、數(shù)字電路分離時,模擬電源可能故障失電,數(shù)字部分存在電源,當(dāng)然正常工作的CPU可以通過程序檢查到ADC部分出錯,現(xiàn)在根據(jù)實驗發(fā)現(xiàn),ADC失電后芯片根本不工作。如果說一定要同時切斷電源的話就必須連接到同一電源上,要不肯定丟數(shù)據(jù)呀,香主你說呢。 香主分析的對,但是我就是不明白VDDA必須要先斷電,這是為什么呢。我總是認(rèn)為這個問題不應(yīng)該出現(xiàn),至少我認(rèn)為VDDA自然為獨(dú)立電源引腳,為什么內(nèi)核工作受VDDA的影響呢? 答:RTC備份數(shù)據(jù)區(qū)與ADC電源關(guān)系,以及VDD與VDDA的關(guān)系最近正在翻譯大容量的STM32F103數(shù)據(jù)手冊,正好供電部分的說明與中等容量STM32F103說明一樣,下面貼圖中的2.3.11節(jié)與STM32F103RB數(shù)據(jù)手冊中的2.3.9節(jié)內(nèi)容相同,你可以對照著看: 從關(guān)于VDDA的說明中可以看到,VDDA不單是為ADC供電,它為所有的模擬部分供電,特別是復(fù)位模塊,這就回答了你的“不使用ADC時我們可以不給ADC供電”這個問題。關(guān)于VBAT部分說明了當(dāng)關(guān)閉VDD時,通過內(nèi)部電源切換器,VBAT為RTC、外部32kHz振蕩器和后備寄存器供電。這里說的內(nèi)部電源切換器就是下圖中靠近VBAT的“供電開關(guān)”,下面這張圖就是上面貼圖中提到的圖12: 這張圖中沒有說明這個供電開關(guān)是由哪個電源控制,但從圖上看可以認(rèn)為是VDD控制。 關(guān)于你的問題(包括在前面提的問題),我是這樣分析的:VDD先掉電,在VDDA還沒有完全掉電時,因為內(nèi)部漏電流,上述供電開關(guān)并沒有切換到 VBAT,而此時VDD已經(jīng)消失,造成RTC內(nèi)容丟失。正因為如此,數(shù)據(jù)手冊上才會要求VDD應(yīng)與VDDA同源,同時他們之間的電壓差不能超過 300mV。 如果這個供電開關(guān)是由VDDA控制,那么你看到的現(xiàn)象就是顯而易見了。不過這一點(diǎn)我需要確認(rèn)。 再答:"AN2586-STM32F10xxx硬件開發(fā)入門"中說明:供電開關(guān)由PDR控制在應(yīng)用筆記《AN2586-STM32F10xxx硬件開發(fā)入門》中,我找到了上面所提到的供電開關(guān)是由VDDA控制的清楚說明。 這里是有關(guān)部分截圖,這個文檔的中文譯文在ST MCU中文網(wǎng)頁上: 文中紅線劃出的部分寫明:VBAT的開關(guān)由復(fù)位模塊內(nèi)的掉電復(fù)位(PDR)電路控制。再根據(jù)上面提到的部分,復(fù)位模塊由VDDA供電。所以當(dāng)VDDA晚于VDD調(diào)電時,VBAT的開關(guān)還沒有切換到VBAT,VDD已經(jīng)消失了,RTC的內(nèi)容自然也就消失了。 關(guān)于前面提到的多電源問題,手冊上已經(jīng)明確寫明,VDD必須與VDDA同源,所以不應(yīng)理解為是多電源供電。 至于VBAT缺失和電池沒有電是2個問題,VBAT缺失的情況時,電路上有相應(yīng)處理,所以不會有問題;而電池沒有電的情況下,并不表示VBAT信號懸空,此時VBAT是通過電池接地,也不會有問題,只不過RTC的內(nèi)容不能繼續(xù)維持。電池沒有電時好像應(yīng)該是等效于一個電容加一個電阻,具體什么樣的參數(shù)我不太清楚,但我可以肯定不是一個無窮大的電阻。 問:現(xiàn)在看來對于STM32的設(shè)計那是相當(dāng)?shù)牟灰粯樱蠹乙院笤O(shè)計的時候不要想當(dāng)然,一定要仔細(xì)閱讀說明文檔的每個細(xì)節(jié),要不,設(shè)計會走彎路,當(dāng)然也會帶來一個麻煩就是不同用途的地方很多要求不一樣,我從來都不會想象到PLL會掛在VDDA上,常理上PLL電路應(yīng)該屬于數(shù)字部分。可偏偏掛在了 VDDA上。 由于Vdd的電壓不穩(wěn)定,在大量的IO來回動作的情況下,VDD的電壓極度不穩(wěn)定,當(dāng)然如果VddA也連接到VDD的話,對于48腳和64腳封裝的芯片來講Vdda連接到VDD對于要求高精度的應(yīng)用來講,這個應(yīng)該是不充許的,我使用的就是103VB,如果將VDDA連接到VDD,此時的AD采樣誤差明顯低于VDDA與VDD分離的誤差,我將VDDA連接到一個3.3V的參考電壓芯片上了。一般的芯片VDDA和VDD都是可以分離供電的,至少我看見過的,ST的除外。 第三者答:PLL電路似乎不可能是純數(shù)字電路,至少VCO應(yīng)該用模擬電路。 發(fā)表于2009/7/21 |