CH582在使能HAL_SLEEP時(shí),GPIO喚醒將導(dǎo)致軟件復(fù)位

問題現(xiàn)象:

軟件設(shè)置使能HAL_SLEEP功能, 并且在初始化時(shí)使能了GPIO喚醒功能,GPIO開啟下降沿中斷功能。當(dāng)GPIO有中斷產(chǎn)生時(shí),有時(shí)軟件會(huì)復(fù)位,有時(shí)不會(huì)。如果不使能HAL_SLEEP功能, GPIO中斷不會(huì)導(dǎo)致軟件復(fù)位。

芯片型號(hào):CH582

軟件版本:

CH58x_BLE_LIB_V1.30

MESH_LIB_V1.5


理論上不會(huì)出現(xiàn)這個(gè)問題,開啟HAL_SLEEP功能時(shí),芯片會(huì)被喚醒。默認(rèn)使用的是sleep模式,shutdown模式喚醒后芯片會(huì)復(fù)位。

1、下載官方最新的EVT例程;

2、PM例程有完整的GPIO喚醒,可以參考一下。同時(shí)使用PM的例程開啟相應(yīng)的睡眠模式,看看是否會(huì)喚醒;

3、可以打印一下復(fù)位狀態(tài)寄存器,看看相應(yīng)的值為多少。

1656238505174.png


這個(gè)問題我遇到過,而且可以復(fù)現(xiàn):



產(chǎn)生脈沖的源碼

icon_rar.gifPulse_generate.zip


以下是我的記錄


-------------------------------------------------------------------------------------------------------------

## 中斷IO測試工程

用于產(chǎn)生一個(gè)負(fù)脈沖給中斷IO,測試單片機(jī)是否復(fù)位


### 問題現(xiàn)象

IO配置成中斷模式,并在BLE peripheral例程中開啟HAL_SLEEP,給中斷IO一個(gè)us級(jí)的負(fù)脈沖,MCU立即復(fù)位


### 處理方法

關(guān)機(jī)前再配置IO中斷(正常工作時(shí)關(guān)閉中斷)。



我的也是使用的藍(lán)牙從機(jī),PA10作為IO下降沿喚醒,不開睡眠的時(shí)候,正常,開睡眠的時(shí)候,會(huì)出現(xiàn)重啟現(xiàn)象,重啟的寄存器R8_RESET_STATUS為0x01,上電復(fù)位。


檢查代碼是否為最新的,目前官網(wǎng)更新的最新為1.9版本。

先使用PM例程,配置SLEEP模式,其他睡眠模式屏蔽,并驗(yàn)證。

在peripheral例程測試的時(shí)候,只需要加上GPIO的配置函數(shù)即可,并開啟HAL_SLEEP。GPIO觸發(fā)的時(shí)候,注意喚醒后再將GPIO置為浮空的狀態(tài)。


我目前也遇到了按鍵芯片重啟這個(gè)問題,用ch592?peripheral例程測試的時(shí)候,加上GPIO的配置函數(shù)即可,并開啟HAL_SLEEP。

如果是作為遙控器使用,喚醒后gpio設(shè)置為浮空狀態(tài),還怎么檢測下降沿呢?

并且,這個(gè)重啟現(xiàn)象不一定什么時(shí)候出現(xiàn),隨機(jī)的。


檢查你的代碼配置是否合理:

ch573 做藍(lán)牙遙控如何降低功耗? - 沁恒微電子社區(qū) (wch.cn)



我的意思是,按鍵的gpio如果設(shè)置為浮空狀態(tài),還如何進(jìn)入中斷呢?需要外部增加上拉電阻么?


目前我的遙控按鍵是設(shè)置為內(nèi)部上拉,下降沿中斷,在中斷中設(shè)置按鍵標(biāo)志位。

現(xiàn)在藍(lán)牙遙控器的基本功能都可以了,功耗也降下來了,就剩下這個(gè)按鍵復(fù)位的問題了。如果按鍵按的比較慢,芯片復(fù)位的機(jī)會(huì)小,因?yàn)榘存I有雙擊功能,會(huì)有多次快速按的時(shí)候,就很容易出現(xiàn)芯片復(fù)位。


您好,按鍵的GPIO設(shè)置為浮空輸入,是要實(shí)現(xiàn)什么樣的功能。作為按鍵,一般來講需要低電平表示按下,就內(nèi)部上拉;需要高電平表示按下,就內(nèi)部下拉,二選一。浮空輸入一般在采集ADC時(shí)使用。

如果一定要配置為浮空輸入,需要在休眠前固定電平為接近外部電平的狀態(tài),以減小漏電。喚醒后,在TMOS事件中重新配置為浮空輸入。EVT例程里懸空引腳一般固定為內(nèi)部上拉。


該按鍵有沒有被用作為休眠喚醒按鍵?

若使用了CH582,檢查代碼里有沒有啟用看門狗,按下按鍵復(fù)位時(shí),可能是由于IO不具備喚醒的條件,MCU無法進(jìn)入sleep休眠,導(dǎo)致進(jìn)入idle休眠,此時(shí)若啟用了看門狗,會(huì)引起看門狗復(fù)位。解決方法是在休眠前,判斷IO狀態(tài),比如說配置為下降沿喚醒,就在休眠前判斷IO是否已處于高電平的狀態(tài),若是則繼續(xù)休眠,若否則打斷休眠重新配置IO為內(nèi)部上拉再讀IO。

若使用了CH592,上述問題可以在配置R8_SLP_WAKE_CTRL I= RB_GPIO_WAKE_MODE后解決。


若該按鍵只是被用作按鍵中斷,檢查是否有代碼跑飛進(jìn)hard fault后復(fù)位的情況??梢园聪缕┛团挪椋?a >CH57x/CH58x/CH32V wch risc-v 芯片hardfault問題追蹤&程序卡死追蹤 - iot-fan - 博客園 (cnblogs.com)


只有登錄才能回復(fù),可以選擇微信賬號(hào)登錄

国产91精品新入口,国产成人综合网在线播放,九热这里只有精品,本道在线观看,美女视频a美女视频,韩国美女激情视频,日本美女pvp视频