本帖最后由 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驱动 |
INT端点和BULK端点互不矛盾,但是一个端点只能是INT端点或者BULK端点,不能同时是两个。你是不是INT和BULK都设了同一个端点号?
USB-FS的速率是12Mbps,也就是1.5M字节每秒,刨去协议开销,至少得打个八折,这是BULK的速率,HID是INT的速率,也就是64k字节每秒,64字节每帧,每秒1000帧。
评分
查看全部评分
那你能帮我看看 我修改的cdc 例程中 打开了int 端点 (int和bulk 是不一样的,bulk能实现回环)但是发不出数据来
我又仔细看了 官方的cdc 例程 ,中断端点和bulk 端点 不在一个接口里面,不知道stm32是否可以实现一个接口上既有中断端点也有批量端点
本来CDC就是有一个INT和2个BULK呀
我没有自己写过全套的框架,都是用的ChibiOS和libopencm3的框架
两个接口,int 和bulk 不在一个接口下
不好意思,我搞错了。
是不是在一个接口下,取决于你怎么写的描述符,一个接口你可以附属多个端点都是没有问题的。
我的意思是stm32 usb 一个接口下能同时存在中断和批量端点么,我知道能存在好多端点啊,你到底懂不懂啊
我确实不懂,你懂
端点你想配成INT就INT,像配成BULK就BULK,那条USB标准里规定了不能在一个接口里同时配INT和BULK?
问问题就先多做点准备工作,自己动动手,动动眼,不要别人说什么都理解不了