ch55x usb UEPn_CTRL寄存器求助

我阅读了ch55x的手册,关于bUEP_R_RES / bUEP_T_RES有点疑惑,当遇到控制传输就搞得更糊涂了。我发现在状态阶段,收到了IN事务,代码写的是UEP0_CTRL = UEP_R_RES_ACK | UEP_T_RES_NAK。在状态阶段,收到了OUT事务,代码写的是UEP0_CTRL |= UEP_R_RES_ACK | UEP_T_RES_NAK。一个是=另一个是|=。为什么要这样写能解释一下吗?

还有就是每次放入Ep0Buffer的数据是为了下一次IN事务准备的对吗,这就是为啥在setup阶段就开始填写Ep0Buffer了?

Uep0_ctrl默认复位值都为0,等于是直接给寄存器赋后面的值,而或等是在不改变寄存器原先值的基础上再把相应位置1,如果寄存器其他位为0的话这两种写法效果是一样的。

Ep0buffer缓冲区指向的是端点0的dma地址,如果有数据要上传时需要先把数据准备好,等待主机发IN令牌包来取数据。


谢谢回复!


只有登录才能回复,可以选择微信账号登录