📄 vs1003.c
字号:
#include <iom64v.h>
#include <macros.h>
#include "vs1003.h"
void spi_init(void)
{
/*DDRB = 0xFF;
DDRE = 0xFF;
DDRF = 0xFF;*/
SPCR = 0x53; //setup SPI
SPSR = 0x00; //setup SPI
}
void mp3_port_init()
{
spi_init();
MP3_DDRB|= MP3_SI | MP3_SCK;
MP3_DDRE|= MP3_DATA_REST;
MP3_DDRF|= MP3_CMD_CS | MP3_DATA_CS;
MP3_DDRE&=~MP3_DATA_REQ;
MP3_PORTF|= MP3_DATA_CS |MP3_CMD_CS;
MP3_PORTE|= MP3_DATA_REST;
}
void Write_Byte_MMC(unsigned char byte)
{
SPDR = byte;
while (!(SPSR & (1<<SPIF)));
}
unsigned char Read_Byte_MMC(void)
{
SPDR = 0xFF;
while (!(SPSR &(1<<SPIF)));
return SPDR;
}
void vs1003_data_write(uchar data)
{
MP3_PORTF&=~MP3_DATA_CS; //MP3_DATA_CS=0;
Write_Byte_MMC(data);
MP3_PORTF|=MP3_DATA_CS; //MP3_DATA_CS=1;
}
void vs1003_cmd_write(uchar address,uint data)
{
MP3_PORTF&=~MP3_CMD_CS; //MP3_CMD_CS=0;
Write_Byte_MMC(0x02); //VS1011的写命令
Write_Byte_MMC(address); //地址
Write_Byte_MMC(data>>8);
Write_Byte_MMC(data);
MP3_PORTF|=MP3_CMD_CS; //MP3_CMD_CS=1;
}
void vs1003_init(void)
{
vs1003_cmd_write(0x00,0x0800); //NEW MODE
vs1003_cmd_write(0x02,0x75); //BASS
vs1003_cmd_write(0x03,0x9800); //CLOCK F
vs1003_cmd_write(0x0b,0x2020); //VOLUME
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -