之前使用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
离线
楼主功德无量,DAPLink 上面可以做的文章很多,由于它支持自由扩充命令,可以做出来很多好玩的东西,例如 ATMEL EDBG 就是基于DAPLink 的。
离线
楼主功德无量,DAPLink 上面可以做的文章很多,由于它支持自由扩充命令,可以做出来很多好玩的东西,例如 ATMEL EDBG 就是基于DAPLink 的。
不敢、不敢,,功德都是ARM的,,我只是做了些许微不足道的工作而已
离线
@XIVN1987
“微不足道”,让我想起一个有故事的视频,斜眼笑.gif
离线
看了下增加了v203的支持, 楼主有兴趣移植到ch32v307吗, usbhs的. 疫情放开前搞了一块, 放开后准备玩玩它. 在CDC基础上改了改, 它的中断服务函数没有很好的处理EP0分包, 加入到wcid属性后, 抓包就出错了. 回头看看楼主怎么改的
离线
大佬牛皮,203可以玩了吗,想整个小板子试试看
离线
看了下增加了v203的支持, 楼主有兴趣移植到ch32v307吗, usbhs的. 疫情放开前搞了一块, 放开后准备玩玩它. 在CDC基础上改了改, 它的中断服务函数没有很好的处理EP0分包, 加入到wcid属性后, 抓包就出错了. 回头看看楼主怎么改的
在搞了,,
现在 DAP_PACKET_SIZE 配置成 64 的时候 SWD 可以工作,,超过 64 的时候就出错,,
我对 High Speed USB 还不熟悉,,这个问题感觉比较难搞,,打算网上搜搜看能不能找到 DAPLink HSUSB 移植的讲解说。。
离线
我这有total phase的usb协议分析仪. 如果是传输有问题, 能帮你测.
离线
这个得支持一下。
我也想搞一个速度快一点的。
离线
看了下v305的移植 似乎没有wcid自动安装 v2只是改为了bulk传输
离线
看了下v305的移植 似乎没有wcid自动安装 v2只是改为了bulk传输
USBHS HID 已经足够快了,,没必要改 v2 WinUSB Bulk 传输,,传输再快 V305 处理不过来也没意义。。
而且 HID 兼容性好,,任何平台上都能用。。
离线
@XIVN1987,大佬太牛了;ch32v305的工程编译后在307的demo板上跑了一下,好像虚拟串口用不起来,不知是什么原因,请看下
离线
@XIVN1987,大佬太牛了;ch32v305的工程编译后在307的demo板上跑了一下,好像虚拟串口用不起来,不知是什么原因,请看下
你好,,SWD和CDC功能都是测过的,,可以工作的
刚刚我又重新编译源码下载试了下,,没有问题,,你从github拉取最新代码再试试。。
补充:我昨天修复了一个调试阶段可能CDC不工作的情况,,你拉取最新代码试下,,再不行就检查下硬件电路板吧。。
离线
@XIVN1987,大佬太牛了;ch32v305的工程编译后在307的demo板上跑了一下,好像虚拟串口用不起来,不知是什么原因,请看下
我用的测试板是自己画的,,你可以对比下看看:https://oshwhub.com/xivn1987/ch32v307
离线
@XIVN1987,前面说的虚拟串口用不起来,是直接用它来做目标板的固件下载,低速时也没有反应。
后来用串口工具做个简单的数据收发是好的。没找到有文件收发功能的串口工具,就没再进一步测试。
看来和硬件电路没有关系,烦请大佬再看看。
离线
@Xure
已更新,测试收发大量数据没有问题,,你试下。。
离线
@XIVN1987,又测试了下,比前面有改善,下载固件能进行一些了,但是一会就停了,和波特率高低似乎没有关系;再用串口工具收发文件测试,比较下来有丢失和延迟,低波特率的时候,似乎情况好一点;麻烦再看看
离线
@XIVN1987,又测试了下,比前面有改善,下载固件能进行一些了,但是一会就停了,和波特率高低似乎没有关系;再用串口工具收发文件测试,比较下来有丢失和延迟,低波特率的时候,似乎情况好一点;麻烦再看看
你好,确实有个bug,,已经修复,,你再试下。。
离线
@XIVN1987,你好,刚才用串口工具将收发自环试了下,发送简单的数据或文件都收不到;换用上一个版本能接收,确认不是接线的问题;可能哪边有笔误,请查看下
离线
@XIVN1987,你好,刚才用串口工具将收发自环试了下,发送简单的数据或文件都收不到;换用上一个版本能接收,确认不是接线的问题;可能哪边有笔误,请查看下
我最新的提交把芯片换成TSSOP封装了,,所以引脚都还了
你拉取最新代码后执行“git checkout 175ec1a531fbca547ae3f85f036a38dee07f18ed"检索出改引脚之前的代码再试
离线
你好,我用现在的串口PB10/11自环试了下,收发文件还是不对;工具里面显示的收发计数只有7,和文件大小也不符(发送文件61K,接收文件40K),请见附件——不知怎么回事,文件上传不了
离线
@Xure
抱歉,CH32V 的 DMA 我不太熟悉,,可能还需要几天时间调试。。
你可以找到之前没开启 DMA 的代码,,将其中的:
uint8_t in_buff[64];
uint8_t out_buff[64];
改成:
uint8_t in_buff[512];
uint8_t out_buff[512];
试下。。
离线
@XIVN1987,你好,又仔细的试了下,原来是串口工具收发文件有问题;用最新的版本直接给目标板下载4MB的固件,在921600波特率下,连试了几次都OK。
大佬太牛了!
离线
@XIVN1987,你好,有个LED是给DAP用的;如果也要用这个LED作为串口有数据收发指示的话,请看代码怎么改。谢谢!
离线
大佬,我反馈一下。
芯片型号:CH32V203
操作系统:win10
虚拟机:VMware 17 pro
虚拟机操作系统:ubuntu-18.04
用你的老版本:
VID:0x0416, PID:0x5051,也就是V1版本,MDK 和 ubuntu-18.04, pyocd 都能识别。
VID:0x0416, PID:0x7887,也就是V2版本,win10不能识别。
用你的最新版本:2025年9月20日下载的。
VID:0x1A86, PID:0x5021,也就是V1版本,MDK 能用,但 ubuntu-18.04, pyocd 不能识别。
VID:0x1A86, PID:0x7021,也就是V2版本,MDK 能用,但 ubuntu-18.04, pyocd 不能识别。
pyocd 版本:0.34.3
我手动在 /etc/udev/rules.d/50-cmsis-dap.rules 中,添加了相应VID:PID。不添加 VID:PID,pyocd 都是不识别的。
离线
@吴助建
搜了下,,会不会是 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
离线
@XIVN1987
也许跟 ubuntu 的版本有关。
呆会再做一个 ubuntu-22 试试。
离线
@吴助建
搜了下,,会不会是 linux 中对这个 vid 有特殊识别??修改 vid 或 pid 试试
您说的太对了。
我把vid换成0416, pid 换成5051/7887,就OK了。
太谢谢了!!!
离线
@吴助建
不客气。。
不过改成 0416 也未必保险啊,,因为 0416 是华邦的 usb vid,,他们可能拿 5051/7887 做其他种类的 usb 产品,,这样的话可能会产生冲突,,导致设备无法识别。。
对于 daplink,,也许用下面这些 daplink 常用 vid、pid 更保险一些,,这些 id 被厂家拿来用到其他 usb 产品上的概率更小一些。。
离线