色哟哟视频在线观看-色哟哟视频在线-色哟哟欧美15最新在线-色哟哟免费在线观看-国产l精品国产亚洲区在线观看-国产l精品国产亚洲区久久

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

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

3天內不再提示

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

jf_pJlTbmA9 ? 來源:STM32單片機 ? 作者:STM32單片機 ? 2023-10-25 17:09 ? 次閱讀

1. 引言

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

2.問題描述

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

3. 問題重現

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

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

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

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

wKgaomUDwhGATobsAAA66HPolD4760.png

圖1 模擬ACC掉電喚醒程序

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

wKgZomUDwhKACQVtAAAg1cYhrL4518.png

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

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

wKgZomUDwhSAU60FAAJMwFNTc4o239.png

圖3 DMA正確的停止方式

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

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

wKgaomUDwhWADZr6AARY114ga8k295.png

圖 4 外部振蕩器HSE 波形

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

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

wKgZomUDwheAaoKNABbR_LM_OmI635.png

圖5 故障模式下的調試

wKgaomUDwhqAMWNYAA6icbL5qbw524.png

圖6 代碼進入循環過程

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

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

4.小結

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

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

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

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

來源:STM32單片機

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

審核編輯 黃宇

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

    關注

    2270

    文章

    10896

    瀏覽量

    355757
  • dma
    dma
    +關注

    關注

    3

    文章

    560

    瀏覽量

    100551
收藏 人收藏

    評論

    相關推薦

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

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

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

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

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

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

    STM32G0 Keil仿真下再退出仿真程序才運行正常怎么解決啊?

    如題 我用stm32g0開發 直接下載運行程序運行異常,具體就是進入stop模式無法喚醒,但是我用keil debug 然后再退出debug 這個時候程序跑的正常 就是能進入stop模
    發表于 04-19 07:22

    使用CubeMX生成的STM32G0B1工程,通過I2C讀取EEPROM時,TXIS位直保持0導致無法發送從機地址怎么解決?

    使用CubeMX生成的STM32G0B1工程,通過I2C讀取EEPROM時,TXIS位直保持0,導致無法發送從機地址。 調用的函數時:HAL_I2C_Mem_Read( hi2c
    發表于 04-03 08:12

    STM32G0B1無法操作FLASH,解鎖FLASH失敗的原因?

    使用STM32G0B1寫內部的Flash時出現問題,代碼: #pragma arm section code = \"RAMCODE\" uint32_t
    發表于 04-02 07:45

    STM32G0空閑中斷異常,且DMA接收不到數據是怎么回事?

    板子:STM32G0B1 方式:UART2空閑中斷+DMA接收 問題:燒寫程序后,板子上電就自動進入空閑中斷,但此時沒有數據發送,當采用上位機發送數據時,可以進入空閑中斷,但DMA接收不到數據? 求幫助,感謝感謝!
    發表于 03-26 07:03

    Motor Profiler分析失敗,顯示speed feedback異常的原因?

    我現在用的是G431+ IHM16套件,手上有兩電機,一種是現在需要用的空心杯無刷電機,一種是以前的航模電機,用這個分析軟件去跑,航模電
    發表于 03-19 08:30

    stm32g0b1配置usbhost不能跑通怎么解決?

    用cubemx配的不能跑通,g0b1的例程也沒有,跑c1的USBdevice可以跑,host不行,難搞難搞,有大佬可以幫忙下么,謝謝了
    發表于 03-14 07:55

    STM32G0B1CCT6休眠喚醒后ADC不能ready怎么解決?

    休眠喚醒后ADC_ISR的Bit 0 ADRDY: ADC ready直為0,是偶發現象,是可能什么原因造成的呀,這塊調用的while
    發表于 03-11 07:09

    STM32G0B1CCT6使用外部時鐘不能被喚醒的原因?

    G0B1CCT6使用外部時鐘休眠后不能被喚醒,且休眠的功耗也比內部時鐘大。 但是G0B1VET6就可以外部時鐘休眠喚醒,兩個有什么區別嗎,謝謝!
    發表于 03-11 06:17

    變壓器運行中常見的異常現象應如何處理呢?

    變壓器運行中常見的異常現象應如何處理?
    的頭像 發表于 03-08 09:19 ?614次閱讀
    變壓器運行中常見的<b class='flag-5'>異常現象</b>應如何處理呢?

    STM32G0B1 hal有沒有復位所有寄存器的函數或者demo?

    本人用的STM32G0B1,我想boot跳轉后,先清理寄存器.hal有沒有復位所有寄存器的函數或者demo?
    發表于 03-08 07:31

    STM32G0B1短接外部晶振后CANFD1不工作怎么解決?

    STM32G0B1,單獨用HSI和HSE,can1都可以工作 短接外部晶振后,iic可正常工作,但CANFD1無法工作,進不到接收中斷。寄存器如圖所示
    發表于 03-08 07:06

    ADXL356輸出異常是什么原因導致的?

    ADXL356信號輸出異常,有時上電時輸出正常,有時上電時輸出異常,(測試20次,有4次輸出異常異常現象為芯片上電只有直流信號(X,Y,Z軸輸出全為
    發表于 12-28 06:56
    主站蜘蛛池模板: 亚洲精品国产自在在线观看| 久久66热在线视频精品| 99热成人精品国产免男男| 亚洲精品午夜VA久久成人| 乡村教师电影版| 亚洲VA欧美VA天堂V国产综合| 无码精品AV久久久奶水| 偷偷要色偷偷| 挺弄抽插喷射HH| 香蕉视频国产精品| HEYZO精品无码一区二区三区| 97国产露脸精品国产麻豆| 99RE久久精品国产| 99久热精品免费观看| YY8090福利午夜理论片| 成年人免费观看的视频| 高h超辣bl文| 久久精品一本到东京热| 精品亚洲AV无码蜜芽麻豆| 久久精品国产96精品亚洲| 玖玖爱在线播放| 蜜柚视频高清在线| 啪啪啪社区| 色婷婷激婷婷深爱五月小蛇| 午夜亚洲WWW湿好大| 亚洲国产在线精品国| 一级片mp4| 2020最新无码国产在线视频| xx在线观看| 国产精品高潮呻吟AV久久96| 国产又黄又硬又粗| 久久久这里有精品999| 欧美阿v在线天堂| 色综合五月激情综合色一区| 亚洲成片在线看| 竹菊影视一区二区三区| 办公室里做好紧好爽H| 国产色欲一区二区精品久久呦| 狠狠色狠色综合曰曰| 免费精品国产人妻国语麻豆| 日本夜夜夜|