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

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, 下载次数: 210)
收藏 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管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版