unsigned int MP3_wram_read(unsigned int address) { unsigned int tmp1,tmp2; MP3_SCI_Write(SCI_WRAMADDR_ADDR,address); tmp1=MP3_SCI_ReadSingle(SCI_WRAM_ADDR); MP3_SCI_Write(SCI_WRAMADDR_ADDR,address); tmp2=MP3_SCI_ReadSingle(SCI_WRAM_ADDR); if (tmp1==tmp2) return tmp1; MP3_SCI_Write(SCI_WRAMADDR_ADDR,address); tmp1=MP3_SCI_ReadSingle(SCI_WRAM_ADDR); if (tmp1==tmp2) return tmp1; MP3_SCI_Write(SCI_WRAMADDR_ADDR,address); tmp1=MP3_SCI_ReadSingle(SCI_WRAM_ADDR); if (tmp1==tmp2) return tmp1; return tmp1; }
//***********************************************// //MP3_Init //Prototype: void MP3_Init(void) //Description: initial vs1011e chip //Returns: None. //***********************************************// void MP3_Init() { MP3_pin_init(); // Clear BSYNC // Hardware reset MP3_reset(); while (!DREQ); MP3_SCI_Write(SCI_MODE_ADDR, 0x0800); //mode new MP3_SCI_Write(SCI_BASS_ADDR, 0x7A00); MP3_SCI_Write(SCI_CLOCKF_ADDR,0x9800); // default 12 288 000 Hz // // Maximum volume is 0x00 and total silence is 0xFE. // // // volume_right = 40; //0x3F; MP3_Set_Volume( 40, 40); Delay_ms(500); }
//************************************************// //MP3_soft_reset //Prototype: void MP3_soft_reset(unsigned char) //Parameters: volume value after reset. //Description: perform software reset for vs1011e, and set new volume. //Returns: None. //***********************************************// void MP3_soft_reset(unsigned char volume) { MP3_SCI_Write(SCI_MODE_ADDR ,0x0804) ; Delay_ms(1); /* One millisecond delay */ while (!DREQ) /* wait for startup */ ; Delay_ms(100); MP3_SCI_Write(SCI_MODE_ADDR, 0x0800); //mode new MP3_SCI_Write(SCI_BASS_ADDR, 0x7A00); MP3_SCI_Write(SCI_CLOCKF_ADDR,0x9800); // default 12 288 000 Hz // Delay_ms(200); /* One millisecond delay */ MP3_Set_Volume(volume, volume); Delay_ms(100); MP3_SDI_Write(0x00); MP3_SDI_Write(0x00); MP3_SDI_Write(0x00); MP3_SDI_Write(0x00); Delay_ms(100); }
/************************************************************************************************** * Function MP3_Set_Volume() * ------------------------------------------------------------------------------------------------- * Overview: Function set volume on the left and right channel * Input: left channel volume, right channel volume * Output: Nothing **************************************************************************************************/ void MP3_Set_Volume(char left, char right) { unsigned int volume; volume = (left<<8) + right; // calculate value MP3_SCI_Write(SCI_VOL_ADDR, volume); // Write value to VOL register }
void MP3_wram_write(unsigned int address, unsigned int writeData) { MP3_SCI_Write(SCI_WRAMADDR_ADDR, address); MP3_SCI_Write(SCI_WRAM_ADDR, writeData); return; }