📄 mp3decodedrv.c
字号:
/*C**************************************************************************
* 文件名: MP3DecodeDrv.c
*----------------------------------------------------------------------------
* 版权: (c) 2004 TGE.
*----------------------------------------------------------------------------
* 释放: Spce061A
* 版本: 1.0
*----------------------------------------------------------------------------
* 目的:
* This is the demonstration software for SPCE061A
*****************************************************************************/
/*_____ 包括 ________________________________________________________*/
#include "..\\spce061\\061reg.h"
#include "MA8201EQINTa.h"
#include "..\\public\\public.h"
#include "mp3decodeDrv.h"
/*_____ 宏 ________________________________________________________*/
/*_____ 定义 ________________________________________________________*/
/*_____ 声明 ________________________________________________________*/
extern unsigned int g_RWBuf[];
unsigned int mp3Volume;
extern unsigned int F_SPI_ReadWord(void);
extern F_SIO_SendData(unsigned int , unsigned int);
extern F_SPI_WriteWord(unsigned int);
const unsigned char VolumeValue[] = {0xfefe,0x9e9e,0x8686,0x7878,0x7373,0x6e6e,0x6969,0x6464,0x5f5f,0x5a5a,0x5555,0x5050,0x4b4b,0x4646,0x4141,0x3b3b,0x3737,0x3232,0x2c2c,0x2828,0x2323,0x1e1e,0x1919,0x1414,0x0f0f,0x0a0a,0x0505,0x0000};
void MP3_VolumeDec()
{
if(mp3Volume>0x00)
mp3Volume--;
MP3VolumeLevel(mp3Volume);
}
void MP3_VolumeInc()
{
if( mp3Volume < (sizeof(VolumeValue)-1) )
mp3Volume++;
MP3VolumeLevel(mp3Volume);
}
void MP3_Init(void)
{
// MUTE_GATE_HIGH()
MA8201HardReset();
DelayMS(10);
MA8201ClearReset();
MA8201Disable();
if(*P_IOB_Data&0x0004)
{
MA8201Enable();
MA8201ClosePlaySong();
MA8201HardReset();
DelayMS(10);
MA8201ClearReset();
MA8201ClosePlaySong();
}
else
MA8201Enable();
MA8201WriteRegister(MA8201_VOL,0xfefe); //(J)mute
MA8201InitialEQ();
MA8201SelectEQ(0);
}
void MA8201WriteRegister(unsigned int wAddr, unsigned int wData)
{
MA8201Enable();
F_SPI_WriteWord(wAddr | MA8201_WRITE);
F_SPI_WriteWord(wData);
MA8201Disable();
}
unsigned int MA8201ReadRegister(unsigned rAddr)
{
unsigned int i;
MA8201Enable();
F_SPI_WriteWord(rAddr | MA8201_READ);
i=F_SPI_ReadWord();
MA8201Disable();
return(i);
}
unsigned MA8201MultiWriteRegister(unsigned int *pWriteData)
{
while( (*pWriteData != 0xff) || ((*(pWriteData+1)&0xff00) != 0xff00) || ( (*(pWriteData+1)&0x00ff ) !=0x00ff) )
{
MA8201WriteRegister( *pWriteData, *(pWriteData+1) );
pWriteData+=3;
}
}
const unsigned int MA8201_INITIAL_SETTING[]=
{
0xff,0xffff
};
const unsigned int MA8201_PLAY_SONG_SETTING[]=
{
MA8201_MODE,0x0000,
MA8201_CLOCKF,0x0000,
MA8201_STATUS,0x0000,
0x00ff,0xffff
};
void MA8201InitialPlaySong(void)
{
unsigned int i;
while(1)
{
MA8201ClearReset();
MA8201WriteRegister(MA8201_MODE,0x0004); //do software reset
DelayMS(2);
if(MA8201ReadRegister(MA8201_MODE)&0x0004)
{
MA8201HardReset();
DelayMS(10);
MA8201ClearReset();
continue;
}
MA8201MultiWriteRegister(MA8201_PLAY_SONG_SETTING);
for(i=0; i<10; i++);
g_RWBuf[i];
F_SIO_SendData(g_RWBuf, 10);
DelayMS(10);
break;
}
MP3VolumeLevel(mp3Volume);//max 25 0
// MA8201WriteRegister(MA8201_VOL,0xfefe);
MA8201SelectEQ(0);
// MA8201WriteRegister(MA8201_CLOCKF,0x8bb8);
MA8201WriteRegister(MA8201_CLOCKF,0x9707);
}
void MA8201ClosePlaySong(void)
{
unsigned int i;
for(i=0; i<512; i++)
g_RWBuf[i]=0x00;
for(i=0; i<4; i++)
F_SIO_SendData(g_RWBuf, 512);
DelayMS(10); //delay 10ms
}
void MA8201InitialEQ(void)
{
unsigned int i;
i=0;
while(EQ8201_Init[i] != 0xff)
{
*P_Watchdog_Clear=0x0001;
MA8201WriteRegister(EQ8201_Init[i],EQ8201_Init[i+1]);
i=i+2;
}
}
const signed int T_EQ[]={1,4,12};
void MA8201SelectEQ(unsigned int mode)
{
if (mode==1)
MA8201WriteRegister(MA8201_A1ADDR,0x4200); //(j) Active EQ
MA8201WriteRegister(MA8201_A1CTRL0,0x0000); //(j) Active EQ
if (mode)
{
mode=T_EQ[mode-1];
MA8201WriteRegister(MA8201_A1CTRL0,mode);
}
else
MA8201WriteRegister(MA8201_A1ADDR,0x0000); //(j) Deactive EQ
}
void MP3VolumeLevel(unsigned int bLevel)
{
MA8201WriteRegister(MA8201_VOL,VolumeValue[bLevel]);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -