这两天开发一个小项目,用到了CH32V002J4M6,为方便调试,首先配置好的USART1,通过SWIO单线烧录程序后,串口打印正常。编辑程序后再次烧录,结果烧录失败,如下图
原因是CH32V002J4M6芯片,PD1、PD4与PD5引脚在芯片内部短接合封,引到芯片的第8脚,芯片的 SWD 烧录口是 PD1(SWIO),如果程序里把 PD1 当普通 IO 用,或者用其它功能用,第二次烧录就会连不上,报“设置芯片型号失败”或“无法识别目标芯片”。V002系列芯片无BOOT引脚,串口ISP下载用不了,从AI和论坛找了方法:“掉电方式清空 CodeFlash”均未解决。
项目需用到USART1,此芯片资源受限USART1又无法重映像到其它引脚。想到芯片第8脚默认是PD1(SWIO),程序运行初始化串口,初始化为PD5 (TX)后,SWIO失效。根据这一思路,程序上电启动后,把串口初始化延后几十秒或1分钟,给默认的PD1(SWIO)烧录功能留出足够的时间,几秒肯定不够。经实践此方法可行,即保留PD1(SWIO)烧录功能,又可使用USART1。只是烧录时需重新上电,在预留的时间内(串口初始化前)烧录即可,比废掉一颗芯片划算。