请教各位一个问题,GD32怎么使用UART1进入ISP模式?
芯片是GD32F350,QFN28封装。手册说把BOOT0拉高可以进入ISP模式,可以使用UART0@PA9/10或者UART1@PA14/15中的任意一组下载。
然而我做了个板子,CP2102N的TXD和RXD连接GD32 UART1的RXD和TXD,CP2102N的RTS和DTR连接GD32的RST和BOOT0,然后在GD官方的ISP软件里面选择RTS拉低复位,DTR拉高进ISP,超时1秒,波特率试过了9600、57600、115200,都报超时错误。
3.3V没问题,RST和BOOT0电平在点击下载按钮的时候都有跳变(3.3V->0V->3.3V),但是就是进不去ISP模式。
麻烦各位大佬帮忙看看是怎么一回事。
离线
破案了。GD的ISP程序在拉高BOOT0(DTR)到释放RST(RTS)之间没有加延迟。正常物理机系统自带的API延迟可能就够了,但是虚拟机里面协议栈的延迟不确定性导致它不工作。
一半的锅在GD不可靠的程序设计,一般的锅在VMWare不确定的USB协议栈延迟。
离线