📄 vs1003.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 + -