描述:
STM32f0按鍵模塊電路經(jīng)常遇到上電不復位的情況,芯片采用的是stm32f030,按鍵模塊采用ZLG7290芯片、4X4按鍵LED矩陣。ZLG7290是周立功公司專門開發(fā)的按鍵芯片,其最大可支持64個按鍵和64個LED,可通過I2C協(xié)議對其讀寫,ZLG7290與stm32f030復位電路采用datasheet參考電路,如下:
正常情況下,電路上電后會有一個LED全部點亮的過程,上電穩(wěn)定延時后,LED自動全部熄滅,正常運行時,按下相應按鍵其對應的LED燈應被點亮。
問題:
STM32復位電路內部有自帶的上拉電阻,同時PVD的電源檢測閾值采用的是默認值2.2V,采用電池供電,電壓表測量引腳電壓在2.8V左右,但是電路上電后不能正常運行,LED矩陣上電不能被點亮,按鍵按下后相應LED燈無反應。
測試
stm32f030復位測試
stm32f030上電復位后,程序依次執(zhí)行初始化的過程,其中包括設置時鐘為內部48MHZ時鐘頻率,設置并啟動串口、I2C等,之后執(zhí)行LED燈全部點亮函數(shù),延時3s關閉所有LED并進入主功能程序。
測試任務:stm32f030是否能復位:
既然上電后LED燈不能全部點亮,則LED燈全部點亮函數(shù)不能正常執(zhí)行,則在此函數(shù)之前添加一個UART串口發(fā)送函數(shù)。
測試結果:
串口發(fā)送函數(shù)被執(zhí)行,在超級終端收到正常的數(shù)據(jù)。
此時表示stm32f030能正常復位。
測試任務:注釋掉LED燈全部點亮函數(shù)
此時上電后,LED不能被全部點亮(函數(shù)被注釋),但是按下按鍵后相應LED可以被點亮。此時可鎖定問題在LED燈全部點亮函數(shù)上。
分析:
LED燈全部點亮函數(shù)實際上是一個I2C寫函數(shù),通過向ZLG7290相應寄存器寫入0xFF,可點亮LED。采用上面測試的方法,在函數(shù)的每一條語句之前插入一條UART發(fā)送函數(shù),分析執(zhí)行情況,其中
while(I2C_GetFlagStatus(I2C1,I2C_FLAG_TXIS)==RESET);
執(zhí)行沒有問題,再次說明stm32f030能正常復位。但是在
I2C_Senddata(I2C1, data);
語句之后,UART發(fā)送函數(shù)不能被正常執(zhí)行,因此問題被鎖定。
ZLG7290不能被正常讀寫,很可能ZLG7290沒有被復位。
查閱ZLG7290的datasheet,發(fā)現(xiàn)ZLG7290復位時間在20ms左右,其遠遠大于stm32f030,因而產生ZLG7290沒有正常復位的情況。
結論:
電路上電不復位的原因可能是多方面的,特別是stm32f030和外圍電路均需要復位的情況,因此各個模塊可能需要隔離測試,最終鎖定問題才能找到解決的方法。
-
led
+關注
關注
240文章
23072瀏覽量
657082 -
STM32
+關注
關注
2264文章
10854瀏覽量
354308 -
復位電路
+關注
關注
13文章
320瀏覽量
44504
原文標題:STM32上電復位不正常 手動復位正常的原因
文章出處:【微信號:changxuemcu,微信公眾號:暢學單片機】歡迎添加關注!文章轉載請注明出處。
發(fā)布評論請先 登錄
相關推薦
評論