开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器
目录
- 开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器
- 本项目未经授权,禁止商用!
- 本项目未经授权,禁止商用!
- 本项目未经授权,禁止商用!
- 个人玩家随意折腾~
- 开发背景
- 遇到需求
- 发现缺陷
- 缺陷1:无软件复位
- 缺陷2:低功耗模式下或SWD口被占用时无法烧录
- 解决问题
- 解决1:下载速度慢
- 解决2:低功耗模式下或SWD口被占用无法烧录
- 解决3:其他无线DAP无法同时使用CDC串口
- 使用介绍
- 引脚使用情况
- 下载速度测试
- 并行工作互不影响
- 工作模式设置
- 无线模式设置
- 有线模式设置
- 开源链接
- 目前进度
本项目未经授权,禁止商用!
本项目未经授权,禁止商用!
本项目未经授权,禁止商用!
个人玩家随意折腾~
开发背景
遇到需求
目前市面上调试器使用的较多的有ST-LinkV2、ST-linkV2.1、J-Link OB、DAP-Link等,但这些调试器无一例外都各有各的缺陷,并且都是有线的,在一些场景下使用有线调试器不方便:例如:
-
有关电机的项目,有线连接怕烧掉电脑USB口
-
受项目实际环境限制,有线连接不够长、或无法通过有线连接到电脑
针对以上使用需求,作者开始找无线的调试器,找到的结果要么是速度快的价格贵,如某点原子,300+的价格太让人劝退了。。。要么是价格便宜的速度贼慢,根本达不到正常的使用需求,又或者无法同时使用DAP和虚拟CDC串口,无奈,由于找不到又便宜、又好用、速度又快的,只好自己做了。。。
发现缺陷
开源DAP-Link发展到今天,有一些普遍缺陷虽然已经被大家解决了,但是还是有一些小问题没有被解决。
缺陷1:无软件复位
作者日常开发使用做多最频繁的调试器就是DAP-Link,在前几年的时候,市面上卖的DAP-Link都没有软件复位的功能,也就是必须是5线制(多了一个RESET),发展到今天,大家搞得DAP-Link基本才都有了像ST-Link一样的软件复位,不需要接硬件RESET或手动断电了。
这里我得捧一下我自己_,之前在CSDN上发了一篇博文:十分钟快速自制CMSIS_DAP仿真器将ST-LINK-V2变身DAP仿真器_cmsis-dap-CSDN博客,虽然这边博文是USB使用的是HID方式,传输速度较慢,但在这篇博文里讲了怎么把软件复位加上去,帮助了不少人_
缺陷2:低功耗模式下或SWD口被占用时无法烧录
在低功耗产品开发,或者低成本产品开发时,由于MCU的IO引脚不够用需要把SWD口的IO也当成普通IO使用,在这种使用场景下,如果不把硬件RESET引脚引出来,那么下载一次程序后就无法在次下载了!
作者曾使用STM32L0系列的单片机开发过一款低功耗的产品,最初使用的是ST-LinkV2,在keil的下载设置里勾选了硬件复位,一直正常使用。后来换成了DAP-Link,却发现根本发现不了芯片,或者发现芯片后无法烧录!
各种检查后通过示波器抓RESET的波形,最终发现这个DAP-Link虽然存在硬件RESET引脚,但是只用来下载程序完后复位用了!巨坑!
随后作者又买了几个各式各样的DAP-Link,但都无一例外,当芯片处于低功耗模式下、或SWD口被占用的时候,就算接上了硬件RESET,DAP-Link在下载程序前并不会像ST-LinkV2那样自动复位!!!
解决问题
针对作者本人遇到这些使用问题,最终使用ESP32来实现,起初使用的S2,实现完毕后到了测速环节发现速度始终上不去,换成了S3后下载速度飞快!无线速度能达到41KB/s,几乎赶上ST-LinkV2的速度了!而有线模式更快,能达到100KB/S的速度!
解决1:下载速度慢
软件方案如下:
-
芯片型号:ESP32S3
-
无线通信:ESPNOW
-
USB协议库:cherryusb
-
USB通信方式:WINUSB
再结合S3双核的特性,有线模式下能到100Kb/s,无线模式41Kb/s,下载速度直接拉满。
对于大多数单片机来说已经足够用了,因为有好多低端的单片机并不支持高速下载。
由于目前SWD协议还是用IO模拟的,后期如果换成使用硬件SPI模拟SWD协议,速度还能更快!
解决2:低功耗模式下或SWD口被占用无法烧录
为了解决这一问题,作者通过抓包KEIL和DAP之间的通信过程,并仔细阅读CMSIS_DAP的源码后,最终发现芯片在保持复位时,其实也是可以连上读取IDCODE的,发现了这个现象,那么解决这个问题就好说了,在DAP-Link收到来自keil的连接包时,拉低复位引脚,并通过异步的方式保持50ms的低电平复位然后在拉高复位,这样就能够实现低功耗模式下的自动复位烧录。
解决3:其他无线DAP无法同时使用CDC串口
这个问题优化了好久的软件,最终实现了使用开发板5Mbps的波特率,一边无线下载程序,一边无线串口大数据量收发,同时工作不影响。
使用介绍
-
使用环境:
-
Keil-MDK>=5.29
-
IAR>=8.32
-
-
开发板型号:ESP32-S3-DevKitM-1
-
引脚布局:
-
实物:
引脚使用情况
引脚名称 | GPIO编号 | 备注 |
---|---|---|
TCK/SWCLK | GPIO_NUM_4 | - |
TMS/SWDIO | GPIO_NUM_5 | - |
TDI | GPIO_NUM_6 | - |
TDO | GPIO_NUM_7 | - |
nRESET | GPIO_NUM_15 | - |
nTRST | GPIO_NUM_16 | - |
UART_TX | GPIO_NUM_17 | - |
UART_RX | GPIO_NUM_18 | - |
RGB_LED | GPIO_NUM_48 | - |
主机按键 | GPIO_NUM_1 | 按下为高电平 |
从机按键 | GPIO_NUM_2 | 按下为高电平 |
下载速度测试
注:测量是手动掐秒表计时,下载速度受芯片型号、线损、WIFI干扰等多方面的因素影响,以下测试速度仅供参考。
有线模式、无线模式、ST-LinkV2擦除和校验的时间基本差不多的,所以下载速度的评定以编程时间来计算。
-
测试芯片:STM32F407VGT6
-
测试大小:1000K
-
测试软件:Keil-MDK
-
测试方式:扇区擦除+编程+校验
调试器类型 | 编程耗时 | 总耗时 | 理论下载速度 |
---|---|---|---|
STLink V2 | 23.XX | 37.XX | ≈43Kb/s |
S3无线模式 | 27.XX | 40.XX | ≈41Kb/s |
S3有线模式 | 10.XX | 24.XX | ≈100Kb/s |
并行工作互不影响
无线CDC串口和DAP同时工作,互不影响。
测试方法:发送端使用Keil启动程序烧录,接收端TX和RX短接使用高波特率CDC串口回环收发。
测试效果:
工作模式设置
注意:固件刷入后默认有线模式
-
绿灯:有线模式
-
蓝灯:主机模式
-
黄灯:从机模式
无线模式设置
主机:GPIO_NUM_1上电前接3.3V,亮红灯后断开
从机:GPIO_NUM_2上电前接3.3V,亮红灯后断开
执行以上操作后,主从机自动通过广播的形式进行配对,当主机亮蓝灯、从机亮黄灯时,则配对成功,配对信息掉电后不丢失。
有线模式设置
GPIO_NUM_1和GPIO_NUM_2上电前接3.3V,亮红灯后断开,等待亮绿灯后表示设置成功,掉电不丢失。
开源链接
https://gitee.com/jhembed/AK-LinkW_CMSIS-DAP
目前进度
目前进度:用开发板完整测试通过,正在自己打板验证。。。
ends…