99精品伊人亚洲|最近国产中文炮友|九草在线视频支援|AV网站大全最新|美女黄片免费观看|国产精品资源视频|精彩无码视频一区|91大神在线后入|伊人终合在线播放|久草综合久久中文

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

STM32G0B1看似無法喚醒的一種異常現象分析

jf_pJlTbmA9 ? 來源:STM32單片機 ? 作者:STM32單片機 ? 2023-10-25 17:09 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

1. 引言

STM32 G0 系列產品具有豐富的外設和強大的處理性能以及良好的低功耗特性,被廣泛用于各類工業(yè)產品中,包括一些需要低功耗需求的應用。

2.問題描述

用戶使用STM32G0B1 作為汽車多媒體音響控制器控制芯片,用來作為收音機頻道存貯和各種檢測控制。在實驗室條件下模擬汽車頻繁打火的情形進行測試,連續(xù)工作72 小時實驗中,進入STOP 模式后,會出現無法再繼續(xù)運行的情況(屏幕沒有顯示輸出,外部中斷無反應)。

3. 問題重現

通常調查問題時采取調試監(jiān)控的方式。但是用戶產品是在檢測外部掉電時,測外部電壓(汽車ACC 電源,轎車12V)下降后,立刻進入低功耗模式,然后通過RTC 和外部中斷(PC13 下降沿觸發(fā)即汽車打火上電)喚醒MCU 繼續(xù)工作。

那么既然是已經進入低功耗模式,并且在幾十個小時內才會出現故障,通常的用ST-LINK 在線調試方式顯然很困難重現問題,即使幸運的遇到了故障,也很容易錯過引起故障的代碼部分,看到了現象卻無法定位。

在此種情況下,正面分析出問題的可能性極小,況且用戶代碼量超過200k。這時候采用排除法不失為一種可行的辦法。通過增加測試樣本數量,進行并行測試提高定位效率。

圖1 是為了方便說明問題,模擬用戶關鍵程序。主要是進入STOP 前后外設的處理,來復現故障現象。

wKgaomUDwhGATobsAAA66HPolD4760.png

圖1 模擬ACC掉電喚醒程序

在經過一段時間的實驗,并從增加和減少該段代碼的排除中,最后驗證并定位到下面的代碼引起故障發(fā)生。

wKgZomUDwhKACQVtAAAg1cYhrL4518.png

圖2 定位到引起的故障代碼

反復分析我們可以看到,在進入STOP前,用戶需要停止ADCDMA。但是在停止DMA時,用戶程序直接停掉DMA的時鐘。從函數名稱上看,是從其他軟件直接搬過來,并且誤以為是DMA的默認初始化動作。

wKgZomUDwhSAU60FAAJMwFNTc4o239.png

圖3 DMA正確的停止方式

查詢參考手冊,停止循環(huán)模式的DMA應該從外設停止開始,而不是簡單粗暴的停止DMA時鐘。而且,在程序順序上客戶是先停止了DMA的時鐘然后才去停止ADC的DMA請求。顯然,當DMA開始工作時,突然停止時鐘會使DMA和總線處于一個不確定階段狀態(tài),因此才有極低概率發(fā)生喚醒故障。

到此已經找到了發(fā)生的原因,按說應該找到了前因后果。但奇怪的是無意中發(fā)現振蕩器的波形比較奇怪,并不符合低功耗模式。

wKgaomUDwhWADZr6AARY114ga8k295.png

圖 4 外部振蕩器HSE 波形

在發(fā)生故障狀態(tài)時發(fā)現外部震蕩器還在持續(xù)震蕩,因此判定此時并非進入低功耗模式。利用IAR編譯器以HOT PLUG的方式連接調試與觀測。

通過調試界面可以看到,代碼會不停的進入DMA中斷。

wKgZomUDwheAaoKNABbR_LM_OmI635.png

圖5 故障模式下的調試

wKgaomUDwhqAMWNYAA6icbL5qbw524.png

圖6 代碼進入循環(huán)過程

奇怪的是每次并沒有看到DMA的寄存器內容,原因是已經關閉了DMA外設的時鐘。所以無法看到任何狀態(tài)標志。退出中斷時在C語言下就無法單步調試了。切換到匯編界面下,可以看到代碼可以繼續(xù)運行到系統(tǒng)時鐘配置函數,但是在配置函數中的除法部分進入了循環(huán),然后又發(fā)生了DMA中斷,并且循環(huán)沒有出來。

顯然,正常的調試手段已顯示出邏輯的不正常。

4.小結

至此,情況已經明了。由于軟件在進入低功耗前試圖關閉ADC加DMA工作,沒有按照手冊的規(guī)范,通過外設停止的方式關閉,而是簡單粗暴的關閉DMA時鐘,導致總線和運行邏輯出錯,無法繼續(xù)執(zhí)行。

外部看起來像是進入低功耗模式后,外部中斷觸發(fā)沒有執(zhí)行,芯片沒有喚醒,實際上是DMA進入了不正常的循環(huán)中斷方式導致了系統(tǒng)卡在循環(huán)代碼下。

芯片的外設功能強大,每種外設運行的方式也不相同,因此停止外設時需根據外設特點以及參考手冊的建議來實施,切不可按自己想象的方式執(zhí)行,這樣引起隱蔽的偶發(fā)故障就很難去定位解決了。

此外ST已經建立好完整強大的生態(tài)系統(tǒng),按照cube 軟件庫的規(guī)范編寫調用驅動函數可以避免少走類似的彎路。

來源:STM32單片機

免責聲明:本文為轉載文章,轉載此文目的在于傳遞更多信息,版權歸原作者所有。本文所用視頻、圖片、文字如涉及作品版權問題,請聯(lián)系小編進行處理

審核編輯 黃宇

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

    關注

    2293

    文章

    11032

    瀏覽量

    365028
  • dma
    dma
    +關注

    關注

    3

    文章

    576

    瀏覽量

    103269
收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

    CAN總線傳播延遲過大導致通信異?,F象解析

    本文導讀在CAN總線系統(tǒng)中,傳播延遲過大是引發(fā)通信故障的關鍵誘因之,可能會導致仲裁異常,使優(yōu)先級高的信號無法正常優(yōu)先傳輸,破壞通信秩序;可能會造成應答錯誤,使發(fā)送節(jié)點難以在應答隙內接收到有效
    的頭像 發(fā)表于 07-15 11:47 ?72次閱讀
    CAN總線傳播延遲過大導致通信<b class='flag-5'>異?,F象</b>解析

    某車聯(lián)網終端有時無法短信喚醒的故障分析

    某車企反饋車載物聯(lián)網終端4G下有時無法接收短信,導致車輛無法喚醒。查詢短信中心記錄,下發(fā)失敗原因有時是“用戶不在服務區(qū)”,有時是“用戶關機”。實際終端
    的頭像 發(fā)表于 07-14 10:39 ?134次閱讀
    某車聯(lián)網終端有時<b class='flag-5'>無法</b>短信<b class='flag-5'>喚醒</b>的故障<b class='flag-5'>分析</b>

    555定時器設計異常現象

    課程需要搭建個555定時器電路,使用的eda工具是Cadence Spectre ic618,其中比較器和RS鎖存器以及其他邏輯電路均為cmos電路,而放電管為bjt,現在進行直流仿真后發(fā)現vdd
    發(fā)表于 04-12 00:25

    stm32g0b1中的usart5進不去HAL_UARTEx_RxEventCallback,為什么?

    請教下關于stm32g系列的問題,stm32g0b1中的usart5進不去HAL_UARTEx_RxEventCallback,cudemx上配置跟其他串口也是樣的,都打開中斷了,
    發(fā)表于 03-13 06:51

    STM32G0B1adc+dma采樣數據錯位的原因?

    STM32G0B1adc+dma采樣數據錯位
    發(fā)表于 03-10 08:04

    DLP9500顯示的圖像拉伸,并且有部分圖像無法顯示,是什么原因導致這種異?,F象呢?

    使用ILA抓取的數據是正確的。DMD顯示的圖像拉伸,并且有部分圖像無法顯示。是什么原因導致這種異?,F象呢?這是因為DLP9500的管腳設置錯誤還是軟排線呢?
    發(fā)表于 02-26 06:43

    電路異?,F象及解決

    1 電路異?,F象 這是面包板論壇看到的則帖子,帖主的問題主要是使用個網上借鑒的光耦串口隔離電路,結果實際調試發(fā)現根本通訊不上: ? 您是否已經看到這個問題發(fā)生的原因了? ? 2 問
    的頭像 發(fā)表于 02-07 10:10 ?542次閱讀
    電路<b class='flag-5'>異?,F象</b>及解決

    ADS7953做數據采集,系統(tǒng)在測試過程中發(fā)現偶爾會出現ADS7953沒有輸出的異?,F象,為什么?

    我這邊使用了ADS7953做數據采集,般情況下工作是正常的,但是系統(tǒng)在測試過程中發(fā)現偶爾會出現ADS7953沒有輸出的異常現象,也就是該芯片的SDO輸出腳的輸出信號電平直是低,在出現該
    發(fā)表于 12-31 07:48

    adc12d1800兩個通道采樣,Q路正常,I路異常,為什么?

    的,使用段時間后出現這個現象。 圖1是正常現象: 圖2是異?,F象(紅色-DQ和DQD;藍色-DI;綠色-DID): 這是什么原因造成
    發(fā)表于 12-26 06:01

    使用DAC38RF84過程中出現復位腳異?,F象,怎么解決?

    在使用DAC38RF84過程中出現復位腳異常現象。該復位腳外接1只阻值為1K的上拉電阻,上拉電阻另端與1.8V電壓相接。具體異?,F象為:
    發(fā)表于 12-16 08:41

    使用FPGA對ads6442進行控制采樣遇到的異常現象求解答

    個50KHZ,幅度為2V的正玄波進行采樣,但是采樣出現了異?,F象,采集回來的波形如下圖,請問這個問題是什么導致的?是采樣模式設置問題,還是硬件電路問題? 期待您的解答。
    發(fā)表于 12-06 08:00

    STM32G0B1VC IAP時flash擦除函數進不去是怎么回事?

    您好,我在使用STM32G0B1VC做IAP功能時遇到個很奇怪的現象,我為Bootloader分配了0x08000000~0x0800F
    發(fā)表于 11-15 08:06

    ADS7853通道B讀到的電壓值偏大,確認到通道B的參考電壓VREF異常了,為什么?

    ADS7853: 通道B內部參考電壓異常,通道A正常,請幫忙分析 Part Number: ADS7853 、異?,F象 1.1、通道
    發(fā)表于 09-26 07:42

    使用THS4531驅動ADC時,THS4531電路無法對信號進行放大的原因?

    和實際工作都能正常,但有時該THS4531 電路無法對信號進行放大,多次上電重啟都無法恢復。使用烙鐵對C4和C5加熱后,或者說用烙鐵焊下周圍的電路,信號就好了,但可以肯定的是外圍電路不存在虛焊等問題,該
    發(fā)表于 09-05 06:07

    觸發(fā)器具有空翻現象的影響

    觸發(fā)器具空翻現象,通常是指在某些特定條件下,觸發(fā)器(trigger)在電路中產生的一種異?,F象。這種現象可能導致電路的不穩(wěn)定,甚至損壞。
    的頭像 發(fā)表于 07-23 11:17 ?3532次閱讀