阅读:1324回复:2
三星S3FB42F单片机做U盘,在收到CBW之后,为何不能返回数据给主机?
我用S3FB42F做U盘,在通过了设备枚举之后(用EP0),收到了CBW命令(用EP2),但是无论如何用EP3或者EP2无法返回数据给主机,直至超时停止。
请问有同行做过类似的开发吗?可否给小弟指一条路子? 谢谢! |
|
沙发#
发布于:2003-07-08 22:45
to hustdj:我把 EP0 设为控制型端口,EP0FIFO为 16 BYTES,用于完成设备枚举等;EP2设为BULK_OUT,EP2FIFO为64BYTES,用于接收主机传来的CBW命令及数据;EP3设为BULK_IN,EP3FIFO为64BYTES,用于返回CSW及数据给主机。至于EP1,则设为INTERRUPT_IN,EP1FIFO随意,目前暂时未用到。EP2当收到CBW之后,往EP3FIFO送入数据,执行INCSR|=IN_PKT_RDY,在发送完之后,INCSR的IN_PKT_RDY位和IN_PKT_RDY2位应由1变0,但是永远等不到变0,持续为1,除非断掉USB电缆之后再连接上,这等价于由主机发送复位信号令设备复位。同时,BusHound拦截不到EP3发出的数据。
to NewTech:我目前还在查找程序流程的逻辑错误,也许是语法错误。驱动程序是市售无驱型U盘为98专配的,电脑市场上可以随便找到。 |
|
板凳#
发布于:2003-07-09 10:13
我试过很多的驱动都不太正常,能否将你现在用的发一个给我,我来测测看!
|
|