之前使用HID传输协议,下载速度比较慢,,所以升级添加了 WINUSB 协议支持,,
通过在Keil Option窗口C/C++页是否定义 DAP_FW_V1 宏,选择使用 HID 协议还是 WINUSB 协议。。
官方的 DAPLink 功能更多,,但代码也很多,,不易阅读,,我这个移植代码比较简洁,,容易读懂和移植,,感兴趣的可以看下
离线
DAPCmdr、MCUProg、RTTView三件套添加CMSIS-DAP v2支持,,感兴趣的可以mark下 ![]()
https://github.com/XIVN1987/DAPCmdr
https://github.com/XIVN1987/MCUProg
https://github.com/XIVN1987/RTTView
离线
llinjupt wrote:
楼主功德无量,DAPLink 上面可以做的文章很多,由于它支持自由扩充命令,可以做出来很多好玩的东西,例如 ATMEL EDBG 就是基于DAPLink 的。
不敢、不敢,,功德都是ARM的,,我只是做了些许微不足道的工作而已
![]()
离线
曾半仙 wrote:
看了下增加了v203的支持, 楼主有兴趣移植到ch32v307吗, usbhs的. 疫情放开前搞了一块, 放开后准备玩玩它. 在CDC基础上改了改, 它的中断服务函数没有很好的处理EP0分包, 加入到wcid属性后, 抓包就出错了. 回头看看楼主怎么改的
在搞了,,
现在 DAP_PACKET_SIZE 配置成 64 的时候 SWD 可以工作,,超过 64 的时候就出错,,
我对 High Speed USB 还不熟悉,,这个问题感觉比较难搞,,打算网上搜搜看能不能找到 DAPLink HSUSB 移植的讲解说。。
离线
曾半仙 wrote:
看了下v305的移植 似乎没有wcid自动安装 v2只是改为了bulk传输
USBHS HID 已经足够快了,,没必要改 v2 WinUSB Bulk 传输,,传输再快 V305 处理不过来也没意义。。
而且 HID 兼容性好,,任何平台上都能用。。
离线
Xure wrote:
@XIVN1987,大佬太牛了;ch32v305的工程编译后在307的demo板上跑了一下,好像虚拟串口用不起来,不知是什么原因,请看下
你好,,SWD和CDC功能都是测过的,,可以工作的
刚刚我又重新编译源码下载试了下,,没有问题,,你从github拉取最新代码再试试。。
补充:我昨天修复了一个调试阶段可能CDC不工作的情况,,你拉取最新代码试下,,再不行就检查下硬件电路板吧。。
离线
Xure wrote:
@XIVN1987,大佬太牛了;ch32v305的工程编译后在307的demo板上跑了一下,好像虚拟串口用不起来,不知是什么原因,请看下
我用的测试板是自己画的,,你可以对比下看看:https://oshwhub.com/xivn1987/ch32v307
离线
@Xure
已更新,测试收发大量数据没有问题,,你试下。。
离线
Xure wrote:
@XIVN1987,又测试了下,比前面有改善,下载固件能进行一些了,但是一会就停了,和波特率高低似乎没有关系;再用串口工具收发文件测试,比较下来有丢失和延迟,低波特率的时候,似乎情况好一点;麻烦再看看
你好,确实有个bug,,已经修复,,你再试下。。
离线
Xure wrote:
@XIVN1987,你好,刚才用串口工具将收发自环试了下,发送简单的数据或文件都收不到;换用上一个版本能接收,确认不是接线的问题;可能哪边有笔误,请查看下
我最新的提交把芯片换成TSSOP封装了,,所以引脚都还了
你拉取最新代码后执行“git checkout 175ec1a531fbca547ae3f85f036a38dee07f18ed"检索出改引脚之前的代码再试
离线
@Xure
抱歉,CH32V 的 DMA 我不太熟悉,,可能还需要几天时间调试。。
你可以找到之前没开启 DMA 的代码,,将其中的:
uint8_t in_buff[64];
uint8_t out_buff[64];
改成:
uint8_t in_buff[512];
uint8_t out_buff[512];
试下。。
离线
@吴助建
搜了下,,会不会是 linux 中对这个 vid 有特殊识别??修改 vid 或 pid 试试

离线
@吴助建
刚刚试了一下 WinUSB 版本,,无需设置,,直接可以识别,,我用的 Ubuntu 24,不知道是不是跟系统版本有关。。
wmx@VM-Ubuntu:~$ sudo lsusb
Bus 003 Device 005: ID 1a86:7021 QinHeng Electronics XV-Link CMSIS-DAP
... ...
wmx@VM-Ubuntu:~$ sudo ~/vexe/bin/pyocd list
# Probe/Board Unique ID Target
----------------------------------------------------------
0 XIVN1987 XV-Link CMSIS-DAP C6D28F062F96 n/a 离线
@吴助建
不客气。。
不过改成 0416 也未必保险啊,,因为 0416 是华邦的 usb vid,,他们可能拿 5051/7887 做其他种类的 usb 产品,,这样的话可能会产生冲突,,导致设备无法识别。。
对于 daplink,,也许用下面这些 daplink 常用 vid、pid 更保险一些,,这些 id 被厂家拿来用到其他 usb 产品上的概率更小一些。。

离线