GD32 MCU ISP失败的原因

描述

玩过GD32的小伙伴们都知道,GD32 MCU支持ISP,即在系统编程,前面的常见问题也给大家讲过什么是ISP,什么是IAP?

那有没有小伙伴遇到过ISP失败的情况,失败的原因是什么呢?

我们就以GD32F30x系列为例,来看下用户手册:

mcu

 

通过将BOOT0拉高,BOOT1拉低,上电后,MCU则工作在ISP模式,此时可以通过ALL-IN-ONE软件(或用户自行开发的上位机软件)对MCU进行编程、操作选项字节、flash数据回读等操作,使用的是以下口:

mcu

 

如果用的是容量不超过512K的GD32F303系列(HD产品),则使用USART0(PA9 PA10)进行ISP交互,如果是超过512K的GD32F303系列(XD产品),则除了USART0,还有USART1(PA2 PA3),如果是F305/307系列(CL产品),则还增加了一个USB接口(DFU模式)。

当进入ISP后,实际上MCU是不知道自己该用哪个口进行ISP的,此时需要MCU和上位机(All-IN-ONE等)进行通讯握手,握手信号由上位机发出,也就是说哪个口先接收到上位机的握手信号,则该口被自动设置为ISP口,而其他通讯口则不会再处理ISP过程。

比如使用GD32F303ZKT6(XD产品),当上位机通过PA10(MCU的RX接收脚)向MCU发出握手信号后,则USART0被识别为ISP口,且此时USART0的波特率会根据握手信号进行自适应设置。

那么如果一个板子上,预设的是USART0(PA9 PA10)作为ISP口的,但同时PA3接了另外的芯片,当MCU上电的时候,有芯片往PA3上发了一些脉冲,则MCU会将USART1(PA2 PA3)设置为ISP口,此时,用户再使用USART0的话,则会失败。

根据上述原理,还有一种失败的可能性,就是刚上电时,ISP口上接收到了一些干扰信号,此时USART被设置为异常的波特率,那么在正式进行ISP时,也会失败。

以上就是GD32 MCU ISP失败的两个可能原因,小伙伴知道其他原因的也欢迎在评论区互动哦。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分