AUDIO LIB

Dependents:   HagridOS5

Fork of VS1053 by Vassilis Serasidis

Committer:
Hagrid
Date:
Wed Feb 21 14:57:39 2018 +0000
Revision:
9:e5337a55871a
Parent:
8:5ad25d480d5f
Add feature to my project

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Hagrid 9:e5337a55871a 1 #ifndef VS1053_H
Hagrid 9:e5337a55871a 2 #define VS1053_H
Hagrid 9:e5337a55871a 3
Hagrid 9:e5337a55871a 4 #define FIXED_VOL
Hagrid 9:e5337a55871a 5
Hagrid 9:e5337a55871a 6 // the following two is exclusive use
Hagrid 9:e5337a55871a 7 #define VS_PATCH
Hagrid 9:e5337a55871a 8 //#define VS_SPECANA
Hagrid 9:e5337a55871a 9
Hagrid 9:e5337a55871a 10 #include "mbed.h"
Hagrid 9:e5337a55871a 11 //#include "SDFileSystem.h"
Hagrid 9:e5337a55871a 12 #include "string"
Hagrid 9:e5337a55871a 13 #include "string.h"
Hagrid 9:e5337a55871a 14
Hagrid 9:e5337a55871a 15 // SCI register address assignment
Hagrid 9:e5337a55871a 16 #define SCI_MODE 0x0
Hagrid 9:e5337a55871a 17 #define SCI_STATUS 0x1
Hagrid 9:e5337a55871a 18 #define SCI_BASS 0x2
Hagrid 9:e5337a55871a 19 #define SCI_CLOCKF 0x3
Hagrid 9:e5337a55871a 20 #define SCI_DECODE_TOME 0x4
Hagrid 9:e5337a55871a 21 #define SCI_AUDATA 0x5
Hagrid 9:e5337a55871a 22 #define SCI_WRAM 0x6
Hagrid 9:e5337a55871a 23 #define SCI_WRAMADDR 0x7
Hagrid 9:e5337a55871a 24 #define SCI_HDAT0 0x8
Hagrid 9:e5337a55871a 25 #define SCI_HDAT1 0x9
Hagrid 9:e5337a55871a 26 #define SCI_AIADDR 0xA
Hagrid 9:e5337a55871a 27 #define SCI_VOL 0xB
Hagrid 9:e5337a55871a 28 #define SCI_AICTRL0 0xC
Hagrid 9:e5337a55871a 29 #define SCI_AICTRL1 0xD
Hagrid 9:e5337a55871a 30 #define SCI_AICTRL2 0xE
Hagrid 9:e5337a55871a 31 #define SCI_AICTRL3 0xF
Hagrid 9:e5337a55871a 32
silis 7:97a8edd44fe9 33
Hagrid 9:e5337a55871a 34 //SCI_MODE register bits as of p.38 of the datasheet
Hagrid 9:e5337a55871a 35 #define SM_DIFF 0x0001
Hagrid 9:e5337a55871a 36 #define SM_LAYER12 0x0002
Hagrid 9:e5337a55871a 37 #define SM_RESET 0x0004
Hagrid 9:e5337a55871a 38 #define SM_CANCEL 0x0008
Hagrid 9:e5337a55871a 39 #define SM_EARSPEAKER_LO 0x0010
Hagrid 9:e5337a55871a 40 #define SM_TESTS 0x0020
Hagrid 9:e5337a55871a 41 #define SM_STREAM 0x0040
Hagrid 9:e5337a55871a 42 #define SM_EARSPEAKER_HI 0x0080
Hagrid 9:e5337a55871a 43 #define SM_DACT 0x0100
Hagrid 9:e5337a55871a 44 #define SM_SDIORD 0x0200
Hagrid 9:e5337a55871a 45 #define SM_SDISHARE 0x0400
Hagrid 9:e5337a55871a 46 #define SM_SDINEW 0x0800
Hagrid 9:e5337a55871a 47 #define SM_ADPCM 0x1000
Hagrid 9:e5337a55871a 48 #define SM_B13 0x2000
Hagrid 9:e5337a55871a 49 #define SM_LINE1 0x4000
Hagrid 9:e5337a55871a 50 #define SM_CLK_RANGE 0x8000
Hagrid 9:e5337a55871a 51
Hagrid 9:e5337a55871a 52 //SCI_CLOCKF register bits as of p.42 of the datasheet
Hagrid 9:e5337a55871a 53 #define SC_MULT_XTALI 0x0000
Hagrid 9:e5337a55871a 54 #define SC_MULT_XTALIx20 0x2000
Hagrid 9:e5337a55871a 55 #define SC_MULT_XTALIx25 0x4000
Hagrid 9:e5337a55871a 56 #define SC_MULT_XTALIx30 0x6000
Hagrid 9:e5337a55871a 57 #define SC_MULT_XTALIx35 0x8000
Hagrid 9:e5337a55871a 58 #define SC_MULT_XTALIx40 0xA000
Hagrid 9:e5337a55871a 59 #define SC_MULT_XTALIx45 0xC000
Hagrid 9:e5337a55871a 60 #define SC_MULT_XTALIx50 0xE000
Hagrid 9:e5337a55871a 61 //
Hagrid 9:e5337a55871a 62 #define SC_ADD_NOMOD 0x0000
Hagrid 9:e5337a55871a 63 #define SC_ADD_10x 0x0800
Hagrid 9:e5337a55871a 64 #define SC_ADD_15x 0x1000
Hagrid 9:e5337a55871a 65 #define SC_ADD_20x 0x1800
Hagrid 9:e5337a55871a 66
Hagrid 9:e5337a55871a 67
Hagrid 9:e5337a55871a 68 // Extra Parameter in X memory (refer to p.58 of the datasheet)
Hagrid 9:e5337a55871a 69 #define para_chipID_0 0x1E00
Hagrid 9:e5337a55871a 70 #define para_chipID_1 0x1E01
Hagrid 9:e5337a55871a 71 #define para_version 0x1E02
Hagrid 9:e5337a55871a 72 #define para_config1 0x1E03
Hagrid 9:e5337a55871a 73 #define para_playSpeed 0x1E04
Hagrid 9:e5337a55871a 74 #define para_byteRate 0x1E05
Hagrid 9:e5337a55871a 75 #define para_endFillByte 0x1E06
Hagrid 9:e5337a55871a 76 //
Hagrid 9:e5337a55871a 77 #define para_positionMsec_0 0x1E27
Hagrid 9:e5337a55871a 78 #define para_positionMsec_1 0x1E28
Hagrid 9:e5337a55871a 79 #define para_resync 0x1E29
Hagrid 9:e5337a55871a 80
Hagrid 9:e5337a55871a 81
Hagrid 9:e5337a55871a 82 class VS1053 {
Hagrid 9:e5337a55871a 83
kayekss 0:708868399033 84 public:
Hagrid 9:e5337a55871a 85 VS1053(
Hagrid 9:e5337a55871a 86 //PinName _mmosi, PinName _mmiso, PinName _ssck, PinName _ccs, const char* _name,
Hagrid 9:e5337a55871a 87 PinName _mosi, PinName _miso, PinName _sck, PinName _cs, PinName _rst, PinName _dreq,
Hagrid 9:e5337a55871a 88 PinName _dcs, PinName _vol);
kayekss 0:708868399033 89
Hagrid 9:e5337a55871a 90 void cs_low(void);
Hagrid 9:e5337a55871a 91 void cs_high(void);
Hagrid 9:e5337a55871a 92 void dcs_low(void);
Hagrid 9:e5337a55871a 93 void dcs_high(void);
Hagrid 9:e5337a55871a 94 void sci_en(void);
Hagrid 9:e5337a55871a 95 void sci_dis(void);
Hagrid 9:e5337a55871a 96 void sdi_en(void);
Hagrid 9:e5337a55871a 97 void sdi_dis(void);
silis 7:97a8edd44fe9 98
Hagrid 9:e5337a55871a 99 void sci_initialise(void);
Hagrid 9:e5337a55871a 100 void sdi_initialise(void);
Hagrid 9:e5337a55871a 101 void reset(void);
Hagrid 9:e5337a55871a 102 void power_down(void);
Hagrid 9:e5337a55871a 103
Hagrid 9:e5337a55871a 104 void sci_write(unsigned char, unsigned short int);
Hagrid 9:e5337a55871a 105 void sdi_write(unsigned char);
Hagrid 9:e5337a55871a 106 unsigned short int sci_read(unsigned short int);
Hagrid 9:e5337a55871a 107 void sine_test_activate(unsigned char);
Hagrid 9:e5337a55871a 108 void volume(uint8_t left, uint8_t right);
Hagrid 9:e5337a55871a 109 void sine_test_deactivate(void);
Hagrid 9:e5337a55871a 110 void writeStream(unsigned char *, int);
Hagrid 9:e5337a55871a 111 #if 0
Hagrid 9:e5337a55871a 112 void putcStream(unsigned char);
Hagrid 9:e5337a55871a 113 #endif
Hagrid 9:e5337a55871a 114 void terminateStream(void);
Hagrid 9:e5337a55871a 115 // void write_plugin(const unsigned short *, unsigned int);
Hagrid 9:e5337a55871a 116 void initialize(void);
Hagrid 9:e5337a55871a 117
Hagrid 9:e5337a55871a 118 DigitalIn _DREQ;
Hagrid 9:e5337a55871a 119 DigitalOut _RST;
Hagrid 9:e5337a55871a 120 AnalogIn _VOL;
kayekss 0:708868399033 121
Hagrid 9:e5337a55871a 122 protected:
Hagrid 9:e5337a55871a 123 unsigned short int wram_read(unsigned short int);
Hagrid 9:e5337a55871a 124 void wram_write(unsigned short int, unsigned short int);
Hagrid 9:e5337a55871a 125 void write_plugin(const unsigned short *, unsigned int);
Hagrid 9:e5337a55871a 126 SPI _spi;
Hagrid 9:e5337a55871a 127 DigitalOut _CS;
Hagrid 9:e5337a55871a 128 DigitalOut _DCS;
Hagrid 9:e5337a55871a 129 int firstTime;
Hagrid 9:e5337a55871a 130
kayekss 0:708868399033 131 };
Hagrid 9:e5337a55871a 132 #endif