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

📄 l1_audio.c

📁 台湾凌阳方案300万数码相机源代码
💻 C
字号:
/*++

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

Module Name:

        L1_PC.c

Abstract:

        PC related upload/download function

Environment:

        Keil C51 Compiler

Revision History:

        11/30/2001      cclin    created                 

--*/

//=============================================================================
//Header file
//=============================================================================
#include "general.h"
#include "main.h"

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

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

//=============================================================================
//Program
//=============================================================================
//-----------------------------------------------------------------------------
//L1_RecordAudio
//-----------------------------------------------------------------------------
UCHAR L1_RecordAudio(ULONG DRAMAddr, ULONG FlashAddr, ULONG FileSize, UCHAR AudFormat)   
{
	
	ULONG DMAAudCnt;
	ULONG AudBufCnt; 
	ULONG DMANandCnt;
	ULONG DMANandSize; 
	ULONG *pAudBufCnt = 0; // WWWW

        //PRINT_L1("    L1_RecordAudio: Enter.\n");

	DMANandSize = FileSize/0x2000; // DMA to Nand 8K at a time

        //PRINT_L1("DMANandSize = %lx\n", DMANandSize);
        //PRINT_L1("AudFormat = %bx\n", AudFormat);
        //PRINT_L1("FlashAddr = %lx\n", FlashAddr);
        //PRINT_L1("DRAMAddr = %lx\n", DRAMAddr);

	L2_StopAud();
	//L2_RecordAud(DRAMAddr, AudBufSize, AudFormat);
	//L2_RecordAud(0, 0x03, 0x62); // adpcm
	L2_RecordAudDMAMode(AudFormat);
	//L2_RecordAudDMAMode(0x62);

	for(DMANandCnt=0;DMANandCnt<DMANandSize;DMANandCnt++)
	{	
                for(DMAAudCnt=0;DMAAudCnt<0x10;DMAAudCnt++) // 16 times DMA to DRAM account for 8K bytes        {
                {
                        L2_ReadAudBufCnt(pAudBufCnt);
                        AudBufCnt = ((ULONG)XBYTE[0x26b5]<<8) | ((ULONG)XBYTE[0x26b4]);

                        while (AudBufCnt<0x200) // DMA to DRAM when audio data over 512 bytes
                        {
                                AudBufCnt = ((ULONG)XBYTE[0x26b5]<<8) | ((ULONG)XBYTE[0x26b4]); 
                        }

                        L2_SetDRAMDMA(DRAMAddr + DMAAudCnt*0x100);
                        L2_DoDMA(3,0,0x200,0,0);

                } // for (DMAAudCnt
		L1_DRAMtoNAND(0, FlashAddr+DMANandCnt*0x2000, 0x2000);
	} // for (DMANandCnt
	
	L2_StopAud();

        //PRINT_L1("    L1_RecordAudio: Exit.\n");  

	return L1K_SUCCESS;
}

//-----------------------------------------------------------------------------
//L1_PlaybackAudio
//-----------------------------------------------------------------------------
UCHAR L1_PlaybackAudio(ULONG DRAMAddr, ULONG FlashAddr, ULONG FileSize, UCHAR AudFormat, UCHAR PlayFreq)   
{
	
	ULONG DMACnt;
	ULONG AudBufCnt; 
	ULONG DMASize;
        //ULONG *pDRAMAudBufCnt;

        //PRINT_L1("    L1_PlaybackAudio: Enter.\n");

	L2_StopAud();
	
	DMASize = FileSize/0x1000; // DMA to DRAM 4K at a time
	L2_PlayAud(DRAMAddr, 3, AudFormat, PlayFreq);
	L2_SetDRAMAudDMACnt(1);

	// 8K audio buffer in DRAM as 4K-4K AB buffer 
	for (DMACnt=0;DMACnt<DMASize;DMACnt++)
	{
		if(DMACnt%2==0)
			L1_NANDtoDRAM(DRAMAddr, FlashAddr+DMACnt*0x1000, 0x1000);
		else 
			L1_NANDtoDRAM(DRAMAddr + 0x800, FlashAddr+DMACnt*0x1000, 0x1000);

		L2_ReadDRAMAudBufCnt(&AudBufCnt);
		while (AudBufCnt>512)
		{
                        L2_ReadDRAMAudBufCnt(&AudBufCnt);
		}
	}

	//L2_StopAud();

        //PRINT_L1("    L1_PlaybackAudio: Exit.\n");  

        return L1K_SUCCESS;
}

⌨️ 快捷键说明

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