shuihehe 发表于 2019-3-18 09:45:37

stm32f407zgtx 自定义usb bulk 通信

本帖最后由 shuihehe 于 2019-3-18 09:52 编辑

最近在学习研究USB协议,研究一段时间了,看的云里雾里的,到头来只记得协议版本、拓扑结构、枚举过程、事务和四种传输方式等宏观整体的知识点。结合stm32自带的usb控制器模块,直观的了解一下usb传输过程。
   工具:cubemx、libusbk、mdk
   平台:win10 stm32f407zgtx
这里先提出几个问题,我在移植过程中自己无法解决的问题
1.cubemx中生成的cdc类工程中的中断端点是INT类型,这个端点需要报告描述符么?
2.批量端点和中断端点能不能同时存在,若能同时存在需要怎么修改?
3.stm32中的四种传输方式最大能支持到多少字节的数据?
4.stm32中usb通信速率如何测试?
我在帖子最后,上传了我移植的两个工程:一个是修改CDC类,实现了自定义bulk回环(这个工程有个问题,原先CDC中的INT端点,不能发送数据到PC),另一个是修改CUSTOM-HID类,实现了自定义的设备通信(这个工程有个问题,添加的bulk端点能够接收到数据,但是只能通过INT端点发送到PC)
工程: cdc 是修改的工程 cdc1024是pc驱动 hid是修改的工程 autousb是pc驱动









                                                                  
调试软件:
热烈欢迎大家讨论交流












shuihehe 发表于 2019-3-18 10:14:45

没有人么?

我是熊猫大仙 发表于 2019-3-18 11:16:16

CDC的INT端点是控制端点,就是设置和读取波特率之类的控制参数的端点,两个BULK端点才是数据收和发的端点
INT端点和BULK端点互不矛盾,但是一个端点只能是INT端点或者BULK端点,不能同时是两个。你是不是INT和BULK都设了同一个端点号?
USB-FS的速率是12Mbps,也就是1.5M字节每秒,刨去协议开销,至少得打个八折,这是BULK的速率,HID是INT的速率,也就是64k字节每秒,64字节每帧,每秒1000帧。

shuihehe 发表于 2019-3-18 13:08:38

我是熊猫大仙 发表于 2019-3-18 11:16
CDC的INT端点是控制端点,就是设置和读取波特率之类的控制参数的端点,两个BULK端点才是数据收和发的端点
I ...

那你能帮我看看 我修改的cdc 例程中 打开了int 端点 (int和bulk 是不一样的,bulk能实现回环)但是发不出数据来

shuihehe 发表于 2019-3-18 14:22:35

shuihehe 发表于 2019-3-18 13:08
那你能帮我看看 我修改的cdc 例程中 打开了int 端点 (int和bulk 是不一样的,bulk能实现回环)但是发不 ...

我又仔细看了 官方的cdc 例程 ,中断端点和bulk 端点 不在一个接口里面,不知道stm32是否可以实现一个接口上既有中断端点也有批量端点

我是熊猫大仙 发表于 2019-3-18 16:51:08

shuihehe 发表于 2019-3-18 14:22
我又仔细看了 官方的cdc 例程 ,中断端点和bulk 端点 不在一个接口里面,不知道stm32是否可以实现一个接 ...

本来CDC就是有一个INT和2个BULK呀
我没有自己写过全套的框架,都是用的ChibiOS和libopencm3的框架

shuihehe 发表于 2019-3-18 17:20:41

我是熊猫大仙 发表于 2019-3-18 16:51
本来CDC就是有一个INT和2个BULK呀
我没有自己写过全套的框架,都是用的ChibiOS和libopencm3的框架 ...

两个接口,int 和bulk 不在一个接口下

我是熊猫大仙 发表于 2019-3-18 22:18:11

shuihehe 发表于 2019-3-18 17:20
两个接口,int 和bulk 不在一个接口下

不好意思,我搞错了。
是不是在一个接口下,取决于你怎么写的描述符,一个接口你可以附属多个端点都是没有问题的。

shuihehe 发表于 2019-3-19 08:32:07

我是熊猫大仙 发表于 2019-3-18 22:18
不好意思,我搞错了。
是不是在一个接口下,取决于你怎么写的描述符,一个接口你可以附属多个端点都是没 ...

我的意思是stm32 usb 一个接口下能同时存在中断和批量端点么,我知道能存在好多端点啊,你到底懂不懂啊

我是熊猫大仙 发表于 2019-3-19 08:56:07

shuihehe 发表于 2019-3-19 08:32
我的意思是stm32 usb 一个接口下能同时存在中断和批量端点么,我知道能存在好多端点啊,你到底懂不懂啊 ...

我确实不懂,你懂
端点你想配成INT就INT,像配成BULK就BULK,那条USB标准里规定了不能在一个接口里同时配INT和BULK?
问问题就先多做点准备工作,自己动动手,动动眼,不要别人说什么都理解不了
页: [1] 2
查看完整版本: stm32f407zgtx 自定义usb bulk 通信