大家一定遇到過上電或者復位時外部的MOS電路或者芯片使能信號意外開啟,至此有經(jīng)驗的工程師就會經(jīng)常關(guān)心一個問題,MCU復位時GPIO是什么狀態(tài)?什么電路需要外部加上下拉?
MCU從上電到啟動,實際可分為復位前和復位后、初始化后三個階段來考慮,以GD32F470為例:
- 首先MCU上電過程到POR復位前,數(shù)字電路邏輯還沒復位,GPIO處于高阻狀態(tài),NMOS、PMOS、上下拉電阻都處于關(guān)閉狀態(tài),此時GPIO處于高阻狀態(tài)。
- 當MCU POR復位后,復位引腳拉高,寄存器全部加載復位值,此時IO口狀態(tài)我們可以從GPIO寄存器中看到:


可以看到JTAG和SWD相關(guān)的引腳默認狀態(tài)都是復用模式,且其中部分有配置默認的內(nèi)部上下拉:

所以當MCU復位后,GPIO初始化前一些特殊GPIO是會有內(nèi)部上下拉或者輸出狀態(tài)的,我們需要根據(jù)電路電平要求來合理選用GPIO,避免復位時IO口出現(xiàn)誤輸出。
- 程序啟動后執(zhí)行初始化時會配置想要的GPIO模式和狀態(tài),此時一樣也可能出現(xiàn)誤輸出,我們來看下GPIO輸出寄存器默認值:

因為復位值是全0,所以如果一個希望默認為高的IO先初始化GPIO為輸出模式再配置默認狀態(tài),那么GPIO會先輸出低電平再馬上拉高,通過示波器會看到復位后MCU IO口出現(xiàn)一個低電平毛刺,那么合理可靠的配置時序是:
1、先打開GPIO時鐘;2、設置GPIO輸出高還是低;3、設置GPIO模式;
這樣就不會在初始化過程出現(xiàn)毛刺,需要嚴格遵守。
那么我們現(xiàn)在知道了,除去一些特殊IO和軟件配置時序我們需要注意,在MCU IO口初始化前其他IO都是高阻狀態(tài),那么高阻狀態(tài)是什么電壓?需不需要上下拉,那我們則需要根據(jù)外圍電路來判斷,請關(guān)注我們,后續(xù)視頻我們繼續(xù)分享。
-
單片機
+關(guān)注
關(guān)注
6065文章
44946瀏覽量
648236 -
mcu
+關(guān)注
關(guān)注
146文章
17893瀏覽量
361866 -
電子工程
+關(guān)注
關(guān)注
1文章
66瀏覽量
17366 -
GD32
+關(guān)注
關(guān)注
7文章
419瀏覽量
25245
發(fā)布評論請先 登錄

S32K344 GPIO復位狀態(tài):MDM是什么意思?
節(jié)電設計中掉電狀態(tài)MCU的復位喚醒速度
介紹ATMEL MCU的GPIO配置
外部IC連接NRST導致MCU內(nèi)部復位信號失效的問題
華大MCU如何實現(xiàn)軟件復位
MCU學習筆記_GPIO工作原理

評論