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

开源!速度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…

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

简记_硬件系统设计之需求分析要点

目录 一、 功能需求 二、 整体性能需求 三、 用户接口需求 四、 功耗需求 五、 成本需求 六、 IP和NEMA防护等级需求 七、 认证需求 功能需求 供电方式及防护 供电方式:市电供电、外置直流稳压电源供电、电池供电、PoE(Power Over Ether…

python连接deepseek api实例

步骤一:安装必要的库,如openai; 步骤二:deepseek平台申请api,并充值(可先充10元),费用大概一个查询2分钱的样子; 步骤三:设置环境变量:DEEPSEEK…

抽象类与普通类

抽象类和普通类的区别: 抽象类其实就是普通类和接口(完全抽象)之间的设计工具。通过抽象类,可以更灵活地构建可扩展、可维护的类层次结构。抽象类的核心价值在于平衡代码复用和规范约束。 示例:

免费生成可下载ppt

1.天工AI 免费的,模版很少,效果不是很好; 2.Kimi 免费的,模版不多,效果还可以;

【解决哈希冲突】

哈希冲突 如果两个不同的 key 通过哈希函数得到了相同的索引,这种情况就叫做「哈希冲突」。 哈希冲突不可能避免,只能在算法层面妥善处理出现哈希冲突的情况。 哈希冲突是一定会出现的,因为这个 hash 函数相当于是把一个无穷大的空间映射到…

基于LabVIEW的脚本化子VI动态生成

该示例展示了一种利用LabVIEW VI脚本(VI Scripting)技术,通过程序化方式动态生成并替换子VI的解决方案。核心逻辑为:基于预定义的模板VI,根据用户选择的数学操作(加法或乘法),自动生…

谷歌AI最新发布的可微分逻辑元胞自动机(DiffLogic CA)

每周跟踪AI热点新闻动向和震撼发展 想要探索生成式人工智能的前沿进展吗?订阅我们的简报,深入解析最新的技术突破、实际应用案例和未来的趋势。与全球数同行一同,从行业内部的深度分析和实用指南中受益。不要错过这个机会,成为AI领…

如何使用Postman,通过Mock的方式测试我们的API

这篇文章将教会大家如何利用 postman,通过 Mock 的方式测试我们的 API。 什么是 Mock Mock 是一项特殊的测试技巧,可以在没有依赖项的情况下进行单元测试。通常情况下,Mock 与其他方法的主要区别就是,用于取代代码依赖项的模拟对…

pytest基础知识

pytest知识了解 pytest的基础知识了解:Python测试框架之pytest详解_lovedingd的博客-CSDN博客_pytest框架 (包含设置断点,pdb,获取最慢的10个用例的执行耗时) pytest-pytest.main()运行测试用例,pytest参数: pytest-…

LM Studio 替换源的方式解决huggingface.co无法访问的问题

安装软件完成之后,不要打开,打开了就直接关闭 在安装目录下,比如我安装在E:\Program Files\LM Studio 下面三个文件中的huggingface.co全部替换为hf-mirror.com然后再打开即可。 E:\Program Files\LM Studio\resources\app\.webpack\rende…

【含文档+PPT+源码】基于微信小程序的乡村振兴民宿管理系统

项目介绍 本课程演示的是一款基于微信小程序的乡村振兴民宿管理系统,主要针对计算机相关专业的正在做毕设的学生与需要项目实战练习的 Java 学习者。 1.包含:项目源码、项目文档、数据库脚本、软件工具等所有资料 2.带你从零开始部署运行本套系统 3.该…

五、OpenGL中Shader与C++数据传输

文章目录 一、概述二、Shader 代码文件的基本格式三、Shader的向量语法介绍四、Shader之间的数据传输五、Shader与C的数据传输uniform六、完整示例 一、概述 在 OpenGL 中,Shader(着色器)使用 GLSL(OpenGL Shading Language&…

docker不停机部署

背景 最近做大疆项目时,后台更新部署时,机场和无人机就会掉线。设备自动重连注册时间比较长,应用长时间不可用。所以需要灰色发布服务。docker-compose的swarm模式可解决此问题。 服务构建脚本Dockerfile # 使用官方Java基础镜像&#xff…

工作记录 2016-12-22

工作记录 2016-12-22 更新的问题 1、修改了Job Summary的Bill Amount的Bug。 2、修改了Account #的宽度。 3、修改了Clearinghouse Status的默认查询的条件。 4、修改了Upload Files的Add File的bug。 5、Pending Pool、Missing Infos加了Write Off,修改了Histor…

QLoggingCategory类使用

QLoggingCategory类使用 QLoggingCategory的概述 QLoggingCategory是Qt的日志策略类;可以通过声明不同的日志策略对象来输出不同的日志信息。打印信息类型如下:宏 Q_DECLARE_LOGGING_CATEGORY(name) 定义一个返回QLoggingCategory对象函数,…

Linux红帽:RHCSA认证知识讲解(五)从红帽和 DNF 软件仓库下载、安装、更新和管理软件包

Linux红帽:RHCSA认证知识讲解(五)从红帽和 DNF 软件仓库下载、安装、更新和管理软件包 前言一、DNF 软件包管理基础1.1 核心操作命令安装软件包卸载软件包重新安装软件包 1.2 软件仓库原理 二、配置自定义软件仓库步骤 1:清理默认…

Go本地缓存设计与实现

本地缓存是一个项目中很常见的组件。在很多人的眼中就是一个简单的key-value的map存储即可实现,但实际上,设计一个本地缓存需要考虑的问题远比你想象的多,比如说,本地缓存是将数据存储在内存,若数据量激增突破了内存限…

通义万相2.1开源版本地化部署攻略,生成视频再填利器

2025 年 2 月 25 日晚上 11:00 通义万相 2.1 开源发布,前两周太忙没空搞它,这个周末,也来本地化部署一个,体验生成效果如何,总的来说,它在国内文生视频、图生视频的行列处于领先位置&#xff0c…

Jetson Xavier NX安装CUDA加速的OpenCV

我们使用SDKManager刷机完成后,使用jtop查看,发现OpenCV 是不带CUDA加速的,因此,我们需要安装CUDA加速的OpenCV,这样后续在使用的时候速度会快很多。 首先我们先卸载默认OpenCV sudo apt purge libopencv* -y sudo …

基于PaddleNLP使用DeepSeek-R1搭建智能体

基于PaddleNLP使用DeepSeek-R1搭建智能体 最近在学习DeepSeek,找到了PaddleNLP星河社区大模型,跟着敲写了一遍。内容来源:DeepSeek实战训练营:从云端模型部署到应用开发 - 飞桨AI Studio星河社区-人工智能学习与实训社区 本项目基…