描述:
STM32f0按鍵模塊電路經(jīng)常遇到上電不復(fù)位的情況,芯片采用的是stm32f030,按鍵模塊采用ZLG7290芯片、4X4按鍵LED矩陣。ZLG7290是周立功公司專門開發(fā)的按鍵芯片,其最大可支持64個按鍵和64個LED,可通過I2C協(xié)議對其讀寫,ZLG7290與stm32f030復(fù)位電路采用datasheet參考電路,如下:
正常情況下,電路上電后會有一個LED全部點亮的過程,上電穩(wěn)定延時后,LED自動全部熄滅,正常運行時,按下相應(yīng)按鍵其對應(yīng)的LED燈應(yīng)被點亮。
問題:
STM32復(fù)位電路內(nèi)部有自帶的上拉電阻,同時PVD的電源檢測閾值采用的是默認(rèn)值2.2V,采用電池供電,電壓表測量引腳電壓在2.8V左右,但是電路上電后不能正常運行,LED矩陣上電不能被點亮,按鍵按下后相應(yīng)LED燈無反應(yīng)。
測試
stm32f030復(fù)位測試
stm32f030上電復(fù)位后,程序依次執(zhí)行初始化的過程,其中包括設(shè)置時鐘為內(nèi)部48MHZ時鐘頻率,設(shè)置并啟動串口、I2C等,之后執(zhí)行LED燈全部點亮函數(shù),延時3s關(guān)閉所有LED并進入主功能程序。
測試任務(wù):stm32f030是否能復(fù)位:
既然上電后LED燈不能全部點亮,則LED燈全部點亮函數(shù)不能正常執(zhí)行,則在此函數(shù)之前添加一個UART串口發(fā)送函數(shù)。
測試結(jié)果:
串口發(fā)送函數(shù)被執(zhí)行,在超級終端收到正常的數(shù)據(jù)。
此時表示stm32f030能正常復(fù)位。
測試任務(wù):注釋掉LED燈全部點亮函數(shù)
此時上電后,LED不能被全部點亮(函數(shù)被注釋),但是按下按鍵后相應(yīng)LED可以被點亮。此時可鎖定問題在LED燈全部點亮函數(shù)上。
分析:
LED燈全部點亮函數(shù)實際上是一個I2C寫函數(shù),通過向ZLG7290相應(yīng)寄存器寫入0xFF,可點亮LED。采用上面測試的方法,在函數(shù)的每一條語句之前插入一條UART發(fā)送函數(shù),分析執(zhí)行情況,其中
while(I2C_GetFlagStatus(I2C1,I2C_FLAG_TXIS)==RESET);
執(zhí)行沒有問題,再次說明stm32f030能正常復(fù)位。但是在
I2C_Senddata(I2C1, data);
語句之后,UART發(fā)送函數(shù)不能被正常執(zhí)行,因此問題被鎖定。
ZLG7290不能被正常讀寫,很可能ZLG7290沒有被復(fù)位。
查閱ZLG7290的datasheet,發(fā)現(xiàn)ZLG7290復(fù)位時間在20ms左右,其遠(yuǎn)遠(yuǎn)大于stm32f030,因而產(chǎn)生ZLG7290沒有正常復(fù)位的情況。
結(jié)論:
電路上電不復(fù)位的原因可能是多方面的,特別是stm32f030和外圍電路均需要復(fù)位的情況,因此各個模塊可能需要隔離測試,最終鎖定問題才能找到解決的方法。
-
led
+關(guān)注
關(guān)注
242文章
23388瀏覽量
663600 -
STM32
+關(guān)注
關(guān)注
2273文章
10926瀏覽量
357783 -
復(fù)位電路
+關(guān)注
關(guān)注
13文章
322瀏覽量
44722
原文標(biāo)題:STM32上電復(fù)位不正常 手動復(fù)位正常的原因
文章出處:【微信號:changxuemcu,微信公眾號:暢學(xué)單片機】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
STM32F0系列概覽
![<b class='flag-5'>STM32F0</b>系列概覽](https://file.elecfans.com/web2/M00/13/18/pYYBAGEwOM-AbGQOAAASlKK3aEE309.jpg)
stm32復(fù)位電路工作原理
AN5145_從STM32F0系列到 STM32G0 系列的應(yīng)用移手冊
![AN5145_從<b class='flag-5'>STM32F0</b>系列到 <b class='flag-5'>STM32G0</b> 系列的應(yīng)用移手冊](https://file.elecfans.com/web1/M00/D9/4E/pIYBAF_1ac2Ac0EEAABDkS1IP1s689.png)
STM32F0系列MCU硬件電路boot設(shè)計
![<b class='flag-5'>STM32F0</b>系列MCU硬件<b class='flag-5'>電路</b>boot設(shè)計](https://file1.elecfans.com/web2/M00/A8/17/wKgZomUTyeuASbdQAADtk-rQGyQ525.jpg)
評論