py32作为后起之秀的单片机品牌,以超低的价格,优异的性能一直被大家会吹捧。但是同时也是由于太新了,他的生态还不是很完整。
小沃以前用过st公司的stm32系列,兆易创新的gd32系列,深圳国芯的stc8系列,南京沁恒的ch32系列以及上海乐鑫的esp32系列单片机。
他们由于出来时间较长,都有完整的生态,比如stc8的stc-isp、ch32的WCHISPStudio以及esp32的esptool.py都是可以直接用com口对单片机进行
烧录,而gd32与stm32又都支持jlink录以及isp烧录且协议一样,不止可以通过类似我们公司出品的setdevicetool进行烧录,也可以使用jlink的jflash
进行离线烧录。
但是小沃使用py32测试时,py32的代理商居然说py32仅仅支持通过keil烧录,这样很不适合量产。后来由于小沃自己查资料,并且发现有小伙伴通过
配置jlink成功实现了脱离编译器烧录,再配合py32支持swd接口,所以小沃认定可以通过swd对py32进行独立烧录,通过一定的研究,终于成功了。
现在就和大家分享下:
一、所需工具
(1)daplink
选择daplink的原因也是很简单,因为daplink是完全开源的,因此淘宝上很多便宜的daplink设备,一个daplink不到10元。
相对于jlink,st-link等破解版硬件,daplink不存在山寨的说法。
(2)烧录软件pyocd
py官方推荐的是openocd,但是我看了openocd,它并不像pyocd能一句话命令就在线下载单片机的烧录配置,使用相对于pyocd复杂。
(3)py32单片机
这个不多说,被烧录的对象嘛。
二、连接设备
我们是利用contex系列单片机的swd接口烧录,因此需要将daplinux的swclk与swdio接到正确的位置,同时给单片机供电。
三、安装pyocd
在有python的运行环境中,直接运行pip install pyocd,对于windows系统,需要根据提示运行pip install libusb,然后把下载下来的libusb.dll(在python的Lib目录下的特定文件夹下)复制到python.exe的同级安装目录下。
四、pyocd命令
当daplink连接电脑后,可以打开终端,通过pyocd下命令,常用命令如下:
查询已连接且支持的烧录器
pyocd list --probe
查询已经安装的芯片配置文件
pyocd list --target
查询需要烧录的芯片是否被支持
pyocd pack find gd32f303rc
安装需要烧录的芯片配置文件
pyocd pack install gd32f303rc
查询单独安装的pack
pyocd pack --show
烧录芯片
pyocd flash --target PY32F002Bx5 py32test.bin
完整擦除芯片
pyocd erase --target PY32F002Bx5 --chip
部分擦除
(1)擦除一个sector
pyocd erase --target PY32F002Bx5 --sector 0x8000000
(2)擦除连续几个sector
pyocd erase --target PY32F002Bx5 --sector 0x8001000-0x8004000(从地址0x8001000到地址0x8004000,不包含地址0x8004000)
或
pyocd erase --target PY32F002Bx5 --sector 0x8002000+0x2000(从地址0x8002000开始大小为0x2000)
指定位置写入
pyocd flash --target PY32F002Bx5 --base-address 0x8001000 py32test.bin
烧录完成后就能正常使用了。
文章作者:沃航科技