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

📄 massstorage.c

📁 ARM44B0+sl811(包含所有固件程序和源码)调试通过
💻 C
字号:
#include "ezusb.h"
#include "ezregs.h"
#include "massstorage.h"

#include "host_811.h"
#include "..\target\def.h"
#include "..\target\44blib.h"

#define OutPayLoad 64
#define InPayLoad 64




CBW MassStorageCBW;
CSW MassStorageCSW;
BYTE MassStorageDataBuf[512];
BYTE MassStorageStatusBuf[13];

BYTE UFI_Inquiry()//查询,获取设备信息
{
 BYTE  i;
MassStorageCBW.dCBWSignature= 0x55534243;
MassStorageCBW.dCBWTag= 0x28fa8b87;
MassStorageCBW.dCBWDataTransferLength[0]= 0x24;
MassStorageCBW.dCBWDataTransferLength[1]= 0x0;
MassStorageCBW.dCBWDataTransferLength[2]= 0x0;
MassStorageCBW.dCBWDataTransferLength[3]= 0x0;
MassStorageCBW.bmCBWFlags= 0x80; //D7位=0表示主机到设备的数据输出
//D7位=1表示设备到主机的数据输入
MassStorageCBW.bCBWLUN= 0;//表示接受该命令的设备的逻辑单元号LUN
MassStorageCBW.bCBWCBLength= 0x0C;
//表示CBWCB的长度,即将要发送的特定子类的长度
//0X0C是UFI子类中的Read(10)命令长度
MassStorageCBW.CBWCB[0]= 0x12;
MassStorageCBW.CBWCB[1]= 0x0;
MassStorageCBW.CBWCB[2]= 0x0;
MassStorageCBW.CBWCB[3]= 0x0;
MassStorageCBW.CBWCB[4]= 0x24;
MassStorageCBW.CBWCB[5]= 0x0;
for(i=6;i<0x10;i++) MassStorageCBW.CBWCB[i]= 0x0;

if(!usbXfer(1,epbulkout&0x0f,PID_OUT,0,OutPayLoad,31,(BYTE *)&MassStorageCBW)) //发送命令
{
//ErrorCode=0x01;
return FALSE;
}
EZUSB_Delay(20000);//严时200MS
if(!usbXfer(1,epbulkin&0x0f,PID_IN,0,InPayLoad,36,(BYTE *)&MassStorageDataBuf)) //设备到主机的数据传输,在此句无数据返回
{
//ErrorCode=0x01;
return FALSE;
}
if(!usbXfer(1,epbulkin&0x0f,PID_IN,0,InPayLoad,13,(BYTE *)&MassStorageStatusBuf))
{
//ErrorCode=0x01;
return FALSE;
}
if(MassStorageStatusBuf[12]!=0x00)
{
//ErrorCode=0x01;
return FALSE;
}
return TRUE;
}

⌨️ 快捷键说明

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