阅读:2791回复:1
usb传输过程。
=====================================================================
主机往设备传送数据(out) 当设备成功收到主机发送的数据,给主机一个ack应答,这个应答回产生一个中断给51(int0),收到这个中断后,你就可以读取out端点的数据了。 例如:当中断发生后,判断是哪个端点产生的中断。如果是端点1out就用如下的函数(每个人用的不一样,这样直观点。) ISP1581_ReadBulkEndpoint(INDEX4EP01OUT,EpBuf,EP1_PACKET_SIZE) INDEX4EP01OUT 端点1out ; 最大数据长度 ;EpBuf最后数据放到了这里 把端点1out 的数据都读到GenEpBuf里面去。如果有需要可以读GenEpBuf得到数据。 补充: 不管主机发送的数据是多少,这个中断都会产生的。如果你的端点最大包设置小于512,那么端点满512后会产生中断。当最后一个不满512或恰好为0也会产生中断。 ================================================================== 设备往主机发送数据(in): 主机要先发送in请求,设备方如果准备好了数据(也就是in端点被填满了或者生效了),数据就会在in令牌后面传到主机,如果主机正确接收 到这批数据,会发送ack给设备,从而产生中断,你可以在中断里再次填充in端点,或这在中断里设置标志到主程序里去填充数据。 |
|
沙发#
发布于:2003-11-03 20:35
我记得
每个ED(endpoint)下有一个TD链(Transmit),在ED的最后一个TD,会置标志表示结束。 如果,这个结束标志有时不能置上去,是出了什么问题? |
|