[STM32H7] STM32H7 USB 如何 CDC 一次发送36KByte数据

[复制链接]
7129|12
 楼主| xiaofei558008 发表于 2021-7-9 11:52 | 显示全部楼层 |阅读模式
STM32H7 全速USB 如何用 CDC usb 虚拟串口 一次发送36KByte数据呢?

看了网上说明,貌似一次只能发送64字节?也有看到可以跑到800KB/s;

uint8_t CDC_Transmit_HS(uint8_t* Buf, uint16_t Len)
static int8_t CDC_Receive_FS (uint8_t* Buf, uint32_t *Len)


这两个函数可以吗?
小白第一次调USB,求大侠不吝赐教呀~~








小叶三千 发表于 2021-7-9 17:05 | 显示全部楼层
USB的HID协议是一次64Byte,处理速度快啊,传一些文件没问题的。不过CDC没用过,帮顶!
 楼主| xiaofei558008 发表于 2021-7-9 17:57 | 显示全部楼层
本帖最后由 xiaofei558008 于 2021-7-10 15:16 编辑
小叶三千 发表于 2021-7-9 17:05
USB的HID协议是一次64Byte,处理速度快啊,传一些文件没问题的。不过CDC没用过,帮顶! ...

CDC 好像是64/512一次。我i这边传一段(1-2K左右就卡死,返回 USBD_BUSY)
香水城 发表于 2021-7-9 19:14 | 显示全部楼层
对于FS模式下的CDC传输,当数据大于64Bytes,会进行多包传输来完成。

你检查下你堆、FIFO这些配置。
 楼主| xiaofei558008 发表于 2021-7-10 15:06 | 显示全部楼层
香水城 发表于 2021-7-9 19:14
对于FS模式下的CDC传输,当数据大于64Bytes,会进行多包传输来完成。

你检查下你堆、FIFO这些配置。 ...

谢谢香主回复;
目前cube都用静态库了,因此不需要堆的配置,64字节试过,一直传64字节传2k左右也会变忙的状态,fifo还没检查,H7 FS 和 HS还没搞明白是否有区别,用的是内置的phy。
 楼主| xiaofei558008 发表于 2021-7-12 16:58 | 显示全部楼层
自问自答一下:
cubeMx生成的代码HS和FS比较混乱(内置PHY全是FS,但代码里都是HS),因此从网上下了个F746 FS的例子;自己移植了一下搞定了; STM32F746 Discovery VCP-FS.rar (951.89 KB, 下载次数: 73)




renzheshengui 发表于 2021-8-6 15:33 | 显示全部楼层
还没有用过cdc呢
paotangsan 发表于 2021-8-6 15:38 | 显示全部楼层
配置的话也会很混乱吗

评论

不混乱,很容易移植上去;注意DMA /Cache RAM分配位置即可  发表于 2021-8-13 13:43
木木guainv 发表于 2021-8-6 16:05 | 显示全部楼层
请问USB和CDC是什么关系啊

评论

CDC是USB的一个类,USB有很多类,比如鼠标键盘的HID,串口CDC,音频Audio等等,每个类就是一套USB子协议  发表于 2021-8-13 13:42
xiaoqizi 发表于 2021-8-6 16:07 | 显示全部楼层
哈哈 正好可以借鉴一下

评论

亲测可用,稳定  发表于 2021-8-13 13:41
您需要登录后才可以回帖 登录 | 注册

本版积分规则

142

主题

997

帖子

13

粉丝
快速回复 在线客服 返回列表 返回顶部