📄 myfution.c
字号:
Delay(5000);
Mp3DeselectData();//程序执行到这里后应该能从耳机听到一个单一频率的声音
SoftDelay100ns(1);
//退出正弦测试
Mp3SelectData();
SoftDelay100ns(1);
SPIPutChar(0x45);
SPIPutChar(0x78);
SPIPutChar(0x69);
SPIPutChar(0x74);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
Delay(5000);
Mp3DeselectData();
SoftDelay100ns(1);
//再次进入正弦测试并设置n值为0x44,即将正弦波的频率设置为另外的值
Mp3SelectData();
SoftDelay100ns(1);
SPIPutChar(0x53);
SPIPutChar(0xef);
SPIPutChar(0x6e);
SPIPutChar(0x44);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
Delay(5000);
Mp3DeselectData();
//退出正弦测试
Mp3SelectData();
SoftDelay100ns(1);
SPIPutChar(0x45);
SPIPutChar(0x78);
SPIPutChar(0x69);
SPIPutChar(0x74);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
SPIPutChar(0x00);
Delay(5000);
Mp3DeselectData();
}
/*************************************************************/
/* 函数名称 : Mp3WriteRegister */
/* 函数功能 : 写vs1003寄存器 */
/* 参数 : 寄存器地址,待写数据的高8位,待写数据的低8位 */
/* 返回值 : 无 */
/*-----------------------------------------------------------*/
void Mp3WriteRegister(unsigned char addressbyte, unsigned char highbyte, unsigned char lowbyte)
{
Mp3DeselectData(); //XDCS=1
SoftDelay100ns(1);
Mp3SelectControl(); //XCS = 0
SoftDelay100ns(1);
SPIPutChar(VS_WRITE_COMMAND); //发送写寄存器命令
SPIPutChar(addressbyte); //发送寄存器的地址
SPIPutChar(highbyte); //发送待写数据的高8位
SPIPutChar(lowbyte); //发送待写数据的低8位
SoftDelay100ns(1);
Mp3DeselectControl();
}
/*************************************************************/
/* 函数名称 : Mp3ReadRegister */
/* 函数功能 : 写vs1003寄存器 */
/* 参数 : 寄存器地址 */
/* 返回值 : vs1003的16位寄存器的值 */
/*-----------------------------------------------------------*/
unsigned short Mp3ReadRegister(unsigned char addressbyte)
{
unsigned short resultvalue = 0;
Mp3DeselectData();
SoftDelay100ns(1);
Mp3SelectControl();//XCS = 0
SoftDelay100ns(1);
SPIPutChar(VS_READ_COMMAND); //发送读寄存器命令
SPIPutChar((addressbyte)); //发送寄存器的地址
SPIPutChar(0xff); //发送读时钟
resultvalue = SPIReadChar();//读取高8位数据
resultvalue = resultvalue << 8;
SPIPutChar(0xff); //发送读时钟
resultvalue |= SPIReadChar(); //读取低8位数据
SoftDelay100ns(1);
Mp3DeselectControl();
return resultvalue; //返回16位寄存器的值
}
/*************************************************************/
/* 函数名称 : Mp3Play */
/* 函数功能 : Mp3播放 */
/* 参数 : */
/* 返回值 : */
/*-----------------------------------------------------------*/
void Mp3Play(void)
{
int DataCount=0,i,j;
unsigned char *MP3Buf;
// MP3Buf=(unsigned char *)MP3_ADDRESS;
Mp3Reset();
// vs1011_cmd_write(0x00,0x0800); //NEW MODE
// vs1011_cmd_write(0x02,0X75); //BASS
// vs1011_cmd_write(0x03,0X9800); //CLOCK F
// vs1011_cmd_write(0x0b,0X2020); //VOLUME
// Mp3WriteRegister (SPI_CLOCKF, 0x08, 0x04);
// Mp3WriteRegister (SPI_CLOCKF, 0x08, 0x04);
// Mp3WriteRegister (SPI_CLOCKF, 0x08, 0x04);
Mp3SelectData(); //xDCS = 0,选择vs1003的数据接口
SoftDelay100ns(1);
Mp3DeselectControl();
SoftDelay100ns(1);
// switch(which_int)
// {
// case 1:
printf("\nEINT4 had been occured...\n");
// whitch_int=0;
DataCount=0;
// download_addr=0xc090000;
// tftp_main(0xc090000, Env.nic_cfg.ip); //MP3 增加
MP3Buf=(unsigned char *)MP3_ADDRESS;
while((DataCount<(dataLen/32)))// &&(which_int==1)) //102400) //假设400K数据 12800
{
for(i=0;i<32;i++)
{
SPIPutChar(*MP3Buf);
MP3Buf++;
SoftDelay100ns(1);
// for(j=0;j<10;j++);
while (MP3_DREQ_IN == 0);
}
DataCount++;
// while (MP3_DREQ_IN == 0);
}
dataLen=0;
printf("\nmp3 play over\n");
// break;
// case 2:
// printf("\nEINT5 had been occured...\n");
// break;
// case 4:
// printf("\nEINT6 had been occured...\n");
// break;
// case 8:
// printf("\nEINT7 had been occured...\n");
// break;
// default :
// printf("which_int=%d\n",which_int);
// break;
// }
// while(DataCount<(dataLen/32)) //102400) //假设400K数据 12800
// {
// for(i=0;i<32;i++)
// {
// SPIPutChar(*MP3Buf);
// MP3Buf++;
// SoftDelay100ns(1);
// for(j=0;j<10;j++);
// while (MP3_DREQ_IN == 0);
// }
// DataCount++;
// while (MP3_DREQ_IN == 0);
// }
// dataLen=0;
}
/*************************************************************/
/* 函数名称 : PlayMusic */
/* 函数功能 : Mp3播放 */
/* 参数 : */
/* 返回值 : */
/*-----------------------------------------------------------*/
void PlayMucsic(void)
{
int DataCount=0,i,j;
unsigned char *MP3Buf;
MP3Buf=(unsigned char *)(0xc008000);
Mp3Reset();
Mp3SelectData();
SoftDelay100ns(1);
Mp3DeselectControl();
SoftDelay100ns(1);
// NandLoadMusic();
while(which_int==0)
{
for(i=0;i<32;i++)
{
SPIPutChar(*MP3Buf);
MP3Buf++;
SoftDelay100ns(1);
while (MP3_DREQ_IN == 0);
}
DataCount++;
if(DataCount==16000) //播放500K数据
{
DataCount=0;
MP3Buf=(unsigned char *)(0xc008000);
}
}
printf("\nmusic play over\n");
}
/*
//1011测试
void test_1011(void)
{
int DataCount=0,i;
// unsigned char *MP3Buf;
// MP3Buf=(unsigned char *)MP3_ADDRESS;
Mp3Reset();
Mp3SelectData(); //xDCS = 0,选择vs1003的数据接口
SoftDelay100ns(1);
Mp3DeselectControl();
SoftDelay100ns(1);
DataCount=0;
while(DataCount<4800)
{
if(MP3_DREQ_IN)
{
for(i=0;i<32;i++)
{
SPIPutChar(MP3TestBuf[DataCount]);
DataCount++;
}
// if(data_pointer==4799) break; //如果现在的数据不够了,则跳出来
}
}
}
*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -