阅读:878回复:0
USB数据传输(out in bulk)――初学者
给象偶一样刚学usb,对usb的数据是怎么传输又不太明白的。嘿嘿,ren兄看了会不会眼熟,偶把你的拿来啦,不要见怪呀。
如果有不对的地方,高手一定要指出来呀。 那10分就是奖励。 ===================================================================== 主机往设备传送数据(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端点,或这在中断里设置标志到主程序里去填充数据。 |
|