AUDIO LIB

Dependents:   HagridOS5

Fork of VS1053 by Vassilis Serasidis

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers VS1053.h Source File

VS1053.h

00001 #ifndef VS1053_H
00002 #define VS1053_H
00003  
00004 #define FIXED_VOL
00005  
00006 // the following two is exclusive use
00007 #define VS_PATCH
00008 //#define VS_SPECANA
00009  
00010 #include "mbed.h"
00011 //#include "SDFileSystem.h"
00012 #include "string"
00013 #include "string.h"
00014  
00015 // SCI register address assignment
00016 #define SCI_MODE    0x0
00017 #define SCI_STATUS  0x1
00018 #define SCI_BASS    0x2
00019 #define SCI_CLOCKF  0x3
00020 #define SCI_DECODE_TOME 0x4
00021 #define SCI_AUDATA  0x5
00022 #define SCI_WRAM    0x6
00023 #define SCI_WRAMADDR 0x7
00024 #define SCI_HDAT0   0x8
00025 #define SCI_HDAT1   0x9
00026 #define SCI_AIADDR  0xA
00027 #define SCI_VOL     0xB
00028 #define SCI_AICTRL0 0xC
00029 #define SCI_AICTRL1 0xD
00030 #define SCI_AICTRL2 0xE
00031 #define SCI_AICTRL3 0xF
00032  
00033  
00034 //SCI_MODE register bits as of p.38 of the datasheet
00035 #define SM_DIFF         0x0001
00036 #define SM_LAYER12      0x0002
00037 #define SM_RESET        0x0004
00038 #define SM_CANCEL       0x0008
00039 #define SM_EARSPEAKER_LO 0x0010
00040 #define SM_TESTS        0x0020
00041 #define SM_STREAM       0x0040
00042 #define SM_EARSPEAKER_HI 0x0080
00043 #define SM_DACT         0x0100
00044 #define SM_SDIORD       0x0200
00045 #define SM_SDISHARE     0x0400
00046 #define SM_SDINEW       0x0800
00047 #define SM_ADPCM        0x1000
00048 #define SM_B13          0x2000
00049 #define SM_LINE1        0x4000
00050 #define SM_CLK_RANGE    0x8000
00051  
00052 //SCI_CLOCKF register bits as of p.42 of the datasheet
00053 #define SC_MULT_XTALI    0x0000
00054 #define SC_MULT_XTALIx20 0x2000
00055 #define SC_MULT_XTALIx25 0x4000
00056 #define SC_MULT_XTALIx30 0x6000
00057 #define SC_MULT_XTALIx35 0x8000
00058 #define SC_MULT_XTALIx40 0xA000
00059 #define SC_MULT_XTALIx45 0xC000
00060 #define SC_MULT_XTALIx50 0xE000
00061 //
00062 #define SC_ADD_NOMOD 0x0000
00063 #define SC_ADD_10x   0x0800
00064 #define SC_ADD_15x   0x1000
00065 #define SC_ADD_20x   0x1800
00066  
00067  
00068 // Extra Parameter in X memory (refer to p.58 of the datasheet)
00069 #define para_chipID_0   0x1E00
00070 #define para_chipID_1   0x1E01
00071 #define para_version    0x1E02
00072 #define para_config1    0x1E03
00073 #define para_playSpeed  0x1E04
00074 #define para_byteRate   0x1E05
00075 #define para_endFillByte    0x1E06
00076 //
00077 #define para_positionMsec_0 0x1E27
00078 #define para_positionMsec_1 0x1E28
00079 #define para_resync         0x1E29
00080  
00081  
00082 class VS1053  {
00083  
00084 public:
00085     VS1053(
00086     //PinName _mmosi, PinName _mmiso, PinName _ssck, PinName _ccs, const char* _name, 
00087     PinName _mosi, PinName _miso, PinName _sck, PinName _cs, PinName _rst, PinName _dreq,
00088     PinName _dcs, PinName _vol);
00089     
00090     void cs_low(void); 
00091     void cs_high(void);
00092     void dcs_low(void);
00093     void dcs_high(void);
00094     void sci_en(void);
00095     void sci_dis(void);
00096     void sdi_en(void);
00097     void sdi_dis(void);
00098     
00099     void sci_initialise(void);
00100     void sdi_initialise(void);
00101     void reset(void);
00102     void power_down(void);
00103  
00104     void sci_write(unsigned char, unsigned short int);
00105     void sdi_write(unsigned char);
00106     unsigned short int sci_read(unsigned short int);
00107     void sine_test_activate(unsigned char);
00108     void volume(uint8_t left, uint8_t right);
00109     void sine_test_deactivate(void);
00110     void writeStream(unsigned char *, int);
00111 #if 0
00112     void putcStream(unsigned char);
00113 #endif
00114     void terminateStream(void);
00115 //    void write_plugin(const unsigned short *, unsigned int);
00116     void initialize(void);
00117        
00118     DigitalIn _DREQ;
00119     DigitalOut _RST;
00120     AnalogIn _VOL;
00121     
00122 protected:
00123     unsigned short int wram_read(unsigned short int);
00124     void wram_write(unsigned short int, unsigned short int);
00125     void write_plugin(const unsigned short *, unsigned int);
00126     SPI _spi;
00127     DigitalOut _CS;
00128     DigitalOut _DCS;
00129     int firstTime;
00130  
00131 };
00132 #endif