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

📄 vs1003b.h

📁 mp3量不要让站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 H
字号:
/*******************************************************************/
/*          VS1003 diriver for  Mega8 MP3 Player                   */
/*                                                                 */
/* Platform   : AVRStudio4.13 b528 + WinAVR20070122                */
/*              optimize -0s                                       */
/* Author     : bozai(Zhang Qibo)                                  */
/* E-mail     : sudazqb@163.com                                    */
/* MSN        : zhangqibo_1985@hotmail.com                         */
/* Date       : 2006-05-09                                         */
/*******************************************************************/
/*  20080928: modify codes for ARM platform (NXP LPC2132)  */
/*  20071212: modify code for mcuzone's mp3 player */
/*  20071208: modify codes for ARM platform (AT91SAM7S256)  */
/*2007-11-22: add bass tremble control                             */
/*2007-10-21: add new functions,                                   */
/*2007-10-19: use new delay function                               */
/*2007-05-04: add slow start up code, and add enough delay         */
/*2007-04-21:                                                      */

#ifndef __VS1003B_H__
#define __VS1003B_H__

//#include "board.h"
#include "global.h"

#define _delay_ms soft_delay_ms

#define TREMBLE_VALUE	8		/* 0~15, 8 means off  */
#define TREMBLE_LOW_FS	8		/* 0~15, 0Hz-15KHz, lower frequency of tremble enhancement */
#define BASS_VALUE		8		/* 0~15, 0 means off  */
#define BASS_HIGH_FS	8		/* 2~15, up limit frequency of bass enhancement */

#define DEFAULT_BASS_TREMBLE ((TREMBLE_VALUE<<12)|(TREMBLE_LOW_FS<<8)|(BASS_VALUE<<4)|(BASS_HIGH_FS))

#define DEFAULT_VOLUME 0x2828	/* default volumn */

#define CLOCK_REG       0xe000          // XTALI*4.5, 12.288*4.5 = 55.296, a bit higher than the maxmum frequency
//#define CLOCK_REG       0xc000          //0xc00 is fow VS1003 or higher version
//#define CLOCK_REG       0x9800        //0x9800 is for VS1011 VS1002

#if 0
#define VS1003B_XCS		(1<<16)
#define VS1003B_DREQ	(1<<20)
#define VS1003B_XDCS	(1<<23)
#define VS1003B_XRESET	(1<<22)
#define VS1003B_SCK		(1<<14)
#define VS1003B_MOSI	(1<<13)
#define VS1003B_MISO	(1<<12)
#endif

#if 0
#define VS1003B_XCS		(1<<11)
#define VS1003B_DREQ	(1<<21)
#define VS1003B_XDCS	(1<<22)
#define VS1003B_XRESET	(1<<20)
#define VS1003B_SCK		(1<<14)
#define VS1003B_MOSI	(1<<13)
#define VS1003B_MISO	(1<<12)

/********************************************************************************/

/* port initialization */
#define PORT_INI(){\
		pPIO->PIO_SODR = VS1003B_XCS|VS1003B_XDCS|VS1003B_XRESET;\
		pPIO->PIO_PER = VS1003B_XCS|VS1003B_XDCS|VS1003B_XRESET|VS1003B_DREQ;	\
		pPIO->PIO_OER = VS1003B_XCS|VS1003B_XDCS|VS1003B_XRESET;	\
		pPIO->PIO_ODR = VS1003B_DREQ;\
					}

#define VS1003B_XCS_H()    pPIO->PIO_SODR = VS1003B_XCS
#define VS1003B_XCS_L()    pPIO->PIO_CODR = VS1003B_XCS

#define VS1003B_XRESET_H()    pPIO->PIO_SODR = VS1003B_XRESET
#define VS1003B_XRESET_L()    pPIO->PIO_CODR = VS1003B_XRESET

#define VS1003B_XDCS_H()    pPIO->PIO_SODR = VS1003B_XDCS
#define VS1003B_XDCS_L()    pPIO->PIO_CODR = VS1003B_XDCS
#endif

//p0.07		
#define  	SPI0_CS      				(0x01 << 7)              	 	
#define  	SPI0_CS_GPIO()				PINSEL0 &= ~(0x03 << 14)	 	
#define  	SPI0_CS_OUT()				IO0DIR |= SPI0_CS;			 	
#define	 	VS1003B_XCS_H()				IO0SET |= SPI0_CS;				
#define		VS1003B_XCS_L()				IO0CLR |= SPI0_CS;				
		

//P1.24 
#define  	VS1003_XDCS					(0x01 << 24)		
#define  	VS1003_XDCS_GPIO()			PINSEL2 &= ~(0x02 <<4)			
#define  	VS1003_XDCS_OUT()			IO1DIR |= VS1003_XDCS			
#define  	VS1003B_XDCS_H()  			IO1SET |= VS1003_XDCS			
#define  	VS1003B_XDCS_L()  			IO1CLR |= VS1003_XDCS			

//p0.03
#define  	VS1003_XRESET				(0x01 << 3)		
#define  	VS1003_XRESET_GPIO()		PINSEL0 &= ~(0x03 << 6)			
#define  	VS1003_XRESET_OUT()			IO0DIR |= VS1003_XRESET			
#define  	VS1003B_XRESET_H()  		IO0SET = VS1003_XRESET		
#define  	VS1003B_XRESET_L()  		IO0CLR = VS1003_XRESET			

//p1.25
#define  	VS1003_DREQ					(0x01 << 25)		
#define  	VS1003_DREQ_GPIO()			PINSEL2	&= ~(0x02 <<4)			
#define  	VS1003_DREQ_IN()			IO1DIR  &= ~VS1003_DREQ			
#define  	VS1003_DREQ_STATE()  		(IO1PIN & VS1003_DREQ)		


#define PORT_INI() {\
	SPI0_CS_GPIO();\
	SPI0_CS_OUT();\
	VS1003B_XCS_H()\
\
	VS1003_XDCS_GPIO();\
	VS1003_XDCS_OUT();\
	VS1003B_XDCS_H() ;\
\
	VS1003_XRESET_GPIO();\
	VS1003_XRESET_OUT();\
	VS1003B_XRESET_H();\
\
	VS1003_DREQ_GPIO();\
	VS1003_DREQ_IN();\
			PINSEL0 &= ~((0x03 << 8) + (0x03 << 10) + (0x03 << 12));\
	PINSEL0 |=  (0x01 << 8) + (0x01 << 10) + (0x01 << 12);	\
}

/*****************************************************************************************/

extern unsigned char VS1003B_Init(void);	/* Initialization, include prot and chip config */
extern void VS1003B_SoftReset(void);		/* Software reset, clear decode time and jump out midi or wma playing*/
extern unsigned short VS1003B_ReadDecodeTime(void);	/* Get current decode time, for time display */
extern void VS1003B_Fill2048Zero(void);	/* fill 32bytes zero, for wma and midi zero filling */
extern void VS1003B_Write32B(unsigned char * buf);	/* write 32bytes data */
extern unsigned char VS1003B_NeedData(void);	/* Check if it need data */
extern void VS1003B_SetVolume(unsigned short vol); /* Set volume */

/****************************************************************************************/
#endif

⌨️ 快捷键说明

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