阅读:880回复:0
帮忙看一下read函数
unsigned char CF_READ()
{ MassStorageCBW.dCBW_Signature=CBW_SIGNATURE; MassStorageCBW.dCBW_Tag=0x60a624de; MassStorageCBW.dCBW_DataXferLen=para[2]*512; MassStorageCBW.bCBW_Flag=0x80; MassStorageCBW.bCBW_LUN=0;//要修改 MassStorageCBW.bCBW_CDBLen=sizeof(READ_RBC);//0x0C ///////////////////////////////////// MassStorageCBW.cdbRBC.READ_RBC.OperationCode=read10;//28H MassStorageCBW.cdbRBC.READ_RBC.VendorSpecific=0;//需要修改 MassStorageCBW.cdbRBC.READ_RBC.LBA.LBA_W8.LBA_3=para[6]; MassStorageCBW.cdbRBC.READ_RBC.LBA.LBA_W8.LBA_2=para[5]; MassStorageCBW.cdbRBC.READ_RBC.LBA.LBA_W8.LBA_1=para[4]; MassStorageCBW.cdbRBC.READ_RBC.LBA.LBA_W8.LBA_0=para[3]; MassStorageCBW.cdbRBC.READ_RBC.XferLength=para[2]; ////////////////////////////////////// if(!BULK_Transfer_OUT((unsigned char *)&MassStorageCBW,sizeof(MassStorageCBW))) return FALSE; DelayMs(5); //len=36; if(!BULK_Transfer_IN(BX,(para[2]*512)))//接收数据,BX=Adress of Buffer,接收数据长度,para[2]扇区数 return FALSE; //DelayMs(1); if(!BULK_Transfer_IN((unsigned char *)&MassStorageCSW,13)) return FALSE; ///////////////////////////// return TRUE; } /*注释 para[1]=feature para[2]=Sector Count para[3]=Sector Number(LBA 7-0) para[4]=Cylinder Low (LBA 15-8) para[5]=Cylinder High (LBA 23-16) para[6]=Head (LBA 27-24) */ 这样写有没有问题? 还有我的程序并没有判断CSW字段,实际工作中,是不是要检查一下CSW内容? |
|
|