⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tpbulk.lst

📁 51单片机读写U盘
💻 LST
📖 第 1 页 / 共 2 页
字号:
 112   1              TPBulk_CBW.bCBW_LUN=0;
 113   1              TPBulk_CBW.bCBW_CDBLen=sizeof(INQUIRY_SPC);
 114   1              
 115   1              /////////////////////////////////
 116   1              cdbInquirySPC.OperationCode=SPC_CMD_INQUIRY;
 117   1              cdbInquirySPC.EnableVPD=0;
 118   1              cdbInquirySPC.CmdSupportData=0;
 119   1              cdbInquirySPC.PageCode=0;
 120   1              cdbInquirySPC.AllocationLen=0x24;
 121   1              cdbInquirySPC.Control=0;
 122   1              ////////////////////////////////
 123   1              //if(!epBulkRcv(DBUF,5))
 124   1              //      return FALSE;
 125   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 126   1                      return FALSE;
 127   1              DelayMs(150);
C51 COMPILER V7.20   TPBULK                                                                12/13/2005 15:27:58 PAGE 5   

 128   1              //len=36;
 129   1              if(!epBulkRcv(DBUF,38))
 130   1                      return FALSE;
 131   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 132   1                      return FALSE;
 133   1              ////////////////////////////////
 134   1              return TRUE;    
 135   1      #undef cdbInquirySPC
 136   1      }
 137          
 138          unsigned char SPC_READLONG(void)
 139          {
 140   1      #define cdbReadLong RBC_CDB.SpcCdb_ReadLong     
 141   1              //nsigned char retStatus=FALSE;
 142   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 143   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 144   1              TPBulk_CBW.dCBW_DataXferLen=0xfc000000;
 145   1              TPBulk_CBW.bCBW_Flag=0x80;
 146   1              TPBulk_CBW.bCBW_LUN=0;
 147   1              TPBulk_CBW.bCBW_CDBLen=sizeof(READ_LONG_CMD);
 148   1              
 149   1              /////////////////////////////////////
 150   1              cdbReadLong.OperationCode=SPC_CMD_READLONG;
 151   1              cdbReadLong.LogicalUnitNum=0;
 152   1              cdbReadLong.AllocationLen=0xfc;
 153   1              //////////////////////////////////////
 154   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 155   1                      return FALSE;
 156   1              DelayMs(5);
 157   1              //len=36;
 158   1              if(!epBulkRcv(DBUF,0xfc))
 159   1                      return FALSE;
 160   1              
 161   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 162   1                      return FALSE;
 163   1        ////////////////////////////
 164   1        return TRUE;
 165   1      #undef cdbReadLong
 166   1      }
 167          unsigned char SPC_RequestSense(void)
 168          {
 169   1      #define cdbRequestSenseSPC RBC_CDB.SpcCdb_RequestSense  
 170   1              //unsigned char retStatus=FALSE;
 171   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 172   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 173   1              TPBulk_CBW.dCBW_DataXferLen=0x0e000000;
 174   1              TPBulk_CBW.bCBW_Flag=0x80;
 175   1              TPBulk_CBW.bCBW_LUN=0;
 176   1              TPBulk_CBW.bCBW_CDBLen=sizeof(REQUEST_SENSE_SPC);
 177   1                      
 178   1              /////////////////////////////////////
 179   1              cdbRequestSenseSPC.OperationCode=SPC_CMD_REQUESTSENSE;
 180   1              cdbRequestSenseSPC.AllocationLen=0x0e;
 181   1              //////////////////////////////////////
 182   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 183   1                      return FALSE;
 184   1              DelayMs(5);
 185   1              //len=36;
 186   1              if(!epBulkRcv(DBUF,18))
 187   1                      return FALSE;
 188   1              
 189   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
C51 COMPILER V7.20   TPBULK                                                                12/13/2005 15:27:58 PAGE 6   

 190   1                      return FALSE;
 191   1      /////////////////////////////
 192   1              return TRUE;
 193   1              
 194   1      #undef cdbRequestSenseSPC
 195   1      }
 196          unsigned char SPC_TestUnit(void)
 197          {
 198   1      #define cdbTestUnit RBC_CDB.SpcCdb_TestUnit     
 199   1              //unsigned char retStatus=FALSE;
 200   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 201   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 202   1              TPBulk_CBW.dCBW_DataXferLen=0x00000000;
 203   1              TPBulk_CBW.bCBW_Flag=0x00;
 204   1              TPBulk_CBW.bCBW_LUN=0;
 205   1              TPBulk_CBW.bCBW_CDBLen=sizeof(TEST_UNIT_SPC);
 206   1              /////////////////////////////////////
 207   1              cdbTestUnit.OperationCode=SPC_CMD_TESTUNITREADY;
 208   1              //////////////////////////////////////
 209   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 210   1                      return FALSE;
 211   1              DelayMs(5);
 212   1              
 213   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 214   1                      return FALSE;
 215   1      #undef cdbTestUnit
 216   1      ////////////////////////////
 217   1              return TRUE;
 218   1      }
 219          unsigned char SPC_LockMedia(void)
 220          {
 221   1      #define cdbLockSPC RBC_CDB.SpcCdb_Remove        
 222   1              //unsigned char retStatus=FALSE;
 223   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 224   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 225   1              TPBulk_CBW.dCBW_DataXferLen=0x00000000;
 226   1              TPBulk_CBW.bCBW_Flag=0x00;
 227   1              TPBulk_CBW.bCBW_LUN=0;
 228   1              TPBulk_CBW.bCBW_CDBLen=sizeof(MEDIA_REMOVAL_SPC);
 229   1              ///////////////////////////////////////////
 230   1              cdbLockSPC.OperationCode=SPC_CMD_PRVENTALLOWMEDIUMREMOVAL;
 231   1              cdbLockSPC.Prevent=1;
 232   1              ///////////////////////////////////////////
 233   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 234   1                      return FALSE;
 235   1              DelayMs(5);
 236   1              
 237   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 238   1                      return FALSE;
 239   1      #undef cdbLockSPC
 240   1      /////////////////////////////
 241   1              return TRUE;
 242   1      }
 243          unsigned char RBC_ReadCapacity(void)
 244          {
 245   1      #define cdbReadCap RBC_CDB.RbcCdb_ReadCapacity  
 246   1              //unsigned char retStatus=FALSE;
 247   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 248   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 249   1              TPBulk_CBW.bCBW_LUN=0;
 250   1              TPBulk_CBW.dCBW_DataXferLen=0x08000000;
 251   1              TPBulk_CBW.bCBW_Flag=0x80;
C51 COMPILER V7.20   TPBULK                                                                12/13/2005 15:27:58 PAGE 7   

 252   1              
 253   1              TPBulk_CBW.bCBW_CDBLen=sizeof(READ_CAPACITY_RBC);
 254   1              /////////////////////////////////////
 255   1              cdbReadCap.OperationCode=RBC_CMD_READCAPACITY;
 256   1              /////////////////////////////////////
 257   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 258   1                      return FALSE;
 259   1              DelayMs(10);
 260   1              //len=36;
 261   1              if(!epBulkRcv(DBUF,8))
 262   1                      return FALSE;
 263   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 264   1                      return FALSE;
 265   1      #undef cdbReadCap
 266   1      /////////////////////////////
 267   1              return TRUE;
 268   1      }
 269          unsigned char RBC_Read(unsigned long lba,unsigned char len,unsigned char *pBuffer)
 270          {
 271   1      #define cdbRead RBC_CDB.RbcCdb_Read     
 272   1              //unsigned char retStatus=FALSE;
 273   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 274   1              TPBulk_CBW.dCBW_Tag=0x60a624de;
 275   1              TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
 276   1              TPBulk_CBW.bCBW_Flag=0x80;
 277   1              TPBulk_CBW.bCBW_LUN=0;
 278   1              TPBulk_CBW.bCBW_CDBLen=sizeof(READ_RBC);
 279   1              /////////////////////////////////////
 280   1              cdbRead.OperationCode=RBC_CMD_READ10;
 281   1              cdbRead.VendorSpecific=0;
 282   1              cdbRead.LBA.LBA_W32=lba;
 283   1              cdbRead.XferLength=len;
 284   1              //cdbRead.Reserved1[0]=0;
 285   1              //cdbRead.Reserved1[1]=0;
 286   1              //cdbRead.Reserved1[2]=0x40;
 287   1              //////////////////////////////////////
 288   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 289   1                      return FALSE;
 290   1              DelayMs(5);
 291   1              //len=36;
 292   1              if(!epBulkRcv(pBuffer,len*DeviceInfo.BPB_BytesPerSec))
 293   1                      return FALSE;
 294   1              //DelayMs(1);
 295   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 296   1                      return FALSE;
 297   1      #undef cdbRead
 298   1      /////////////////////////////
 299   1              return TRUE;
 300   1      }
 301          
 302          unsigned char RBC_Write(unsigned long lba,unsigned char len,unsigned char *pBuffer)
 303          {
 304   1      #define cdbWrite RBC_CDB.RbcCdb_Write   
 305   1              //len=2;
 306   1              //unsigned int idata temp;
 307   1              //unsigned char i;
 308   1              //len=1;
 309   1              //SPC_TestUnit();
 310   1              //unsigned char retStatus=FALSE;
 311   1              TPBulk_CBW.dCBW_Signature=CBW_SIGNATURE;
 312   1              TPBulk_CBW.dCBW_Tag=0xb4D977c1;
 313   1              TPBulk_CBW.dCBW_DataXferLen=SwapINT32(len*DeviceInfo.BPB_BytesPerSec);
C51 COMPILER V7.20   TPBULK                                                                12/13/2005 15:27:58 PAGE 8   

 314   1              TPBulk_CBW.bCBW_Flag=0x0;
 315   1              TPBulk_CBW.bCBW_LUN=0;
 316   1              TPBulk_CBW.bCBW_CDBLen=sizeof(WRITE_RBC);
 317   1              /////////////////////////////////////
 318   1              cdbWrite.OperationCode=RBC_CMD_WRITE10;
 319   1              cdbWrite.VendorSpecific=0;
 320   1              cdbWrite.LBA.LBA_W32=lba;
 321   1              cdbWrite.XferLength=len;
 322   1              cdbWrite.Reserved2=0;
 323   1              cdbWrite.Control=0;
 324   1              //////////////////////////////////////
 325   1              if(!epBulkSend((unsigned char *)&TPBulk_CBW,sizeof(TPBulk_CBW)))
 326   1                      return FALSE;
 327   1              DelayMs(15);
 328   1              
 329   1              if(!epBulkSend(pBuffer,DeviceInfo.BPB_BytesPerSec))
 330   1                      return FALSE;
 331   1              //DelayMs(10);
 332   1              if(!epBulkRcv((unsigned char *)&TPBulk_CSW,13))
 333   1                      return FALSE;
 334   1              
 335   1      #undef cdbWrite
 336   1      
 337   1      /////////////////////////////
 338   1              return TRUE;
 339   1      }

C51 COMPILATION COMPLETE.  0 WARNING(S),  114 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -