玩過(guò)GD32的小伙伴們都知道,GD32 MCU支持ISP,即在系統(tǒng)編程,前面的常見問(wèn)題也給大家講過(guò)什么是ISP,什么是IAP?
那有沒有小伙伴遇到過(guò)ISP失敗的情況,失敗的原因是什么呢?
我們就以GD32F30x系列為例,來(lái)看下用戶手冊(cè):
通過(guò)將BOOT0拉高,BOOT1拉低,上電后,MCU則工作在ISP模式,此時(shí)可以通過(guò)ALL-IN-ONE軟件(或用戶自行開發(fā)的上位機(jī)軟件)對(duì)MCU進(jìn)行編程、操作選項(xiàng)字節(jié)、flash數(shù)據(jù)回讀等操作,使用的是以下口:
如果用的是容量不超過(guò)512K的GD32F303系列(HD產(chǎn)品),則使用USART0(PA9 PA10)進(jìn)行ISP交互,如果是超過(guò)512K的GD32F303系列(XD產(chǎn)品),則除了USART0,還有USART1(PA2 PA3),如果是F305/307系列(CL產(chǎn)品),則還增加了一個(gè)USB接口(DFU模式)。
當(dāng)進(jìn)入ISP后,實(shí)際上MCU是不知道自己該用哪個(gè)口進(jìn)行ISP的,此時(shí)需要MCU和上位機(jī)(All-IN-ONE等)進(jìn)行通訊握手,握手信號(hào)由上位機(jī)發(fā)出,也就是說(shuō)哪個(gè)口先接收到上位機(jī)的握手信號(hào),則該口被自動(dòng)設(shè)置為ISP口,而其他通訊口則不會(huì)再處理ISP過(guò)程。
比如使用GD32F303ZKT6(XD產(chǎn)品),當(dāng)上位機(jī)通過(guò)PA10(MCU的RX接收腳)向MCU發(fā)出握手信號(hào)后,則USART0被識(shí)別為ISP口,且此時(shí)USART0的波特率會(huì)根據(jù)握手信號(hào)進(jìn)行自適應(yīng)設(shè)置。
那么如果一個(gè)板子上,預(yù)設(shè)的是USART0(PA9 PA10)作為ISP口的,但同時(shí)PA3接了另外的芯片,當(dāng)MCU上電的時(shí)候,有芯片往PA3上發(fā)了一些脈沖,則MCU會(huì)將USART1(PA2 PA3)設(shè)置為ISP口,此時(shí),用戶再使用USART0的話,則會(huì)失敗。
根據(jù)上述原理,還有一種失敗的可能性,就是剛上電時(shí),ISP口上接收到了一些干擾信號(hào),此時(shí)USART被設(shè)置為異常的波特率,那么在正式進(jìn)行ISP時(shí),也會(huì)失敗。
以上就是GD32 MCU ISP失敗的兩個(gè)可能原因,小伙伴知道其他原因的也歡迎在評(píng)論區(qū)互動(dòng)哦。
-
單片機(jī)
+關(guān)注
關(guān)注
6037文章
44558瀏覽量
635287 -
mcu
+關(guān)注
關(guān)注
146文章
17148瀏覽量
351195 -
ISP
+關(guān)注
關(guān)注
6文章
477瀏覽量
51829 -
GD32
+關(guān)注
關(guān)注
7文章
403瀏覽量
24351
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論