XIVN1987 发表于 2023-1-15 16:46:05

分享基于 CH32V305 的 DAPLink,,High Speed USB with on-chip PHY


淘宝上的高速 USB DAPLink 主控都是 atmel SAM3U2C,,价格昂贵、体积偏大

所以移植了个 CH32V305 版本的,,芯片只需 13 块钱,,便宜很多。。代码在此:https://github.com/XIVN1987/DAPLink

只移植了 HID 协议的,,查看了下 DAPLink 官方的 SAM3U2C 移植,,HID 传输下包大小被限制到了 64 字节,,所以 USBHS 版本的 DAPLink 传输只比 USBFS 快了 8 倍,,没用完全发挥出 USBHS 的速度优势。。

不过一般也够用了,,而且传输太快了 DAPLink 主控也未必能处理的过来。。


DAPLink 对 HID 传输下的包大小似乎做了限制,,就算是高速 USB 也设置成 64:

lfgc 发表于 2023-1-15 17:10:34

老板讲一下,怎么移植的?

yuyu87 发表于 2023-1-15 17:13:40

赞,手头上有307,

SUPER_CRJ 发表于 2023-1-15 17:14:51

大神又出来了。

XIVN1987 发表于 2023-1-15 17:48:15

lfgc 发表于 2023-1-15 17:10
老板讲一下,怎么移植的?
(引用自2楼)


第一步、找个类似的官方例程,比如 CH32V305 可以用 SimulateCDC-HID 例程,,两者都是同时使用 HID、CDC 功能,功能相似
第二步、把描述符替换成以前跑通的 DAPLink 程序的描述符
第三步、把 HID 和 CDC 的端点响应函数和 DAPLink 的 HID、CDC 功能代码关联起来,,比如 HID OUT 端点接收到电脑数据后调用 HID_GetOutReport() 把从 USB 接收到的数据搬运到 USB_Request[] 数组里面去。。

主要就是这三步,,剩下的就是调整代码通过编译、然后调试测试。。调试的时候最好有 USB 协议分析仪可以抓取通信过程。。

lfgc 发表于 2023-1-17 14:54:18

XIVN1987 发表于 2023-1-15 17:48
第一步、找个类似的官方例程,比如 CH32V305 可以用 SimulateCDC-HID 例程,,两者都是同时使用 HID、CD ...
(引用自5楼)

谢谢大神全面认真地回复。

我是一个大白菜 发表于 2023-1-17 19:14:59

谢谢大神分享

duxingkei 发表于 2023-3-7 20:42:31

有空自己移植个ch32V307玩下

ycheng2004 发表于 2023-3-7 21:29:40

CH32V系列,IO口操作,没有位带区,

XIVN1987 发表于 2023-3-8 11:37:44

ycheng2004 发表于 2023-3-7 21:29
CH32V系列,IO口操作,没有位带区,
(引用自9楼)


ARM 在新的 Cortex-M 内核上已经完全取消了 bit-band,,这是不是说明 ARM 发现这功能很鸡肋,,没啥实际用途啊 {:lol:}

实际上 STM32 及其兼容芯片上,一般也是通过 BSRR、BRR 寄存器实现IO口的原子操作,,而不是使用位带

ycheng2004 发表于 2023-3-8 13:59:18

XIVN1987 发表于 2023-3-8 11:37
ARM 在新的 Cortex-M 内核上已经完全取消了 bit-band,,这是不是说明 ARM 发现这功能很鸡肋,,没啥实 ...
(引用自10楼)

也是,ARM不像8051,
ARM没有位操作指令, 单有位带区也没什么用,

xionggehao 发表于 2023-12-4 15:31:23

楼主大神,请教一下,MDK工程芯片为 STM32F103C8T6,实际使用的芯片为 GD32F103C8T6,下载时会提示错误“Not a genuine ST Device! Abort connection”,用JLINK或者ST-LINK不会有这个问题,请问有什么方法

snowy 发表于 2023-12-5 08:35:32

xionggehao 发表于 2023-12-4 15:31
楼主大神,请教一下,MDK工程芯片为 STM32F103C8T6,实际使用的芯片为 GD32F103C8T6,下载时会提示错误“No ...
(引用自12楼)

改成GD32F103C8T6

xionggehao 发表于 2023-12-5 09:34:39

snowy 发表于 2023-12-5 08:35
改成GD32F103C8T6
(引用自13楼)

程序都是很多年积累下来的,用的ST的标准库,重新用GD来写的话太麻烦
我的意思是,有没有什么办法,在DAPLink的里面加上欺骗代码,让MDK误认为是ST

snowy 发表于 2023-12-5 11:50:41

把芯片改成GD的就可以了,其他的不变。
页: [1]
查看完整版本: 分享基于 CH32V305 的 DAPLink,,High Speed USB with on-chip PHY