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

📄 1011._c

📁 用AVR的MP3代码
💻 _C
字号:
#include <iom64v.h>
#include <macros.h>
#include "delay.h"
#define uchar unsigned char
#define uint unsigned int

#define MP3_DDR        DDRB
#define MP3_PORT       PORTB
#define MP3_PIN        PINB
#define MP3_CMD_CS     BIT(4)
#define MP3_DATA_REST  BIT(5) 
#define MP3_DATA_REQ   BIT(6)  
#define MP3_DATA_CS    BIT(7)

/*void delay_nus(unsigned int n)
{
	unsigned char  b;
        
  	for (b = 1; b<n; b++)
    {
		;
  	}
}*/

//SPI initialize
void spi_init(void)
{
 	DDRB = 0xBF;    //SI输入,SO,SCK,SS输出
 	SPCR = 0x50;  //setup SPI
 	SPSR = 0x01;  //setup SPI
}

void mp3_port_init()
{
	spi_init();
	MP3_DDR|=MP3_DATA_CS |MP3_CMD_CS|MP3_DATA_REST;
	MP3_DDR&=~MP3_DATA_REQ;
	MP3_PORT|=MP3_DATA_CS |MP3_CMD_CS|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_cmd_write(uchar address,uint data)
{ 
	SPCR = 0x53;  //
	SPSR = 0x00;  //低速度spi
	//============== 
	MP3_PORT|=MP3_DATA_CS;       //MP3_DATA_CS=1;
	MP3_PORT&=~MP3_CMD_CS;       //MP3_CMD_CS=0;
	Write_Byte_MMC(0x02);      //VS1011的写命令
	delay_nus(40);
	Write_Byte_MMC(address);   //地址
	Write_Byte_MMC(data>>8);
	Write_Byte_MMC(data);
	delay_nus(200);
	MP3_PORT|=MP3_CMD_CS;       //MP3_CMD_CS=1;

	SPCR = 0x50;  //
	SPSR = 0x01;  //高速spi
	//========================= 
} 

void vs1003_data_write(uchar data)
{
	MP3_PORT&=~MP3_DATA_CS;         //MP3_DATA_CS=0;
	Write_Byte_MMC(data);
	MP3_PORT|=MP3_DATA_CS;         //MP3_DATA_CS=1;
	MP3_PORT|=MP3_CMD_CS;         //MP3_CMD_CS=1; 
}

uint vs1003_read(uchar address)
{
	uchar temp1=0;
	uint temp=0; 
	MP3_PORT|=MP3_DATA_CS;        //MP3_DATA_CS=1;
	MP3_PORT&=~MP3_CMD_CS;        //MP3_CMD_CS=0;
	Write_Byte_MMC(0x03);      //VS1011的读命令
	delay_nus(30);
	Write_Byte_MMC(address);   //地址
	temp=Read_Byte_MMC();
	temp=temp<<8;
	temp1=Read_Byte_MMC();
	temp=temp|temp1; 
	MP3_PORT|=MP3_CMD_CS;       //MP3_CMD_CS=1;
	
    return temp;
}

void vs1003_init(void)
{
	vs1003_cmd_write(0x00,0x0800);    	//NEW MODE
	vs1003_cmd_write(0x0b,0X1010);    	//VOLUME
	vs1003_cmd_write(0x02,0X1fff);     	//BASS
	vs1003_cmd_write(0x03,0X4000);     	//CLOCK F
}

 

⌨️ 快捷键说明

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