你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

stm32f407zgtx 自定义usb bulk 通信

[复制链接]
shuihehe 提问时间:2019-3-18 09:45 /
本帖最后由 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驱动

autousb.rar (15.25 MB, 下载次数: 209)
收藏 1 评论18 发布时间:2019-3-18 09:45

举报

18个回答
我是熊猫大仙 回答时间: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帧。

评分

参与人数 1蝴蝶豆 +3 收起 理由
STMCU + 3

查看全部评分

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

我确实不懂,你懂
端点你想配成INT就INT,像配成BULK就BULK,那条USB标准里规定了不能在一个接口里同时配INT和BULK?
问问题就先多做点准备工作,自己动动手,动动眼,不要别人说什么都理解不了
shuihehe 回答时间:2019-3-18 14:22:35
shuihehe 发表于 2019-3-18 13:08
那你能帮我看看 我修改的cdc 例程中 打开了int 端点 (int和bulk 是不一样的,bulk能实现回环)但是发不 ...

我又仔细看了 官方的cdc 例程 ,中断端点和bulk 端点 不在一个接口里面,不知道stm32是否可以实现一个接口上既有中断端点也有批量端点
shuihehe 回答时间:2019-3-18 10:14:45
没有人么?
shuihehe 回答时间:2019-3-18 13:08:38
我是熊猫大仙 发表于 2019-3-18 11:16
CDC的INT端点是控制端点,就是设置和读取波特率之类的控制参数的端点,两个BULK端点才是数据收和发的端点
I ...

那你能帮我看看 我修改的cdc 例程中 打开了int 端点 (int和bulk 是不一样的,bulk能实现回环)但是发不出数据来
我是熊猫大仙 回答时间: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:57:05
啥都不懂呢,先找本圈圈的USB书看看描述符都是啥意思
shuihehe 回答时间:2019-3-19 09:07:18
我是熊猫大仙 发表于 2019-3-19 08:57
啥都不懂呢,先找本圈圈的USB书看看描述符都是啥意思

我看你是真不懂,我就问你stm32能不能在一个接口下,同时存在中断端点和批量端点
shuihehe 回答时间:2019-3-19 09:08:17
我是熊猫大仙 发表于 2019-3-19 08:56
我确实不懂,你懂
端点你想配成INT就INT,像配成BULK就BULK,那条USB标准里规定了不能在一个接口里同时配 ...

你这样说有意思么?不觉得自己很傻
shuihehe 回答时间:2019-3-19 09:10:00
我是熊猫大仙 发表于 2019-3-19 08:57
啥都不懂呢,先找本圈圈的USB书看看描述符都是啥意思

圈圈的书 早就看了啊 你以为我啥都没准备 那怎么移植程序 闹呢? 这论坛是不是都是白菜
shuihehe 回答时间:2019-6-5 11:05:20
问题结局了 需要 设置相应的 fifo
12下一页

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版