描述一下我的问题:USB0 MSC bulk only协议,程序代码是lpcware上下到的。现在我把bulk端点maxpacket大小调成了512字节,dTD缓冲区变为16k,通信出错了。进一步调试发现:①枚举正常。②inqury、read capaticy等SCSI指令执行也是正常。问题来了:在所有指令执行最后,主机OUT端点向device传输了一个512字节的数据,NAK响应后,交付dTD(16k),启动端点接收,这个时候端点的完成中断ENPTCOMPLETE寄存器就是不产生中断(但是缓冲区确实已经接收到主机的数据了),程序无法交互CSW,导致通讯失败。我的疑问:同样的缓冲区,用于接收CBW(长度<512B)时很正确,为何就是接收不到数据(长度=512B)。
|