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