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

📄 myfution.c.bak

📁 自己编写移植的基于s3c44b0的bootloader源代码
💻 BAK
📖 第 1 页 / 共 2 页
字号:
	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 + -