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

📄 l2_usb.c

📁 凌阳MP3 spSPCA755yuanma
💻 C
字号:


/*++

Copyright (c) 2001 Sunplus Technology Co., Ltd.

Module Name:

        L2_usb.c

Abstract:

        USB L2 function

Environment:

        Keil C51 Compiler

Revision History:

        11/12/2001      cclin    created                 

--*/

//=============================================================================
//Header file
//=============================================================================
#include "general.h"
#include "bulkout.h"
#include "main.h"
//#include "App.h"
#include "initio.h"

//=============================================================================
//Symbol
//=============================================================================
//-----------------------------------------------------------------------------
//Constant
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
//Variable
//-----------------------------------------------------------------------------

//=============================================================================
//Program
//=============================================================================


#ifdef TestModeEn
//-----------------------------------------------------------------------------
//L2_TestUSB
//-----------------------------------------------------------------------------
/*
routine description:
        USB module test.
arguments:
        TestLevel     -       0: all
                              1: register read/write test
                              2: SRAM test
                              3: others
return value:
        0x00   - success
        others - error
*/
UCHAR L2_TestUSB(UCHAR TestLevel) USING_0
{
        UCHAR status = L2K_SUCCESS;
        UCHAR  Temp0 = TestLevel;

        return(status);
}

#endif

#if 0 // 102302@wyeo
UCHAR L2_BulkInOut(void) USING_0
{

        UCHAR BulkOutBufCnt;
        UCHAR status = 0;

	////DbgPrint("bf = %x\n",G_BulkFlash);
        // Loop for BulkInToDRAM
	//richie@0124 bulk 2
        if(XBYTE[0x25C2]==K_USB_AP_IN_ACK_MASK)
        {
                if(G_BulkFlash==0x00)
                {
                      
                        XBYTE[0x25C2] = 0x00;
                       
                        if(G_BulkSize<(ULONG)0x41) 
                        {
                                //PRINT_L2("Last BulkIn");
                                XBYTE[0x25a1] = 0x00;
                        } //BulkIn has completed
                        else 
                        {
                                G_BulkSize = G_BulkSize - 0x40;
                                G_BulkDRAMAddr = G_BulkDRAMAddr + 0x20;
                                
                                if(G_BulkSize<0x41) 
                                {                                       
					//richie@0124 bulk 2
                                        XBYTE[0x25a1] = K_USB_AP_IN_OPEN;//0x08;
                                }
                                else
                                {                                        
					//richie@0124 bulk 2
                                        XBYTE[0x25a1] = K_USB_AP_IN_OPEN;//0x08;
                                }
                        }
                } // G_BulkFlash == 0
                else if(G_BulkFlash == 0x01)
                {
                        XBYTE[0x25C2] = 0x00;
                        //PRINT_L2("upload flash function\n");
                        if(G_BulkSize<(ULONG)0x41) 
                        {
                                XBYTE[0x25a1] = 0x00;
                                G_BulkFlash = 0x00;
                        } // BulkIn has completed
                        else 
                        {
                                G_BulkSize = G_BulkSize - 0x40;
                                G_BulkSRAMAddr = G_BulkSRAMAddr + 0x40;
                                if (G_BulkSRAMAddr == 512)
                                {
                                        G_BulkSRAMAddr = 0x00;
                                        L2_SetSRAMDMA(0x0400); //Chamber PA8591	
#if (CFAIDE)
                                        G_BulkFlashAddr = G_BulkFlashAddr + 1;
                                        L1_DMARdCFIDE(1, (UCHAR)(G_BulkFlashAddr>>24), (UCHAR)(G_BulkFlashAddr>>16), (UCHAR)(G_BulkFlashAddr>>8), (UCHAR)G_BulkFlashAddr, 1, 0x200);
#endif
#if (SD)
                                        G_BulkFlashAddr = G_BulkFlashAddr + 512;
                                        L1_DMARdSD(1, G_BulkFlashAddr , 1, 0x200);
#endif                                       
                                }
							
                                if(G_BulkSize<0x41) 
                                {
                                        L2_SetSRAMDMA((USHORT)G_BulkSRAMAddr+0x0400); //Chamber PA8591	
					//richie@0124 bulk 2
										L2_SetUSBDMA(K_DMA_UsbDontCare, K_USB_AP_DMA_IN);//for ap
										L2_DoDMA(K_DMA_SRAM, K_DMA_USB, G_BulkSize, 0, 0);
					//richie@0124 bulk 2
                                        XBYTE[0x25a1] = K_USB_AP_IN_OPEN;//0x08;
                                        G_BulkFlashAddr = 0x00;
                                        G_BulkSize = 0x00;
                                        G_BulkFlash = 0x00;
                                        G_BulkSRAMAddr = 0x00;
                                }
                                else
                                {
                                        L2_SetSRAMDMA((USHORT)G_BulkSRAMAddr+ 0x0400); //Chamber PA8591	
					//richie@0124 bulk 2
										L2_SetUSBDMA(K_DMA_UsbDontCare, K_USB_AP_DMA_IN);//for ap
										L2_DoDMA(K_DMA_SRAM, K_DMA_USB, 0x40, 0, 0);
					//richie@0124 bulk 2
                                        XBYTE[0x25a1] = K_USB_AP_IN_OPEN;//0x08;
                                }
                        }
                       
                } 
        } // if 0x25c2 == 0x01

        // Loop for BulkOutToDRAM
	//richie@0124 bulk 2
        if(XBYTE[0x25C2]==K_USB_AP_OUT_ACK_MASK)
        {
                if (G_BulkFlash==0x00) // Bulkout to DRAM
                {
                       
                        XBYTE[0x25C2] = 0x00;                       

			//richie@0124 bulk 2
                        BulkOutBufCnt = XBYTE[K_USB_AP_OUT_BUF_SIZE];
                        G_BulkDRAMAddr = G_BulkDRAMAddr + ((ULONG)BulkOutBufCnt/2);
                        G_BulkOutSize = G_BulkOutSize + (ULONG)BulkOutBufCnt;

                        if(G_BulkOutSize == G_BulkSize)
                        {
                                G_LastBulk = 1;
                                XBYTE[0x25a1] = 0x00;
                                G_BulkOutSize = 0x00;
                                G_BulkFlash = 0x00;
                                //PRINT_L2("Last Bulk\n");
                        }
			//richie@0124 bulk 2
                        else XBYTE[0x25a1] = K_USB_AP_OUT_OPEN;//0x10;
                } // Bulkout to DRAM
                else // Bulkout to Flash
                {

                        //PRINT_L2("Download to Flash\n");
                        XBYTE[0x25C2] = 0x00;

			//richie@0124 bulk 2
                        BulkOutBufCnt = XBYTE[K_USB_AP_OUT_BUF_SIZE];

                        // DMA to CPU SRAM
                        L2_SetSRAMDMA((USHORT)G_BulkSRAMAddr+0x0400); //Chamber PA8591	
			//richie@0124 bulk 2
						L2_SetUSBDMA(K_USB_AP_DMA_OUT, K_DMA_UsbDontCare);//for ap
						L2_DoDMA(K_DMA_USB, K_DMA_SRAM, (USHORT)BulkOutBufCnt, 0, 0);

                        G_BulkSRAMAddr = G_BulkSRAMAddr + ((ULONG)BulkOutBufCnt);
                        G_BulkOutSize = G_BulkOutSize + (ULONG)BulkOutBufCnt;
						
                        if (G_BulkSRAMAddr == 512)
                        {
                                L2_SetSRAMDMA(0x0400);	//Chamber PA8591	
#if (CFAIDE)
                                L1_DMAWrCFIDE(1, (UCHAR)(G_BulkFlashAddr>>24), (UCHAR)(G_BulkFlashAddr>>16), (UCHAR)(G_BulkFlashAddr>>8), (UCHAR)G_BulkFlashAddr, 1, 0x200);
                                G_BulkFlashAddr = G_BulkFlashAddr + 1;
#endif
#if (SD)
                                L1_DMAWrSD(1, G_BulkFlashAddr , 1, 0x200);
                                G_BulkFlashAddr = G_BulkFlashAddr + 512;
#endif

                                G_BulkSRAMAddr = 0x00;                              
                        }                        
						
                        if (G_BulkOutSize == G_BulkSize)
                        {
                                G_BulkSRAMAddr = 0x00; 
                                G_BulkOutSize = 0x00;
                                G_BulkFlashAddr = 0x00;
                                G_BulkSize = 0x00;
                                G_BulkFlash = 0x00;
                                // Bulkout done
                        }
                        else 				
                                XBYTE[0x25a1] = K_USB_AP_OUT_OPEN;//0x10; //richie@0124 bulk 2
                       
                } // Bulkout to Flash
        } // if 0x25c2 == 0x02

        return status;
}
#endif

//-----------------------------------------------------------------------------
//L2_BulkInFromDRAM
//-----------------------------------------------------------------------------
/*
routine description:
        BulkInFromDRAM to PC
arguments:

return value:
        0x00    - success
        others  - error
*/
/*
UCHAR L2_BulkInFromDRAM(ULONG DRAMAddr, USHORT nByte)
{
        UCHAR status;

        status = L2_SetDRAMDMA(DRAMAddr);
	//richie@0124 bulk 2
        status = L2_SetUSBDMA(K_DMA_UsbDontCare, K_USB_AP_DMA_IN);//for ap // USBDMADst: endpoint 7
        status = L2_DoDMA(K_DMA_DRAM, K_DMA_USB, nByte, 0, 0); // DMA source DRAM, destination USB
        //status =  L2_SetSRAMDMA(0x0);
        //status = L2_DoDMA(1, 3, nByte, 0, 0);

        return(status);
}
*/
//-----------------------------------------------------------------------------
//L2_BulkOutToDRAM
//-----------------------------------------------------------------------------
/*
routine description:
        BulkOutToDRAM from PC
arguments:

return value:
        0x00    - success
        others  - error
*/
/*
UCHAR L2_BulkOutToDRAM(ULONG DRAMAddr, USHORT nByte)
{
        UCHAR status;

        status = L2_SetDRAMDMA(DRAMAddr);
        status = L2_SetUSBDMA(K_USB_AP_DMA_OUT, K_DMA_UsbDontCare);//for ap // USBDMASrc: endpoint 8
        status = L2_DoDMA(K_DMA_USB, K_DMA_DRAM, nByte, 0, 0); // DMA source DRAM, destination USB

        //status =  L2_SetSRAMDMA(0x0);
        //status = L2_DoDMA(3, 1, nByte, 0, 0);
		
        return(status);
}
*/
//-----------------------------------------------------------------------------
//L2_InitUSB
//-----------------------------------------------------------------------------
// SGJM DEL UCHAR L2_InitUSB (UCHAR CamMode) USING_0
/*++

Routine Description:

        initialize USB function

Arguments:

        none

Return Value:

        none

--*/
/*{
//	UCHAR temp = CamMode;
	
	//richie@isp 0326
	G_BulkFlash = 0;

        return(1);      //cytsai@0131


}*/


⌨️ 快捷键说明

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