DATA_END是CPU设置的,那我设置了这个中断位有什么用呢? 是不是我设置了这个位,在CPU就会自动响应控制传输的握手阶段?那么SETUP_END又是什么用的呢?很难理解这句话“set by the usb when a control transfer ends before DATA_END is set”?
2.data_end中断和setup_end中断是不能共存的,因为“setup_end is set by the usb when a control transfer ends before data_end is set”.
3.控制传输的握手阶段,作为OUT型的握手是自动完成的,而且不会产生任何中断,因为0字节数据包is not a valid token and will be not written to the FIFO.
4.data_end中断,是由CPU置位,USB清空相应位完成的,这个清空工作,同样是由USB DEVICE的逻辑电路来完成的。置位data_end主要有以下两个作用: a. 如果数据长度小于wLength值,但最后一次剩下的数据长度恰好等于一次传输最大数据包长度,则CPU会再向主机发送一个长度为0的数据包,以作为该数据阶段的结束。 b. 自动应答IN型的握手阶段数据包。