Add the RTOS processing. for the Network radio streaming receiver.
Fork of VS1053b by
VS1053.h@0:7728d9c6c487, 2010-12-14 (annotated)
- Committer:
- christi_s
- Date:
- Tue Dec 14 18:22:54 2010 +0000
- Revision:
- 0:7728d9c6c487
- Child:
- 1:ced2c297cc1b
initial
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
christi_s | 0:7728d9c6c487 | 1 | #ifndef VS1053_H |
christi_s | 0:7728d9c6c487 | 2 | #define VS1053_H |
christi_s | 0:7728d9c6c487 | 3 | |
christi_s | 0:7728d9c6c487 | 4 | // ---------------------------------------------------------------------------- |
christi_s | 0:7728d9c6c487 | 5 | // Extended settings |
christi_s | 0:7728d9c6c487 | 6 | // ---------------------------------------------------------------------------- |
christi_s | 0:7728d9c6c487 | 7 | // Patches, Addons |
christi_s | 0:7728d9c6c487 | 8 | // -------------------------------------------------------------------------- |
christi_s | 0:7728d9c6c487 | 9 | |
christi_s | 0:7728d9c6c487 | 10 | #define VS_PATCH |
christi_s | 0:7728d9c6c487 | 11 | //#define VS_SPECANA |
christi_s | 0:7728d9c6c487 | 12 | |
christi_s | 0:7728d9c6c487 | 13 | // Version |
christi_s | 0:7728d9c6c487 | 14 | //#define VS1053_PATCH_1_4_FLAC |
christi_s | 0:7728d9c6c487 | 15 | #define VS1053_PATCH_1_5 |
christi_s | 0:7728d9c6c487 | 16 | //#define VS1053_PATCH_1_5_FLAC |
christi_s | 0:7728d9c6c487 | 17 | |
christi_s | 0:7728d9c6c487 | 18 | // ---------------------------------------------------------------------------- |
christi_s | 0:7728d9c6c487 | 19 | |
christi_s | 0:7728d9c6c487 | 20 | |
christi_s | 0:7728d9c6c487 | 21 | |
christi_s | 0:7728d9c6c487 | 22 | #if defined(VS_PATCH) && defined(VS_SPECANA) |
christi_s | 0:7728d9c6c487 | 23 | #error "Exclusive use! Use VS_PATCH or VS_SPECANA, not both." |
christi_s | 0:7728d9c6c487 | 24 | #endif |
christi_s | 0:7728d9c6c487 | 25 | |
christi_s | 0:7728d9c6c487 | 26 | #ifdef VS_PATCH |
christi_s | 0:7728d9c6c487 | 27 | #if defined(VS1053_PATCH_1_4_FLAC) && defined(VS1053_PATCH_1_5) && defined(VS1053_PATCH_1_5_FLAC) |
christi_s | 0:7728d9c6c487 | 28 | #error "Exclusive use of patch versions." |
christi_s | 0:7728d9c6c487 | 29 | #endif |
christi_s | 0:7728d9c6c487 | 30 | #if defined(VS1053_PATCH_1_4_FLAC) || defined(VS1053_PATCH_1_5) || defined(VS1053_PATCH_1_5_FLAC) |
christi_s | 0:7728d9c6c487 | 31 | #else |
christi_s | 0:7728d9c6c487 | 32 | #error "Select patch versions." |
christi_s | 0:7728d9c6c487 | 33 | #endif |
christi_s | 0:7728d9c6c487 | 34 | #endif |
christi_s | 0:7728d9c6c487 | 35 | |
christi_s | 0:7728d9c6c487 | 36 | |
christi_s | 0:7728d9c6c487 | 37 | |
christi_s | 0:7728d9c6c487 | 38 | #include "mbed.h" |
christi_s | 0:7728d9c6c487 | 39 | //#include "SDFileSystem.h" |
christi_s | 0:7728d9c6c487 | 40 | #include "string" |
christi_s | 0:7728d9c6c487 | 41 | #include "string.h" |
christi_s | 0:7728d9c6c487 | 42 | |
christi_s | 0:7728d9c6c487 | 43 | // SCI register address assignment |
christi_s | 0:7728d9c6c487 | 44 | #define SCI_MODE 0x0 |
christi_s | 0:7728d9c6c487 | 45 | #define SCI_STATUS 0x1 |
christi_s | 0:7728d9c6c487 | 46 | #define SCI_BASS 0x2 |
christi_s | 0:7728d9c6c487 | 47 | #define SCI_CLOCKF 0x3 |
christi_s | 0:7728d9c6c487 | 48 | #define SCI_DECODE_TOME 0x4 |
christi_s | 0:7728d9c6c487 | 49 | #define SCI_AUDATA 0x5 |
christi_s | 0:7728d9c6c487 | 50 | #define SCI_WRAM 0x6 |
christi_s | 0:7728d9c6c487 | 51 | #define SCI_WRAMADDR 0x7 |
christi_s | 0:7728d9c6c487 | 52 | #define SCI_HDAT0 0x8 |
christi_s | 0:7728d9c6c487 | 53 | #define SCI_HDAT1 0x9 |
christi_s | 0:7728d9c6c487 | 54 | #define SCI_AIADDR 0xA |
christi_s | 0:7728d9c6c487 | 55 | #define SCI_VOL 0xB |
christi_s | 0:7728d9c6c487 | 56 | #define SCI_AICTRL0 0xC |
christi_s | 0:7728d9c6c487 | 57 | #define SCI_AICTRL1 0xD |
christi_s | 0:7728d9c6c487 | 58 | #define SCI_AICTRL2 0xE |
christi_s | 0:7728d9c6c487 | 59 | #define SCI_AICTRL3 0xF |
christi_s | 0:7728d9c6c487 | 60 | |
christi_s | 0:7728d9c6c487 | 61 | |
christi_s | 0:7728d9c6c487 | 62 | //SCI_MODE register bits as of p.38 of the datasheet |
christi_s | 0:7728d9c6c487 | 63 | #define SM_DIFF 0x0001 |
christi_s | 0:7728d9c6c487 | 64 | #define SM_LAYER12 0x0002 |
christi_s | 0:7728d9c6c487 | 65 | #define SM_RESET 0x0004 |
christi_s | 0:7728d9c6c487 | 66 | #define SM_CANCEL 0x0008 |
christi_s | 0:7728d9c6c487 | 67 | #define SM_EARSPEAKER_LO 0x0010 |
christi_s | 0:7728d9c6c487 | 68 | #define SM_TESTS 0x0020 |
christi_s | 0:7728d9c6c487 | 69 | #define SM_STREAM 0x0040 |
christi_s | 0:7728d9c6c487 | 70 | #define SM_EARSPEAKER_HI 0x0080 |
christi_s | 0:7728d9c6c487 | 71 | #define SM_DACT 0x0100 |
christi_s | 0:7728d9c6c487 | 72 | #define SM_SDIORD 0x0200 |
christi_s | 0:7728d9c6c487 | 73 | #define SM_SDISHARE 0x0400 |
christi_s | 0:7728d9c6c487 | 74 | #define SM_SDINEW 0x0800 |
christi_s | 0:7728d9c6c487 | 75 | #define SM_ADPCM 0x1000 |
christi_s | 0:7728d9c6c487 | 76 | #define SM_B13 0x2000 |
christi_s | 0:7728d9c6c487 | 77 | #define SM_LINE1 0x4000 |
christi_s | 0:7728d9c6c487 | 78 | #define SM_CLK_RANGE 0x8000 |
christi_s | 0:7728d9c6c487 | 79 | |
christi_s | 0:7728d9c6c487 | 80 | //SCI_CLOCKF register bits as of p.42 of the datasheet |
christi_s | 0:7728d9c6c487 | 81 | #define SC_MULT_XTALI 0x0000 |
christi_s | 0:7728d9c6c487 | 82 | #define SC_MULT_XTALIx20 0x2000 |
christi_s | 0:7728d9c6c487 | 83 | #define SC_MULT_XTALIx25 0x4000 |
christi_s | 0:7728d9c6c487 | 84 | #define SC_MULT_XTALIx30 0x6000 |
christi_s | 0:7728d9c6c487 | 85 | #define SC_MULT_XTALIx35 0x8000 |
christi_s | 0:7728d9c6c487 | 86 | #define SC_MULT_XTALIx40 0xA000 |
christi_s | 0:7728d9c6c487 | 87 | #define SC_MULT_XTALIx45 0xC000 |
christi_s | 0:7728d9c6c487 | 88 | #define SC_MULT_XTALIx50 0xE000 |
christi_s | 0:7728d9c6c487 | 89 | // |
christi_s | 0:7728d9c6c487 | 90 | #define SC_ADD_NOMOD 0x0000 |
christi_s | 0:7728d9c6c487 | 91 | #define SC_ADD_10x 0x0800 |
christi_s | 0:7728d9c6c487 | 92 | #define SC_ADD_15x 0x1000 |
christi_s | 0:7728d9c6c487 | 93 | #define SC_ADD_20x 0x1800 |
christi_s | 0:7728d9c6c487 | 94 | |
christi_s | 0:7728d9c6c487 | 95 | |
christi_s | 0:7728d9c6c487 | 96 | // Extra Parameter in X memory (refer to p.58 of the datasheet) |
christi_s | 0:7728d9c6c487 | 97 | #define para_chipID_0 0x1E00 |
christi_s | 0:7728d9c6c487 | 98 | #define para_chipID_1 0x1E01 |
christi_s | 0:7728d9c6c487 | 99 | #define para_version 0x1E02 |
christi_s | 0:7728d9c6c487 | 100 | #define para_config1 0x1E03 |
christi_s | 0:7728d9c6c487 | 101 | #define para_playSpeed 0x1E04 |
christi_s | 0:7728d9c6c487 | 102 | #define para_byteRate 0x1E05 |
christi_s | 0:7728d9c6c487 | 103 | #define para_endFillByte 0x1E06 |
christi_s | 0:7728d9c6c487 | 104 | // |
christi_s | 0:7728d9c6c487 | 105 | #define para_positionMsec_0 0x1E27 |
christi_s | 0:7728d9c6c487 | 106 | #define para_positionMsec_1 0x1E28 |
christi_s | 0:7728d9c6c487 | 107 | #define para_resync 0x1E29 |
christi_s | 0:7728d9c6c487 | 108 | |
christi_s | 0:7728d9c6c487 | 109 | |
christi_s | 0:7728d9c6c487 | 110 | class VS1053 { |
christi_s | 0:7728d9c6c487 | 111 | |
christi_s | 0:7728d9c6c487 | 112 | public: |
christi_s | 0:7728d9c6c487 | 113 | VS1053( |
christi_s | 0:7728d9c6c487 | 114 | PinName _mosi, |
christi_s | 0:7728d9c6c487 | 115 | PinName _miso, |
christi_s | 0:7728d9c6c487 | 116 | PinName _sck, |
christi_s | 0:7728d9c6c487 | 117 | PinName _cs, |
christi_s | 0:7728d9c6c487 | 118 | PinName _rst, |
christi_s | 0:7728d9c6c487 | 119 | PinName _dreq, |
christi_s | 0:7728d9c6c487 | 120 | PinName _dcs |
christi_s | 0:7728d9c6c487 | 121 | ); |
christi_s | 0:7728d9c6c487 | 122 | |
christi_s | 0:7728d9c6c487 | 123 | void cs_low(void); |
christi_s | 0:7728d9c6c487 | 124 | void cs_high(void); |
christi_s | 0:7728d9c6c487 | 125 | void dcs_low(void); |
christi_s | 0:7728d9c6c487 | 126 | void dcs_high(void); |
christi_s | 0:7728d9c6c487 | 127 | void sci_en(void); |
christi_s | 0:7728d9c6c487 | 128 | void sci_dis(void); |
christi_s | 0:7728d9c6c487 | 129 | void sdi_en(void); |
christi_s | 0:7728d9c6c487 | 130 | void sdi_dis(void); |
christi_s | 0:7728d9c6c487 | 131 | |
christi_s | 0:7728d9c6c487 | 132 | void sci_initialise(void); |
christi_s | 0:7728d9c6c487 | 133 | void sdi_initialise(void); |
christi_s | 0:7728d9c6c487 | 134 | void reset(void); |
christi_s | 0:7728d9c6c487 | 135 | void power_down(void); |
christi_s | 0:7728d9c6c487 | 136 | |
christi_s | 0:7728d9c6c487 | 137 | void sci_write(unsigned char, unsigned short int); |
christi_s | 0:7728d9c6c487 | 138 | void sdi_write(unsigned char); |
christi_s | 0:7728d9c6c487 | 139 | unsigned short int sci_read(unsigned short int); |
christi_s | 0:7728d9c6c487 | 140 | void sine_test_activate(unsigned char); |
christi_s | 0:7728d9c6c487 | 141 | |
christi_s | 0:7728d9c6c487 | 142 | void sine_test_deactivate(void); |
christi_s | 0:7728d9c6c487 | 143 | void writeStream(unsigned char *, int); |
christi_s | 0:7728d9c6c487 | 144 | #if 0 |
christi_s | 0:7728d9c6c487 | 145 | void putcStream(unsigned char); |
christi_s | 0:7728d9c6c487 | 146 | #endif |
christi_s | 0:7728d9c6c487 | 147 | void terminateStream(void); |
christi_s | 0:7728d9c6c487 | 148 | |
christi_s | 0:7728d9c6c487 | 149 | void initialize(void); |
christi_s | 0:7728d9c6c487 | 150 | void setVolume(unsigned short int); |
christi_s | 0:7728d9c6c487 | 151 | |
christi_s | 0:7728d9c6c487 | 152 | DigitalIn _DREQ; |
christi_s | 0:7728d9c6c487 | 153 | DigitalOut _RST; |
christi_s | 0:7728d9c6c487 | 154 | |
christi_s | 0:7728d9c6c487 | 155 | protected: |
christi_s | 0:7728d9c6c487 | 156 | unsigned short int wram_read(unsigned short int); |
christi_s | 0:7728d9c6c487 | 157 | void wram_write(unsigned short int, unsigned short int); |
christi_s | 0:7728d9c6c487 | 158 | void write_plugin(const unsigned short *, unsigned int); |
christi_s | 0:7728d9c6c487 | 159 | SPI _spi; |
christi_s | 0:7728d9c6c487 | 160 | DigitalOut _CS; |
christi_s | 0:7728d9c6c487 | 161 | DigitalOut _DCS; |
christi_s | 0:7728d9c6c487 | 162 | int firstTime; |
christi_s | 0:7728d9c6c487 | 163 | |
christi_s | 0:7728d9c6c487 | 164 | }; |
christi_s | 0:7728d9c6c487 | 165 | #endif |