|
楼主 |
发表于 2013-4-10 10:17:11
|
显示全部楼层
本帖最后由 黄帅-深圳市源合 于 2013-4-10 10:19 编辑
用MSP430F149(MCLK=SMCLK=8M,SPI高速2分频,低速8分频)和VS1003B、12864做MP3 下附代码: - if(CurrentOffset<(SectorsPerCluster))
- {
- ReadSectorFromCluster(CurrentCluster,CurrentOffset);
- WriteDataToVs1003();
- if(IndexFlag)
- {
- VS1003B_ReadBitRate();
- if(BitRate>99)
- LCD_DisNum(0,0,BitRate);
- else
- LCD_DisNum(0,1,BitRate);
- IndexFlag=0;
- }
- CurrentOffset++;
- }
- else
- {
- CurrentOffset=0;
- CurrentCluster=FindNextCluster(CurrentCluster);
- if(CurrentCluster==0x0ffffff8 || CurrentCluster==0x0fffffff)
- {
- switch(mode)
- {
- case Repet_All:
- if(CurrentAudioFileIndex==AudioFileNumber)
- CurrentAudioFileIndex=1;
- else CurrentAudioFileIndex++;
- break;
- case Repet_One:
- CurrentCluster = GetAudioFile( CurrentAudioFileIndex);
- LCD_Print(3,3,Filestyle);
- CurrentOffset=0;
- break;
- case Shuffle :
- uint rand_val = TAR;
- srand(rand_val);
- CurrentAudioFileIndex = rand()%AudioFileNumber + 1;
- CurrentOffset=0;
- break;
- }
- LCD_Print(2,1," ");
- GetShortAudioFileName(CurrentAudioFileIndex);
- LCD_Print(2,1,ShortFileName);
- }
- }
- }
- .读取比特率和解码时间.spi的速率,变成8分频,也就是1M下附代码:
- uchar ReceiveByte0() //read one byte from spi port
- {
- unsigned char temp=0;
- while ((IFG1 & UTXIFG0)==0); // USCI_A0 TX buffer ready?
- U0TXBUF =0xff; //8 clocks
- temp=U0RXBUF;
- return temp;
- }
- uint VS1003B_ReadCMD(unsigned char addr)
- {
- uint temp;
- while(VS1003B_NeedData()==0);
- SPI0_Low();
- VS1003B_XDCS_H();
- VS1003B_XCS_L();
- SendByte0(0x03);
- SendByte0(addr);
- temp = ReceiveByte0();
- temp <<= 8;
- temp += ReceiveByte0();
- VS1003B_XCS_H();
- SPI0_High();
- return temp;
- }
- uint VS1003B_ReadDecodeTime()
- {
- return VS1003B_ReadCMD(0x04);
- }
- uint VS1003B_ReadBitRate(void)
- {
- uint HDAT0,HDAT1;
- HDAT0=VS1003B_ReadCMD(0x08);
- HDAT1=VS1003B_ReadCMD(0x09);
- switch(HDAT1)
- {
- case 0x7665:return 0;//WAV格式
- case 0X4D54:return 1;//MIDI格式
- case 0X574D://WMA格式
- {
- HDAT1=HDAT0*2/25;
- if((HDAT1%10)>5)return HDAT1/10+1;
- else return HDAT1/10;
- }
- default://MP3格式
- {
- HDAT1>>=3;
- HDAT1=HDAT1&0x03;
- if(HDAT1==3)HDAT1=1;
- else HDAT1=0;
- return BitRate_Table[HDAT1][HDAT0>>12];
- }
- }
- }
复制代码 |
|