|
|
我最近在調(diào)試做的一個(gè)露營燈的代碼,快給我搞吐了,同樣的按鍵代碼,在esp32上完美運(yùn)行,在51單片機(jī)上卻死活運(yùn)行不了。
這個(gè)項(xiàng)目里用了一顆ETA9741充電寶芯片,這個(gè)芯片很便宜,參數(shù)也不錯(cuò),6毛一片,可以雙向輸入輸出5v2a,用在我這個(gè)項(xiàng)目上很合適。官方給的示范原理圖在下面。
本來項(xiàng)目進(jìn)行的挺順利的,板子焊好了,外殼設(shè)計(jì)好了,代碼寫好了,直到我測試代碼時(shí),發(fā)現(xiàn)單片機(jī)始終無法從休眠喚醒,就檢查了一遍又一遍,搬到arduino測試來測試去(我是用keil寫的51單片機(jī)代碼,arduino是用來調(diào)試的,很方便),都沒有發(fā)現(xiàn)問題,我實(shí)在受不了了,就想用示波器打個(gè)按鍵引腳的波形看看。
你猜怎么著?
在長按之后,按鍵引腳波形是這樣的。(應(yīng)該在附件里)
當(dāng)時(shí)我就直接蒙了,觸摸芯片是開漏輸出,單片機(jī)引腳是高阻,怎么會(huì)有這樣的波形呢?
在輸入按鍵測試之后,我發(fā)現(xiàn)這個(gè)波形在長按之后會(huì)出現(xiàn)/消失,說明這是受控的,因此不可能是觸摸芯片受到干擾導(dǎo)致的。
檢查后發(fā)現(xiàn),在設(shè)計(jì)時(shí)我圖省事,將ETA9741的按鍵引腳和單片機(jī)的按鍵引腳接在了一起,按手冊(cè)來說,這沒問題,按下按鍵之后,ETA9741會(huì)點(diǎn)亮他的4顆LED,指示當(dāng)前電量狀態(tài)。但是實(shí)際卻不是如此。
經(jīng)過測試之后,我發(fā)現(xiàn),ETA9741的button引腳有一個(gè)手冊(cè)中沒有提到的功能,那就是長按之后,button會(huì)復(fù)用為推挽輸出,連接到vbus,輸出占空比為75%,高電平為vbus的方波。再次長按,button引腳恢復(fù)正常高阻狀態(tài)。
這導(dǎo)致即使按鍵按下,觸摸芯片下拉按鍵引腳,你這邊eta9741又推挽輸出高電平,給觸摸芯片灌幾十ma,直接短路了,搞個(gè)即使按鍵按下,電壓也是3.7v左右,依然是高電平,這樣子當(dāng)然就無法正常檢測按鍵了。
之后我將led接到了這引腳上,確實(shí)很亮。這確實(shí)是引腳復(fù)用,在長按之后,75%的時(shí)間,引腳推挽輸出驅(qū)動(dòng)led,25%的時(shí)間,引腳切換為高阻模式,檢測按鍵。
手冊(cè)中完全沒有提到這個(gè)功能,導(dǎo)致我傻傻的調(diào)試好久,,現(xiàn)在也只能把電路板上這根線刮掉,希望能給用這個(gè)人的芯片提醒一下吧。
|
|