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

📄 bulkcmd.h

📁 增强型51单片机fs7821sd卡、mmc卡读写程序
💻 H
字号:
/*
**********************************************************************************************
* Project:	TK7821
* File:		BulkCmd.h
* Contents: 
*           
*
* $Date: 02/25/05    Jason    v0.1
*        05/12/05    Mingo    v0.2   www.fameg.com
*
* Copyright (c) 2005 Fameg, Inc. All rights reserved
***********************************************************************************************
*/

#ifndef BulkCmdH
#define BulkCmdH

#define UsbDmaBuffer  CurrentBuffer 

#define CBW_SIGNATURE             0x55534243L // 0x43425355L 
#define CSW_SIGNATURE             0x55534253L // 0x53425355L 
#define CBWCB_OFFSET              0xf
#define CBW_LENGTH                31
#define CBW_LENGTH_98             32
#define CSW_LENGTH                13
#define EP4_5_FIFO_LEN            64
#define CBWCB_ADDR                (UsbDmaBuffer + CBWCB_OFFSET)

extern bool ScsiCmdSTALLed;

// Bulk Completed State definitions
#define CBW_GET_COMPLETED             0x00
#define BULK_DMA_IN_COMPLETED         0x01
#define BULK_DMA_OUT_COMPLETED        0x02
#define SHORT_PACKET_STALL_COMPLETED  0x03
#define STALL_IN_COMPLETED            0x04
#define CSW_REPLY_COMPLETED           0x05 

// Command Block Status Values
#define COMMAND_PASSED          0x00
#define COMMAND_FAILED          0x01
#define PHASE_ERROR             0x02      // Internal Device Error, Bit direction error, 13 cases

#define BulkSetDmaOut()  (CSRWrite(USB_BASE + EP2_RXCSR, EN_RX2))
#define BulkOutTogErr()  (CSRRead(USB_BASE + EP2_RXCSR) & STS_RX2_TOGERR)
#define BulkInStall()    (CSRWrite(USB_BASE + EP1_TXCSR, EN_TX1_STL))
#define BulkStallMask  0xfc  // Because set "addition" rx_en(bit0) on current usb arch would make buffer error. 

//----------------------------------------------------------------------------
// Command Block Wrapper Structure
//----------------------------------------------------------------------------
typedef struct
{
  UINT32 Sign;
  UINT32 Tag;
  UINT32 DataXsferLen;       
  BYTE   Flags;
  BYTE   CbwcbLun;
  BYTE   CbwcbLen;
}CMD_BLOCK_WRAPPER, *PCMD_BLOCK_WRAPPER;  

//----------------------------------------------------------------------------
// Command Status Wrapper Structure
//----------------------------------------------------------------------------
typedef struct
{
  UINT32 Sign;
  UINT32 Tag;
  UINT32 DataResidueLen;       
  BYTE   Status;  
}CMD_STATUS_WRAPPER, *PCMD_STATUS_WRAPPER;  

//----------------------------------------------------------------------------
// Mode Page Table Structure
//----------------------------------------------------------------------------
typedef struct 
{
 PBYTE PagePtr;
 BYTE  Size;  
}MODE_PAGE_TABLE;

void BulkBufferAvailable(UINT16 Buffer) reentrant;
void BulkInvalidFieldError(BYTE Lun);
void BulkSetDmaIn(void *Des, void *Src, UINT16 DmaLen, UINT16 TxDmaBaseAddr);
void BulkPrepareCSW(BYTE Status);
BYTE BulkGetBufIndex(UINT16 BufAddr);
extern void BulkWaitOutDataReady();
extern void BulkFreeBuffer();

#endif

⌨️ 快捷键说明

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