开源!速度100Kb/s的有线和无线双模ESP32S3芯片的DAP-Link调试器

news2025/3/13 7:25:24

开源!速度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等,但这些调试器无一例外都各有各的缺陷,并且都是有线的,在一些场景下使用有线调试器不方便:例如:

  1. 有关电机的项目,有线连接怕烧掉电脑USB口

  2. 受项目实际环境限制,有线连接不够长、或无法通过有线连接到电脑

针对以上使用需求,作者开始找无线的调试器,找到的结果要么是速度快的价格贵,如某点原子,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/SWCLKGPIO_NUM_4-
TMS/SWDIOGPIO_NUM_5-
TDIGPIO_NUM_6-
TDOGPIO_NUM_7-
nRESETGPIO_NUM_15-
nTRSTGPIO_NUM_16-
UART_TXGPIO_NUM_17-
UART_RXGPIO_NUM_18-
RGB_LEDGPIO_NUM_48-
主机按键GPIO_NUM_1按下为高电平
从机按键GPIO_NUM_2按下为高电平

下载速度测试

注:测量是手动掐秒表计时,下载速度受芯片型号、线损、WIFI干扰等多方面的因素影响,以下测试速度仅供参考。

有线模式、无线模式、ST-LinkV2擦除和校验的时间基本差不多的,所以下载速度的评定以编程时间来计算。

  • 测试芯片:STM32F407VGT6

  • 测试大小:1000K

  • 测试软件:Keil-MDK

  • 测试方式:扇区擦除+编程+校验

调试器类型编程耗时总耗时理论下载速度
STLink V223.XX37.XX≈43Kb/s
S3无线模式27.XX40.XX≈41Kb/s
S3有线模式10.XX24.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…

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2313568.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何将ipynb文件转换为pdf文件

事情起因: 基本我所有的code以及代码注释,以及出图说明都统一放在jupyter notebook中, 代码注释,或者文档说明,实际上就是markdown所做的那一切,都是在markdown中写的; 代码的话,…

具备多种功能的PDF文件处理工具

软件介绍 在日常办公和学习场景中,PDF文件使用极为频繁,而一款功能强大的PDF编辑软件能大幅提升处理效率。 今天要介绍的Adobe Acrobat Pro DC 2024.005.20414,就具备像编辑Word文档一样便捷编辑PDF的能力。 PDF文档在学习和工作中广泛应用…

如何做好滚珠导轨的防尘工作?

滚珠导轨滑块在使用过程中,会吸附大量的灰尘和污垢,导致摩擦力增大,使用寿命缩短。那么,我们应该如何做好滚珠导轨的防尘工作呢? 1、使用防护罩:对于外露的滚珠导轨,可安装如螺旋弹簧钢带套管、…

nettrace rtt分析器

开源工具学习记录之流程梳理 近期对腾讯的的开源项目: nettrace(网络故障分析工具) ,进行源码学习。 开源仓库:Nettrace开源仓库 开源工具实现注释:nettrace学习记录 Nettrace学习记录之流程梳理Nettrace eBPF程序自动挂载方式探究 nettrace rtt分析器…

裂变营销策略在“开源链动2+1模式AI智能名片S2B2C商城小程序”中的应用探索

摘要:在当今数字化时代,企业营销手段日新月异,裂变营销作为一种高效的用户增长策略,正逐渐成为众多企业竞相探索的焦点。本文旨在探讨“开源链动21模式AI智能名片S2B2C商城小程序”中裂变营销的应用,通过“分名、分利、…

WangEditor快速实现版

WangEditor快速实现版 效果 案例代码 后端 package com.diy.springboot.controller;import cn.hutool.core.util.IdUtil; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiImplicitParam; import org.sp…

Java常见面试技术点整理讲解——后端框架(整理中,未完成)

前言: 对于后端常用框架的技术整理,其实框架在平时就是会用就行,但面试时多半需要描述实现原理,这个要靠自己理解,不推荐死记硬背。 这篇和另外几篇文章区分开,主要用于规整Java后端各种框架,…

Dify 本地部署教程

目录 一、下载安装包 二、修改配置 三、启动容器 四、访问 Dify 五、总结 本篇文章主要记录 Dify 本地部署过程,有问题欢迎交流~ 一、下载安装包 从 Github 仓库下载最新稳定版软件包,点击下载~,当然也可以克隆仓库或者从仓库里直接下载zip源码包。 目前最新版本是V…

Python----数据可视化(Seaborn二:绘图一)

常见方法 barplot方法 单独绘制条形图 catplot方法 可以条形图、散点图、盒图、小提亲图、等 countplot方法 统计数量 一、柱状图 seaborn.barplot(dataNone, xNone, yNone, hueNone, colorNone, paletteNone) 函数描述data用于绘图的数据集。x用于绘制长格式数据的输入。…

加速科技Flex10K-L测试机:以硬核创新重塑显示驱动芯片测试新标杆!

在2024年召开的世界显示产业创新发展大会上,加速科技自主研发的高密度显示驱动芯片测试设备Flex10K-L凭借其突破性技术创新,成功入选"十大创新技术(产品)"。作为国内显示驱动芯片测试领域的标杆性设备,Flex1…

linux-文本处理命令(echo,cut,sort,uniq,wc,tr,grep)

echo 打印(标准输入输出命令) [rootlocalhost ~]# echo $HOSTNAME-----$引用变量 localhost [rootlocalhost ~]# echo "$HOSTNAME"----“”弱引用符(可以解释特殊含义的字符) localhost [rootlocalhost ~]# echo $HOSTN…

spring-boot-starter和spring-boot-starter-web的关联

maven的作用是方便jar包的管理,所以每一个依赖都是对应着相应的一个或者一些jar包,从网上看到很多对spring-boot-starter的描述就是“这是Spring Boot的核心启动器,包含了自动配置、日志和YAML。”没看太明白,所参与的项目上也一直…

群晖DS223 Docker搭建为知笔记

群晖DS223 Docker搭建为知笔记,打造你的专属知识宝库 一、引言 在数字化信息爆炸的时代,笔记软件成为了我们管理知识、记录灵感的得力助手。为知笔记,作为一款专注于工作笔记和团队协作的云笔记产品,以其丰富的功能和便捷的使用体…

NLP文本分析之依存句法分析(理论及技术实践)

引言 在自然语言处理(NLP)领域中,理解句子的语法结构是实现语义理解的基础。依存句法分析(Dependency Parsing) 作为句法分析的核心任务之一,通过揭示句子中词语之间的依存关系,为机器翻译、信…

Nginx(基础安装+配置文件)

目录 一.Nginx基础 1.基础知识点 2.异步非阻塞机制 二.Nginx安装 2.1安装nginx3种方式 1.包管理工具安装(yum/apt) 2.本地包安装(rpm/dpkg) 3.源码编译安装 3.1 源码编译安装nginx流程(ubuntu) 1.…

uni-app+vue3学习随笔

目录相关 static文件 编译器会把static目录中的内容整体复制到最终编译包内, 非 static 目录下的文件(vue组件、js、css 等)只有被引用时,才会被打包编译。 css、less/scss 等资源不要放在 static 目录下,建议这些…

prompt大师高效提示词解析

Prompt大师李继刚高效提示词示例解析 一、「汉语新解」提示词 核心结构 采用Lisp语言框架嵌套中文语义,通过(defun 新汉语老师 ()...)定义角色风格(融合奥斯卡王尔德、鲁迅的批判性语言),用(隐喻 (一针见血...))构建解释逻辑链。…

QT系列教程(18) MVC结构之QItemSelectionModel模型介绍

视频教程 https://www.bilibili.com/video/BV1FP4y1z75U/?vd_source8be9e83424c2ed2c9b2a3ed1d01385e9 QItemSelectionModel Qt的MVC结构支持多个View共享同一个model,包括该model的选中状态等。我们可以通过设置QItemSelectionModel,来更改View的选…

【Java面试题汇总】Java面试100道最新合集!

1.说说你对面向对象的理解 得分点 封装,继承,多态、概念、实现方式和优缺点 面向对象的三大基本特征是:封装、继承、多态。 封装:将对象的状态和行为包装在一个类中并对外界隐藏实现的细节,可以通过访问修饰符控制成员的访问权限&#xff0c…

Vue 实现智能检测文字是否溢出,溢出显示省略号,鼠标悬浮显示全部【附封装组件完整代码+详细注释+粘贴即食】

一、场景需求 在项目中,经常会遇到文本内容超出容器的情况。为了提高用户体验,我希望在文字溢出时显示悬浮提示,未溢出时则不显示。 二、效果演示 三、实现原理 DOM宽度对比法:通过比较元素的scrollWidth(实际内容宽…