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

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

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

相关文章

Flink测试环境Standalone模式部署实践

1.JDK环境 参考官方文档: https://nightlies.apache.org/flink/flink-docs-release-1.20/release-notes/flink-1.18/ 2.下载Flink:https://flink.apache.org/downloads/ 本次验证用的是:https://www.apache.org/dyn/closer.lua/flink/flink…

在16卡服务器上使用最新版的CUDA和驱动训练`llama - 2 - 7b`和`llama - 2 - 70b`模型,并生成训练指标数据

要在16卡服务器上使用最新版的CUDA和驱动训练llama - 2 - 7b和llama - 2 - 70b模型,并生成训练指标数据,你可以按照以下步骤进行: 1. 环境准备 确保你的服务器已经安装了最新版的CUDA和驱动,并且安装了必要的Python库&#xff0…

macOS 终端优化

macOS 安装、优化、还原、升级 Oh My Zsh 完全指南 🚀 Oh My Zsh 是 macOS 终端增强的利器,它能提供强大的自动补全、主题定制和插件支持,让你的终端更高效、更炫酷。本文将全面介绍 如何安装、优化、还原、重新安装和升级 Oh My Zsh&#x…

计算机网络--访问一个网页的全过程

文章目录 访问一个网页的全过程应用层在浏览器输入URL网址http://www.aspxfans.com:8080/news/index.aspboardID5&ID24618&page1#r_70732423通过DNS获取IP地址生成HTTP请求报文应用层最后 传输层传输层处理应用层报文建立TCP连接传输层最后 网络层网络层对TCP报文进行处…

CAAC无人机考证备考清单

一、培训机构内部的考试大纲/备考指南 《机长笔试大纲》 《机长口试大纲》 《教员笔试大纲》 《教员口试大纲》(不同机构的文件、命名可能不同) 二、培训机构内部题库 题库内容包含(仿照多旋翼题库制作): 分类 子分…

【BUG】类文件具有错误的版本 61.0, 应为 52.0,请删除该文件或确保该文件位于正确的类路径子目录中。

报错: [ERROR] 类文件具有错误的版本 61.0, 应为 52.0 [ERROR] 请删除该文件或确保该文件位于正确的类路径子目录中。 报错截图: 原因:Java 版本和 Spring 不兼容,显示 Spring 版本过高 解决方法 1. 使用更高版本的 J…

卷积神经网络(笔记01)

视觉处理三大任务:分类、目标检测、图像分割 CNN网络主要有三部分构成:卷积层(Convolutional Layer)、池化层(Pooling Layer)和激活函数 一、解释卷积层中的偏置项是什么,并讨论在神经网络中引…

Django-ORM-prefetch_related

Django-ORM-prefetch_related 模型定义N1 查询问题示例 使用 prefetch_related 优化查询处理更复杂的查询示例:预取特定条件的书籍示例:预取多个关联字段 性能比较注意事项总结 通过 Author 和 Books 两个模型来理解 Django 的 prefetch_related 方法。 …

Spring Boot3整合Knife4j(4.5.0)

整体概述 Spring Boot 是用于简化 Spring 应用开发的框架,通过自动配置和约定大于配置原则,能让开发者快速搭建和运行 Spring 应用。Knife4j 是基于 Swagger 增强的 API 文档生成工具,可方便展示和调试 API 接口,生成美观易用的 …

Java 大视界 -- 区块链赋能 Java 大数据:数据可信与价值流转(84)

💖亲爱的朋友们,热烈欢迎来到 青云交的博客!能与诸位在此相逢,我倍感荣幸。在这飞速更迭的时代,我们都渴望一方心灵净土,而 我的博客 正是这样温暖的所在。这里为你呈上趣味与实用兼具的知识,也…

K8S学习之基础二十四:k8s的持久化存储之pv和pvc

K8S的存储之pv和pvc 在 Kubernetes (k8s) 中,持久化存储是通过 PersistentVolume (PV) 和 PersistentVolumeClaim (PVC) 来实现的。PVC 是用户对存储资源的请求,而 PV 是集群中的实际存储资源。PVC 和 PV 的关系类似于 Pod 和 Node 的关系。 Persisten…

【Hive】Hive安装

Hive 第一章 Hive的基础知识 第二章 Hive安装 第三章 DDL(Data Definition Language)数据定义 第四章 DML(Data Manipulation Language)数据操作 第五章 Hive查询 第六章 Hive的基础知识 第七章 Hive函数 第八章 分区表和分桶表 …

关于C/C++语言的初学者在哪刷题,怎么刷题

引言: 这篇博客主要是针对初学者关于怎么在网上刷题,以及在哪里刷题。 1.介绍平台(在哪刷题): 1.牛客牛客网https://www.nowcoder.com/ :有许多面试题,也有许多供学习者练习的题 2.洛谷洛谷 …

k8s面试题总结(十四)

什么是Helm? Helm是一个k8s的包管理工具,它简化了应用程序在k8s集群中的部署,管理和维护。类似于rpm包和yum之间的关系。 K8s传统方式:类似于rpm安装包的方式,逐步进行安装,遇到依赖还得解决依赖问题 he…

物理服务器的作用都有哪些?

物理服务器是一种高性能的专用服务器,一般会被运用在大型组织和云计算环境当中,可以为企业和用户提供数据存储和计算资源,帮助企业提高整体的工作效率和快速实现业务目标。 物理服务器有着较高的安全性,企业可以将重要的数据信息备…

01 音视频知识学习(视频)

图像基础概念 ◼像素:像素是一个图片的基本单位,pix是英语单词picture的简写,加上英 语单词“元素element”,就得到了“pixel”,简称px,所以“像素”有“图像元素” 之意。 ◼ 分辨率:是指图像…

有关MyBatis的动态SQL

有关MyBatis动态SQL MyBatis动态SQL是一种根据不同条件灵活拼接SQL语句的技术,基于OGNL表达式实现。动态 SQL 大大减少了编写代码的工作量,更体现了 MyBatis 的灵活性、高度可配置性和可维护性。 1.什么是动态SQL? 动态sql可以在一些需要灵活拼接sql…

react使用拖拽,缩放组件,采用react-rnd解决 -完整版

屏幕录制2025-03-10 10.16.06 以下代码仅提供左侧可视化区域 右侧数据根据你们的存储数据来 大家直接看Rnd标签设置的属性即可!!!!! /*** 用户拖拽水印的最终位置信息*/ export interface ProductWatermarkValue {wat…

Spring Cloud之远程调用OpenFeign参数传递

目录 OpenFeign参数传递 传递单个参数 传递多个参数 传递对象 传递JSON OpenFeign参数传递 传递单个参数 服务提供方product-service RequestMapping("/product") RestController public class ProductController {Autowiredprivate ProductService productSe…

每日一练之移除链表元素

题目: 画图解析: 方法:双指针 解答代码(注:解答代码带解析): //题目给的结构体 /*** Definition for singly-linked list.* struct ListNode {* int val;* struct ListNode *next;* }…