打印
[MM32软件]

USB 双向端点的问题

[复制链接]
892|13
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
pq113_6|  楼主 | 2020-12-11 08:39 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近发现MM32L073的端点双向使用时不能是全双工的,半双工才行,即端点FIFO IN和OUT是共用的,如果是全双工的会被覆盖

使用特权

评论回复
沙发
zhu^zhu| | 2020-12-11 11:06 | 只看该作者
是的。端点的FIFO只有一个,IN和OUT不可同时使用。

使用特权

评论回复
板凳
pq113_6|  楼主 | 2020-12-11 12:59 | 只看该作者
zhu^zhu 发表于 2020-12-11 11:06
是的。端点的FIFO只有一个,IN和OUT不可同时使用。

这不是一个好的规格,073的端点还只有5个,又不能像STM32那样自己分配大小

使用特权

评论回复
地板
zhu^zhu| | 2020-12-11 16:43 | 只看该作者
我用过,简单的应用没有问题。MM32-LINK仿真器、编程器的USB就是使用了这个IP,端点0用于枚举,端点1、2用于BULK,端点3、4用于CDC。

使用特权

评论回复
5
海滨消消| | 2020-12-14 15:43 | 只看该作者
MM32-LINK仿真器、编程器的USB就是使用了这个IP,端点0用于枚举,端点1、2用于BULK,端点3、4用于CDC

使用特权

评论回复
6
jiangyongabc| | 2020-12-16 08:00 | 只看该作者
这种是这样的

使用特权

评论回复
7
嵌入小菜菜| | 2020-12-17 20:22 | 只看该作者
当然,FIFO只有一个单点的,又不是双向的。

使用特权

评论回复
8
pq113_6|  楼主 | 2020-12-25 08:15 | 只看该作者
zhu^zhu 发表于 2020-12-11 16:43
我用过,简单的应用没有问题。MM32-LINK仿真器、编程器的USB就是使用了这个IP,端点0用于枚举,端点1、2用 ...

碰到一个bug,虚拟串口,设置波特率SET_LINE_CODING和获取波特率GET_LINE_CODING都是通过EP0实现的,主机在SET_LINE_CODING时,可能是073速度不够,SET_LINE_CODING还没完成就发GET_LINE_CODING,导致同时读写EP0的FIFO,数据就错乱了。这个问题不是所有电脑有问题,我用hub问题就少点,直接插电脑的USB口就很容易复现。

使用特权

评论回复
9
zhu^zhu| | 2020-12-25 09:21 | 只看该作者
PC主机USB协议栈肯定不会出现一条命令发出且未完成时,就发第二条命令的可能。
我在嵌入端处理GET_LINE_CODING,SET_LINE_CODING按正常流程处理,(几乎)没有方式错误。
但在处理CDC大数据流时,倒是遇到一些问题,由于RAM空间的限制,我加了一个80个字节循环队列,只能说出错的概率要小一些。
有时间后续再深入一下,做个完美的CDC。

使用特权

评论回复
10
pq113_6|  楼主 | 2020-12-25 10:14 | 只看该作者
zhu^zhu 发表于 2020-12-25 09:21
PC主机USB协议栈肯定不会出现一条命令发出且未完成时,就发第二条命令的可能。
我在嵌入端处理GET_LINE_COD ...

哦,我是看到设置的波特率115200这个数据跑在GET SERIAL NUMBER里面去了。可能程序流程哪里还有问题,再查查看

使用特权

评论回复
11
pq113_6|  楼主 | 2020-12-28 12:32 | 只看该作者
zhu^zhu 发表于 2020-12-25 09:21
PC主机USB协议栈肯定不会出现一条命令发出且未完成时,就发第二条命令的可能。
我在嵌入端处理GET_LINE_COD ...

问题已经解决,有个小疑问请教,端点0的中断状态寄存器出现0x4F的值,如何判断这些中断类型中哪个是上一次传输的,哪个是本次传输的?详细点说,0x4F有SETUP中断,这表示这是一次新的传输开始,但是其他IN,OUT怎么区分是这次的还是上次的

使用特权

评论回复
12
zhu^zhu| | 2020-12-28 12:58 | 只看该作者
EP0_INT_EN寄存器是怎样设置的,它的值是多少?

使用特权

评论回复
13
pq113_6|  楼主 | 2020-12-29 09:01 | 只看该作者
zhu^zhu 发表于 2020-12-28 12:58
EP0_INT_EN寄存器是怎样设置的,它的值是多少?

EP_SETUP | EP_FINISH | EP_IN_NACK | EP_OUT_ACK | EP_STALL

使用特权

评论回复
14
单片小菜| | 2021-1-8 10:32 | 只看该作者
一定是双向的,不是单向的。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

36

主题

284

帖子

2

粉丝