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