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

📄 bulkcmd.c

📁 FS7805 使用ATA硬盘的demo
💻 C
字号:
/*
*********************************************************************************************************
* File:     BulkCmd.C
* Contents:
*
* $Date:    04/06/06    Kimi    v0.1
*           01/05/07    kevin   v0.2
*           01/08/07    kevin   v0.3
*           01/29/07    kevin   v0.4
* Copyright (c) 2007 Fameg, Inc. All rights reserved
*********************************************************************************************************
*/
 
 
#include "fs7805.h"
#include "fs7805regs.h" 

#include "Include.h"  
/*************************************************
   Global Variables
*************************************************/ 
UINT16               SectorCount    = 0; 
BYTE                 SW_OUT_FIFO_Toggle = 0;
BYTE                 SW_IN_FIFO_Toggle = 0; 
WORD                 FIFO_ADDRESS_IN;
WORD                 FIFO_ADDRESS_OUT;
WORD                 UsbDmaBuffer ;
 


/*
*********************************************************************************************************
*                                             ParseOut
*
* Description: Select which fifo is the OUTFIFO of usb 
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
void  ParseOut (void)
{                                                   
                                                      // FULL_0 = 1 and FULL_1 = 1
    if ((EPAFIFOCS & bmFIFO0_FULL) && (EPAFIFOCS & bmFIFO1_FULL))
    {                                                  
        if (SW_OUT_FIFO_Toggle == 0)
        {
            FIFO_ADDRESS_OUT    = DMA_FIFOA0;         // data stored in fifo 0
        }
        else
        {
            FIFO_ADDRESS_OUT    = DMA_FIFOA1;         // data stored in fifo 1
        }
    }
    else if (EPAFIFOCS & bmFIFO0_FULL)                // FULL_0 = 1
    {
        FIFO_ADDRESS_OUT    = DMA_FIFOA0;             // data stored in fifo 0
    }
    else if (EPAFIFOCS & bmFIFO1_FULL)                // FULL_1 = 1
    {
        FIFO_ADDRESS_OUT    = DMA_FIFOA1;             // data stored in fifo 1   
    }
	UsbDmaBuffer = FIFO_ADDRESS_OUT;
}

/*
*********************************************************************************************************
*                                             PassOut
*
* Description: Pass USB data to SFI and reverse software toggle 
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
void  PassOut (void)
{
    ParseOut();
    if (FIFO_ADDRESS_OUT == DMA_FIFOA0)
    {
         EPACNTH         = 0x0A;
         EPACNT0L        = 0x00;                        // EPA CNT = 512, For USB 1.1
         SFI_SKIP        = 0x01;                        // pass data to SFI 
    }
    else
    {
         EPACNTH         = 0xA0;
         EPACNT1L        = 0x00;                        // EPA CNT = 512, For USB 1.1
         SFI_SKIP        = 0x41;                        // pass data to SFI 
    }
    SW_OUT_FIFO_Toggle  = !SW_OUT_FIFO_Toggle;          // reverse software toggle 
}

/*
*********************************************************************************************************
*                                             PassIn
*
* Description: Reverse software toggle 
*
* Arguments  : none
*
* Returns    : none
*********************************************************************************************************
*/
void  PassIn (void)
{    
    SW_IN_FIFO_Toggle   = !SW_IN_FIFO_Toggle;           // reverse software toggle 
}






 
 


 

 
 

⌨️ 快捷键说明

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