0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

教大家輕松解決RTC意外恢復(fù)到初始值問題

意法半導(dǎo)體PDSA ? 來源:STM32單片機(jī) ? 作者: STM32F4 ? 2021-07-28 16:32 ? 次閱讀

關(guān)鍵詞:RTC,tamper

1. 問題描述

客戶反饋在使用STM32F446的產(chǎn)品做上電、掉電測(cè)試時(shí),RTC會(huì)意外恢復(fù)到配置的初始值。

2. 問題分析及解決

通過與客戶郵件溝通,了解到客戶的VBAT引腳上有獨(dú)立的電池供電,在代碼中當(dāng)?shù)谝淮螁?dòng)時(shí)會(huì)檢查備份寄存器中保留的一個(gè)標(biāo)志,如果是第一次運(yùn)行,則會(huì)設(shè)置RTC的初始化,包含年月日時(shí)分秒,如果不是,則跳過,后面只讀取RTC內(nèi)的時(shí)間信息,并不再修改。

為了使用統(tǒng)一的參考物,先建議客戶使用Cube庫下的官方示例代碼:STM32Cube_FW_F4_V1.25.0ProjectsSTM32F446ZE-NucleoExamplesRTCRTC_Calendar,此代碼剛好可以針對(duì)此問題進(jìn)行分析??蛻羰褂么耸纠a測(cè)試問題依舊。

查看示例代碼,為了排除HSE與LSE的影響,建議客戶將HSE改為HSI, LSE改為LSI,這樣一來,完全跟板上高速晶振無關(guān),跟32.768K的低速也無關(guān)。客戶使用修改后的代碼問題依舊。 查看相關(guān)代碼:

15166378-ed32-11eb-a97a-12bb97331649.png

如上面代碼所示,每次上電后會(huì)讀取BKP_DR1的值,判斷是否為第一次啟動(dòng),如果是,則配置RTC。換句話說,出現(xiàn)問題時(shí),這個(gè)判斷肯定出現(xiàn)問題,導(dǎo)致重復(fù)配置RTC,也就是備份寄存器的值丟失!是什么原因?qū)е聜浞菁拇嫫鞯闹祦G失呢?

同時(shí)我這邊在NUCLEO板上嘗試重現(xiàn)客戶的問題,但無論如何嘗試都無法重現(xiàn),現(xiàn)在兩邊所使用的測(cè)試軟件一模一樣,只是各自的硬件平臺(tái)有所差異,看來就是這個(gè)硬件上的差異帶來的問題。于是下一步比較客戶的硬件與NUCLEO板有何不同。

首先懷疑是VBAT引腳。要是VBAT再現(xiàn)異常,RTC重新配置就很正常,但客戶的VBAT真的會(huì)出現(xiàn)問題么?下面是客戶VBAT引腳的相關(guān)電路:

153ce70a-ed32-11eb-a97a-12bb97331649.png

Figure 1 VBAT外圍電路 如上圖所示,客戶VBAT外部接一電池,當(dāng)VDD有電時(shí),VDD將將電池充電,當(dāng)VDD掉電時(shí),電池給RTC供電。于是向客戶提出VBAT的在掉電上電測(cè)試過程中的波形:

VBAT引腳的波形,在電源掉電上電的過程中并沒有出現(xiàn)掉電的情況,也就是說,RTC擁有穩(wěn)定的電源供應(yīng)。為了避免VBAT的影響,要客戶干脆將R8這個(gè)電阻去掉再測(cè)試,結(jié)果問題依舊存在。 接下來繼續(xù)查看用戶MCU相關(guān)的原理圖,發(fā)現(xiàn)Vcap引腳上的電路與ST官方的建議并不一致:

17781738-ed32-11eb-a97a-12bb97331649.png

Figure 3客戶產(chǎn)品的vcap和PDR_ON引腳

如上圖所示,客戶所使用的VCAP引腳對(duì)地電容為100nF, 而ST建議的是2.2uF,這個(gè)電容涉及到MCU內(nèi)核的穩(wěn)定性,有沒有可能是MCU內(nèi)核不穩(wěn)導(dǎo)致RTC的問題呢?

經(jīng)驗(yàn)證,問題與這兩個(gè)電容沒有關(guān)系,當(dāng)客戶修改到2.2uF再次測(cè)試時(shí),問題依舊。 同時(shí)注意到PDR_ON引腳,聯(lián)想到曾經(jīng)多個(gè)客戶栽到這個(gè)引腳上,客戶可能PDR_ON引腳接錯(cuò),虛焊,懸空將會(huì)導(dǎo)致一系列奇怪問題。此引腳涉及到掉電檢測(cè)。要客戶仔細(xì)檢查此引腳是否已經(jīng)正常連接,客戶反饋確定正常。于是要客戶去掉R64這個(gè)10K上拉,直接短接到VDD再測(cè)試下。

結(jié)果發(fā)現(xiàn)問題依舊。 到目前為止,硬件上該檢查的也差不多檢查了,還是沒有找到問題的關(guān)鍵。這個(gè)時(shí)候,想起此問題是由于備份寄存器的值丟失引起,那么什么時(shí)候下會(huì)丟失呢?思來想去,無外乎以下幾種情況 :

1》 VDD和VBAT同時(shí)掉電

2》 客戶代碼意外修改

3》 檢測(cè)到入侵事件

首先排除前面兩種原因,客戶的VBAT不會(huì)掉電,第一種情況排除??蛻羰褂玫氖荢T官方提供的示例代碼,應(yīng)該不存在意外修改的情況,那么第三種…可是示例代碼中也沒有使能入侵檢測(cè)啊? 于是想到errata sheet, 打開并發(fā)現(xiàn)如下內(nèi)容 :

17bc53a8-ed32-11eb-a97a-12bb97331649.png

如上所述,即使沒有開啟入侵檢測(cè),當(dāng)tamper引腳出現(xiàn)高電平的情況下也有可能會(huì)導(dǎo)致入侵檢測(cè)誤判。于是查看客戶的入侵檢測(cè)引腳:

從客戶的原理圖可以看出,入侵引腳PC13用戶外部按鍵輸入,有外部10K上拉電阻 :

18292e92-ed32-11eb-a97a-12bb97331649.png

對(duì)照STM32F443-EVAL的相關(guān)電路 ,在評(píng)估板上,PC13用作tamper檢測(cè)但外部下拉 :

18deb172-ed32-11eb-a97a-12bb97331649.png

Figure 5評(píng)估板上的PC13

同時(shí)評(píng)估板上的ST-Link部分的STM32F103的RTC_PC13也是外部10K下拉 :

18e9d714-ed32-11eb-a97a-12bb97331649.png

Figure 6 STM32F103上的PC13外部下拉 看來PC13是有講究的。于是請(qǐng)客戶將PC13引腳拉地再測(cè)試,結(jié)果問題不再出現(xiàn)。看來此問題確實(shí)由PC13引腳引起。 為了重現(xiàn)客戶的現(xiàn)象,我在STM32F446-EVAL評(píng)估板上嘗試重現(xiàn),但是,始終沒有重現(xiàn),但好在客戶修改PC13引腳后確實(shí)問題得到解決,所以此問題也就到此為止。

3. 后記

很多時(shí)候當(dāng)對(duì)問題無從下手的時(shí)候,解決問題的關(guān)鍵是首先找到一個(gè)可以參考的參照物,比如軟件是有ST提供的官方示例代碼,硬件是有ST提供的NUCELO板,找到這個(gè)關(guān)鍵的參考物后接下來逐漸比較客戶的軟硬件與參照物的差異,不斷縮小范圍,這個(gè)不失為一種常規(guī)比較有效的方法,希望讀者能充分利用。

編輯:jq

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • RTC
    RTC
    +關(guān)注

    關(guān)注

    2

    文章

    542

    瀏覽量

    66821

原文標(biāo)題:工程師筆記 | 解決 RTC意外恢復(fù)到初始值問題

文章出處:【微信號(hào):STM_IPGChina,微信公眾號(hào):意法半導(dǎo)體PDSA】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    網(wǎng)絡(luò)恢復(fù)比災(zāi)難恢復(fù)更加復(fù)雜

    技術(shù)已然成為維持企業(yè)運(yùn)營的重要?jiǎng)恿?。?duì)于大多數(shù)企業(yè)來說,IT服務(wù)中斷直接影響運(yùn)營目標(biāo)的實(shí)現(xiàn)。關(guān)注業(yè)務(wù)連續(xù)性的IT策略非常重要。雖然許多企業(yè)已經(jīng)制定了完善的傳統(tǒng)災(zāi)難恢復(fù)計(jì)劃,但它們往往無法應(yīng)對(duì)當(dāng)今數(shù)據(jù)意外事件的復(fù)雜性。企業(yè)亟需制
    的頭像 發(fā)表于 01-17 15:49 ?88次閱讀

    解析愛普生RTC芯片選型的五大關(guān)鍵

    當(dāng)你的電子設(shè)備突然斷電重新開機(jī)后,時(shí)間又變回了初始值;鬧鐘沒響重要事件記錄不見了,甚至還得重新設(shè)置備忘提醒。那么,怎么解決這個(gè)問題呢?讓你不再為時(shí)間的飛逝而困擾!EPSON將向你介紹RTC芯片選型
    的頭像 發(fā)表于 01-06 15:42 ?97次閱讀
    解析愛普生<b class='flag-5'>RTC</b>芯片選型的五大關(guān)鍵

    ads1232重復(fù)上電AD初始值相差很大怎么解決?

    傳感器,AD也成線性變化,測(cè)量沒有問題,只是初始AD變大了。請(qǐng)問這是什么情況,怎么解決,在網(wǎng)上有看到遇到類似問題的,但是沒看到解決辦法。初始化有進(jìn)行偏移校準(zhǔn),偏移校準(zhǔn)去掉也是一樣的,包括PWDN拉高前延時(shí)1ms也沒效果。
    發(fā)表于 12-17 06:39

    ads124s08把AIN0端口接入的采集電壓斷開或者接通,芯片的寄存器所有配置都變成默認(rèn)的初始值了,為什么?

    題是我把AIN0端口接入的采集電壓斷開或者接通,芯片的寄存器所有配置都變成默認(rèn)的初始值了,整個(gè)芯片進(jìn)行復(fù)位。我不知道這個(gè)是原因。下面是我的連接圖。
    發(fā)表于 12-13 07:06

    AFE4404沒有接外部時(shí)鐘,4404寄存器的為初始值,能夠通過IIC修改寄存器嗎?

    1、首先AFE4404寄存器默認(rèn)使用外部時(shí)鐘,CLK引腳是否必須要先接一個(gè)時(shí)鐘,通過修改寄存器的改為內(nèi)部時(shí)鐘,然后再停止外部時(shí)鐘?? 2、假如沒有接外部時(shí)鐘,4404寄存器的為初始值,能夠通過IIC修改寄存器? 3、通過I
    發(fā)表于 12-06 06:35

    RTC時(shí)鐘使用指南:簡(jiǎn)單步驟,實(shí)用成果

    今天展示的是RTC時(shí)鐘使用指南,輕松學(xué)習(xí),完美成果。
    的頭像 發(fā)表于 11-08 11:40 ?390次閱讀
    <b class='flag-5'>RTC</b>時(shí)鐘使用指南:簡(jiǎn)單步驟,實(shí)用成果

    提升效率:RTC時(shí)鐘實(shí)用設(shè)置

    今天來給大家講解的是RTC時(shí)鐘實(shí)用性,提升絕對(duì)的效率。
    的頭像 發(fā)表于 11-04 16:35 ?860次閱讀
    提升效率:<b class='flag-5'>RTC</b>時(shí)鐘實(shí)用設(shè)置

    TC377如何將其恢復(fù)初始狀態(tài)?

    大家好!在調(diào)試 TC377 閃存時(shí),我擦除了從 0xAF000000 0xAF0007D0 的一個(gè)區(qū)域,這可能導(dǎo)致 UDE 設(shè)備無法連接到 TC377 芯片。如何將其恢復(fù)
    發(fā)表于 09-09 07:51

    copy table中存放的是否為初始值不為0的data段所在PFlash的地址信息?

    1. copy table中存放的是否為初始值不為0的data段所在PFlash的地址信息?(比如:int a = 10; 變量a被存放到了PFlash的0x8030001c處,copy table
    發(fā)表于 07-02 07:51

    如何通過STM32cubMUX配置RTC時(shí)鐘?

    在官方軟件上配置好工程后燒錄上電后RTC正常跑,但是掉電后再次上電RTC是中讀出的數(shù)據(jù)為內(nèi)部時(shí)鐘初始值2020.1.1.0.0.0.想咨詢下各位大佬是否做過??赡艽嬖诘脑蚴鞘裁?。是驅(qū)動(dòng)內(nèi)需要設(shè)置某個(gè)寄存器?硬件上是存在備用電源
    發(fā)表于 04-09 06:09

    如何改變stm32L0的RTC的wakeup time?

    stm32L0的RTC的wakeup time在RTC初始化為固定,有時(shí)希望這個(gè)wakeup time可以改變,請(qǐng)教大家如何才能成功改變?
    發(fā)表于 04-07 06:12

    STM32L051C8T6 HAL進(jìn)入STOP模式RTC喚醒后,ADC采樣不對(duì)怎么解決?

    STM32L051C8T6HAL 進(jìn)入STOP模式RTC喚醒后,ADC采樣不對(duì)! 程序如果不進(jìn)入STOP模式,ADC在WHILE(1)主程序,采樣結(jié)果正常,但是程序進(jìn)入STOP模式,RTC喚醒返回
    發(fā)表于 03-25 07:35

    stm32l4系列硬件rtc初始化異常,找不到rtc設(shè)備是怎么回事?

    先說現(xiàn)象,如下圖 ,找不到rtc設(shè)備,并且初始化失敗,但是這些都有,如下圖 最讓我感到郁悶的是,在初始化時(shí)明明有注冊(cè)成功或者失敗的log打印,但是打印窗口并沒有任務(wù)輸出,仿真發(fā)現(xiàn)初始
    發(fā)表于 02-23 06:34

    rtc時(shí)鐘如何在啟動(dòng)后會(huì)不被初始化為默認(rèn)

    請(qǐng)教一個(gè)關(guān)于rtc的問題。 1.我發(fā)現(xiàn)我的rtc時(shí)鐘根據(jù)例子,在啟動(dòng)后會(huì)被初始化為默認(rèn)。 但是如果我想在軟件復(fù)位或者看門狗復(fù)位的情況下,不讓我的r
    發(fā)表于 02-21 06:08

    TC275在內(nèi)存分段預(yù)警處理之后,設(shè)置的全局變量初始值不正確怎么解決?

    大家好想問一下,tc275里,自己在地圖文件里定義有了新的存檔段,又設(shè)置了首地位置,段內(nèi)對(duì)象可寫,4字節(jié)對(duì)齊。但是在內(nèi)存分段預(yù)警處理之后,設(shè)置的全局變量初始值不正確,板子上電后會(huì)給出一個(gè)隨機(jī),而不會(huì)是自己設(shè)定的
    發(fā)表于 01-22 06:40