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

📄 vs1003.c

📁 Mp3 Player using ATmega128, VS1003B, Character LCD. Test OK.Good Sound.
💻 C
字号:
#include "vs1003.h"
#include "../delay.h"
#include "../spi.h"
#include "../global.h"
#include "../usart.h"


extern U8	Mp3Volume;

void VS1003_Init(void)//VS1003 檬扁拳
{
	U16 hexdata=0;
	SPI_Init();

	SPI_Mode(0);

	sbi(VS1003_DDR, VS1003_RESET);		// RESET output
	sbi(VS1003_DDR, VS1003_xCS);		// xCS output
	sbi(VS1003_DDR, VS1003_xDCS);		// xDCS output
	cbi(VS1003_DDR, VS1003_DREQ);		// DREQ input

	VS1003_XCS_HIGH();
	VS1003_XDCS_HIGH();
	VS1003_RESET_HIGH();	

	VS1003_Reset();

	//------vs1003 0锅 饭瘤胶磐 佬扁--------
	string("\n\nvs1003 Read 0x00 -> ");

	hexdata=VS1003_Read_SCI_data(0x00);
	hextoasc(hexdata>>8);
	hextoasc(hexdata);

	//------vs1003 3锅 饭瘤胶磐绢 静扁------
  	// clock汲沥
// 	VS1003_Write_SCI_Data(VS1003_CLOCKF, 0x9800);		// 12.288Mhz  0x8000篮 3* 歹窍扁 0x1800篮 1.5*
  	VS1003_Write_SCI_Data(VS1003_CLOCKF, 0x4000);

	//------vs1003 3锅 饭瘤胶磐绢 佬扁------
	string("\nvs1003 CLK Speed -> ");	
	hexdata=VS1003_Read_SCI_data(0x03);
	hextoasc(hexdata>>8);
	hextoasc(hexdata);

	VS1003_Set_Volume(Mp3Volume);	// 杭俘汲沥, volume = 0 ~ 254
}


void VS1003_Reset(void)		//vs1003抹 窍靛傀绢 府悸 贸府
{
	VS1003_RESET_LOW();
	delay_ms(200);
	VS1003_RESET_HIGH();

  	while(VS1003_DREQ_PIN == 0);
}


U16 VS1003_Read_SCI_data(U8 address)		//SCI单捞磐 佬扁
{
	
	U16 data_temp16;
	U8 	data_temp8;
	SPI_Mode(0);

	VS1003_XCS_LOW();

	SPI_Transfer_Byte(VS1003_COMMAND_READ);
	SPI_Transfer_Byte(address);

	data_temp8 = SPI_Transfer_Byte(0xFF);
	data_temp16 = data_temp8 << 8;
	data_temp8 = SPI_Transfer_Byte(0xFF);
	data_temp16 |= data_temp8;


	VS1003_XCS_HIGH();

	return data_temp16;
}

void VS1003_Write_SCI_Data(U8 address, U16 data)	//SCI单捞磐 朝府扁
{
	SPI_Mode(0);

	VS1003_XCS_LOW();			// VS1003 劝己拳

	SPI_Transfer_Byte(VS1003_COMMAND_WRITE);
	SPI_Transfer_Byte(address);

	SPI_Transfer_Byte(data>>8);
	SPI_Transfer_Byte(data);

	VS1003_XCS_HIGH();			// VS1003 厚劝己拳
}

void VS1003_Set_Volume(U16 volume)	// 杭俘汲沥, volume = 0 ~ 254
{
	U16 vol;

	SPI_Mode(0);

	if(volume > 254)
		volume = 254;	// 杭俘狼 弥措蔼 茄拌 汲沥
	if(volume < 0)
		volume = 0;		// 杭俘狼 弥家蔼 茄拌 汲沥

	vol = (254 - volume);

	VS1003_Write_SCI_Data(VS1003_VOLUME, (vol<<8) | vol); // 杭俘阑 臭捞芭唱 郴覆

	delay_ms(10);	// 陋篮 矫埃 瘤楷
}

void VS1003_Get_Mp3info(struct VS1003_Mp3Info* Mp3Info)
{
	U16 temp=0;

	temp=VS1003_Read_SCI_data(VS1003_HEDATA1);

	Mp3Info->mp3_ID = (U8)((temp & 0x0018) >> 3);

	temp=0;

	temp=VS1003_Read_SCI_data(VS1003_HEDATA0);

	Mp3Info->sample_rate = (U8)((temp & 0x0C00) >> 10);

	Mp3Info->bit_rate = (U8)((temp & 0xF000) >> 12);
}

U16 VS1003_Get_DecodeTime(void)
{
	U16 temp=0;
	temp=VS1003_Read_SCI_data(VS1003_DCTIME);	

	return temp;
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -