📄 vs1001.h
字号:
#ifndef __vs1001_h
#define __vs1001_h
//******************************************************************
//* Definitions
//******************************************************************
//#define XRES PORTC.4
#define ENABLE_XRES() PORTC |= (1 << 4) //PORTC.3
#define DISABLE_XRES() PORTC &= ~(1 << 4) //PORTC.3
#define VS_SO PINC & (1 << 0)
//#define VS_SO PINC.0
#define VS_SI PORTC.1
#define VS_SCK PORTC.2
#define DISABLE_XCS() PORTC |= (1 << 3) //PORTC.3
#define ENABLE_XCS() PORTC &= ~(1 << 3) //PORTC.3
#define DISABLE_XDCS() PORTC |= (1 << 6) //PORTC.6
#define ENABLE_XDCS() PORTC &= ~(1 << 6) //PORTC.6
#define DREQ PINC.5
#define SOFT 0
#define HARD 1
// VS1011 commands
#define VS_READ 0x03 // Read Opcode
#define VS_WRITE 0x02 // Write Opcode
// VS1011 registers
#define VS_MODE 0x00 // Mode control
#define VS_STATUS 0x01 // Status of VS1011b
#define VS_BASS 0x02 // Built-in bass enhancer
#define VS_CLOCKF 0x03 // Clock freq + doubler
#define VS_DECODE_TIME 0x04 // Decode time in seconds
#define VS_AUDATA 0x05 // Misc. audio data
#define VS_WRAM 0x06 // RAM write
#define VS_WRAMADDR 0x07 // Base address for RAM write
#define VS_HDAT0 0x08 // Stream header data 0
#define VS_HDAT1 0x09 // Stream header data 1
#define VS_AIADDR 0x0A // Start address of application
#define VS_VOL 0x0B // Volume control
#define VS_AICTRL0 0x0C // Application control register 0
#define VS_AICTRL1 0x0D // Application control register 1
#define VS_AICTRL2 0x0E // Application control register 2
#define VS_AICTRL3 0x0F // Application control register 3
// Bit definition Mode Register
#define SM_DIFF 0 // Differential
#define SM_SETTOZERO1 1 // Set to zero
#define SM_RESET 2 // Soft Reset
#define SM_OUTOFWAV 3 // Jump out of WAV decoding
#define SM_SETTOZERO2 4 // Set to zero
#define SM_TESTS 5 // Allow SDI tests
#define SM_STREAM 6 // Stream mode
#define SM_SETTOZERO3 7 // Set to zero
#define SM_DACT 8 // DCLK active edge
#define SM_SDIORD 9 // SDI bit order
#define SM_SDISHARE 10 // Share SPI chip select
#define SM_SDINEW 11 // VS1002 native SPI modes
#define SM_SETTOZERO4 12 // Set to zero
#define SM_SETTOZERO5 13 // Set to zero
// Bit definition Status Register
#define SS_APDOWN1 2 // Analog internal power down
#define SS_APDOWN2 3 // Analog driver power down
// Mask definition Bass Enhancer Register
#define SB_AMPLITUDE 0xF0 // Enhancement in -1dB steps (0-15)
#define SB_FREQLIMIT 0x0F // Low frequency limit in 10Hz steps (2-15)
// Mask and bit definitions for Stream Header data Register
#define HDAT0_EMPHAS 0x0003 // Emphasis
#define HDAT0_ORIGIN 2 // Original bit
#define HDAT0_COPY 3 // Copyright bit
#define HDAT0_EXT 0x0030 // Extension
#define HDAT0_MODE 0x00C0 // Mode
#define HDAT0_PRIV 8 // Private bit
#define HDAT0_PAD 9 // Pad bit
#define HDAT0_SAMRATE 0x0C00 // Sample rate
#define HDAT0_BITRATE 0xF000 // Bit rate
#define HDAT1_PROT 0 // Protection bit
#define HDAT1_LAYER 0x0006 // Layer
#define HDAT1_ID 0x0018 // ID
#define HDAT1_SYNC 0xFFE0 // Sync word
//#define VS1033_XTAL 12288000
#define VS1033_XTAL 12000000
//******************************************************************
//* FUNCTION PROTOTYPES
//******************************************************************
void vs_init(unsigned char HardReset);
void vs_setvolume(unsigned char volume);
void vs_stream(unsigned char *Data,unsigned char Qte);
void vs_write(unsigned char addr, unsigned int data);
void Sine_On(unsigned char Freq);
void Sine_Off(void);
void vs_beep(void);
unsigned char WriteByte(unsigned char data);
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -