Playing MP3 with Music Shield and WIZwiki-W7500
Dependencies: FTPClient javakysSDFileSystem2 WIZnetInterface mbed
Prerequisite
This example is for playing MP3 file stored in SD card on WIZwiki-W7500 and updating MP3 files from server to SD card via FTP protocol.
To implement this function, you need a Platform board, network Interface board, MP3 decoder board and SD card. Below are what we used.
- WIZwiki-W7500 from WIZnet (Platform board and Ethernet I/F board)
- Music shield from Seeed Studio
- SD card
Hardware Configuration
WIZwiki-W7500 Pin map
SPI1 for SD Card
SPI1 on WIZwiki-W7100 is for reading from or writing to SD card and pins for SPI1 are PB_0, PB_1, PB_2 and PB_3.
SPI0 and other control pins for MP3 decoder
WIZwiki-W7500 communicates to MP3 decoder on Music Shield via SPI0 pins of which consists of PC_12, D11, D12 and D13.
And PC_13, PC_14 and PC-15 are used for DCS, DREQ and RST, respectively.
InterruptIn pins for 5-Way Navigation Switch
D3, D4, D5, D6 and D7 are connected to 5 way navigation switch on Music Shield.
When user pushes the switch to one way, a relevant pin is grounded so that he or she should make it set high at the beginning.
Software
SPI Initialization
//Declaration in VS1002.cpp VS1002::VS1002(PinName mmosi, PinName mmiso, PinName ssck, PinName ccs, const char *name, PinName mosi, PinName miso, PinName sck, PinName cs, PinName rst, PinName dreq, PinName dcs) : _DREQ(dreq), _RST(rst), _spi(mosi, miso, sck), _CS(cs), _DCS(dcs), _sd(mmosi, mmiso, ssck, ccs, name) { } //Initialization in main.cpp VS1002 mp3(PB_3, PB_2, PB_1, PB_0,"sdc",D11, D12 ,D13, PC_12, PC_15, PC_14, PC_13);
Mapping 5-Way Navigation Switch into InterruptIn pins
main.cpp
InterruptIn K_VU(D3); // Volume UP Key InterruptIn K_VD(D7); // Volume Down Key InterruptIn K_FW(D4); // Foward Key InterruptIn K_BW(D6); // Backward Key InterruptIn K_ONOFF(D5); //Play/Resume or Pause Key
Additional codes due to mbed library bug of WIZwiki-W7500
main.cpp
//Operating Clock Frequency Set *(volatile uint32_t *)(0x41001014) = 0x0060100; //Set all InterruptIn pins to Internal PullUp *(volatile uint32_t *)(0x41003000) = 0x00000002; //D6 *(volatile uint32_t *)(0x41003004) = 0x00000002; //D5 *(volatile uint32_t *)(0x41003008) = 0x00000002; //D4 *(volatile uint32_t *)(0x41003080) = 0x00000002; //D3 *(volatile uint32_t *)(0x41003098) = 0x00000002; //D7
Caution
This example can play only MP3 files with up to 192KHz sample rate//
main.cpp@0:1dd4081a2bb9, 2017-03-30 (annotated)
- Committer:
- javakys
- Date:
- Thu Mar 30 06:15:13 2017 +0000
- Revision:
- 0:1dd4081a2bb9
- Child:
- 2:cea9f6564641
first commit;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
javakys | 0:1dd4081a2bb9 | 1 | #include "mbed.h" |
javakys | 0:1dd4081a2bb9 | 2 | #include "EthernetInterface.h" |
javakys | 0:1dd4081a2bb9 | 3 | #include "SDFileSystem.h" |
javakys | 0:1dd4081a2bb9 | 4 | #include <stdio.h> |
javakys | 0:1dd4081a2bb9 | 5 | #include <string.h> |
javakys | 0:1dd4081a2bb9 | 6 | |
javakys | 0:1dd4081a2bb9 | 7 | #include "FTPClient.h" |
javakys | 0:1dd4081a2bb9 | 8 | #include "VS1002.h" |
javakys | 0:1dd4081a2bb9 | 9 | #include "SSD1306.h" |
javakys | 0:1dd4081a2bb9 | 10 | |
javakys | 0:1dd4081a2bb9 | 11 | #define MAC "\x00\x08\xDC\x11\x34\x78" |
javakys | 0:1dd4081a2bb9 | 12 | #define IP "192.168.0.20" |
javakys | 0:1dd4081a2bb9 | 13 | #define MASK "255.255.255.0" |
javakys | 0:1dd4081a2bb9 | 14 | #define GATEWAY "192.168.0.1" |
javakys | 0:1dd4081a2bb9 | 15 | |
javakys | 0:1dd4081a2bb9 | 16 | #define FTP_SERVER_IP "192.168.0.10" |
javakys | 0:1dd4081a2bb9 | 17 | |
javakys | 0:1dd4081a2bb9 | 18 | #define _MAX_FNAME_LEN_ 127 |
javakys | 0:1dd4081a2bb9 | 19 | #define _FTP_UPDATE_TIME_ 10 |
javakys | 0:1dd4081a2bb9 | 20 | |
javakys | 0:1dd4081a2bb9 | 21 | |
javakys | 0:1dd4081a2bb9 | 22 | Serial uart(USBTX, USBRX); |
javakys | 0:1dd4081a2bb9 | 23 | AnalogIn ain(A5); |
javakys | 0:1dd4081a2bb9 | 24 | //SDFileSystem sd(p5, p6, p7, p8, "sd"); // LPC1768 MBD2PMD |
javakys | 0:1dd4081a2bb9 | 25 | //SDFileSystem sd(P0_18, P0_17, P0_15, P0_16, "sd"); // Seeeduino Arch Pro SPI2SD |
javakys | 0:1dd4081a2bb9 | 26 | //SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // K64F |
javakys | 0:1dd4081a2bb9 | 27 | //SDFileSystem sd(PB_3, PB_2, PB_1, PB_0, "sd"); // WIZwiki-W7500 |
javakys | 0:1dd4081a2bb9 | 28 | |
javakys | 0:1dd4081a2bb9 | 29 | EthernetInterface eth; |
javakys | 0:1dd4081a2bb9 | 30 | InterruptIn K_VU(D3); // Create the interrupt receiver object on pin 26 |
javakys | 0:1dd4081a2bb9 | 31 | InterruptIn K_VD(D7); // Create the interrupt receiver object on pin 26 |
javakys | 0:1dd4081a2bb9 | 32 | InterruptIn K_FW(D4); // Foward Key |
javakys | 0:1dd4081a2bb9 | 33 | InterruptIn K_BW(D6); // Backward Key |
javakys | 0:1dd4081a2bb9 | 34 | InterruptIn K_ONOFF(D5); //Play / Pause Key |
javakys | 0:1dd4081a2bb9 | 35 | VS1002 mp3(PB_3, PB_2, PB_1, PB_0,"sdc",D11, D12 ,D13, PC_12, PC_15, PC_14, PC_13); //Setup Audio decoder. Name is VS1002 even though VS1053 is used. |
javakys | 0:1dd4081a2bb9 | 36 | |
javakys | 0:1dd4081a2bb9 | 37 | FTPClient myFTP("/sdc"); // mountname in MySeeedStudioTFTv2 |
javakys | 0:1dd4081a2bb9 | 38 | |
javakys | 0:1dd4081a2bb9 | 39 | //Ticker ledTick; |
javakys | 0:1dd4081a2bb9 | 40 | |
javakys | 0:1dd4081a2bb9 | 41 | /* Global Variables to store Status*/ |
javakys | 0:1dd4081a2bb9 | 42 | int new_song_number=2; //Variable to store the Song Number |
javakys | 0:1dd4081a2bb9 | 43 | int volume_set=-20; //Variable to store the Volume |
javakys | 0:1dd4081a2bb9 | 44 | int previous_volume; //Variable to store the volume when muted |
javakys | 0:1dd4081a2bb9 | 45 | bool pause=false; //Variable to store the status of Pause button |
javakys | 0:1dd4081a2bb9 | 46 | bool mute=false; //Variable to store the status of mute button |
javakys | 0:1dd4081a2bb9 | 47 | |
javakys | 0:1dd4081a2bb9 | 48 | int check=0; //Capacitative touch generates interrupt on both press and release. This variable tracks this and updates only on press. |
javakys | 0:1dd4081a2bb9 | 49 | //char *song_name[9]={"Good Day","Leong","Sponsor","I'm So Sexy","My Life","Oh My god","Wonderful bar","Whale Hunting","Love"}; //Array of song names entered manually |
javakys | 0:1dd4081a2bb9 | 50 | |
javakys | 0:1dd4081a2bb9 | 51 | uint32_t ftp_time_1s = 0; |
javakys | 0:1dd4081a2bb9 | 52 | |
javakys | 0:1dd4081a2bb9 | 53 | char myfilelist[MAX_SS] = {0,}; |
javakys | 0:1dd4081a2bb9 | 54 | |
javakys | 0:1dd4081a2bb9 | 55 | /*void ledTickfunc() |
javakys | 0:1dd4081a2bb9 | 56 | { |
javakys | 0:1dd4081a2bb9 | 57 | if(ftp_time_1s) |
javakys | 0:1dd4081a2bb9 | 58 | { |
javakys | 0:1dd4081a2bb9 | 59 | //printf("enter ftp_time_1s:%d\r\n", ftp_time_1s); |
javakys | 0:1dd4081a2bb9 | 60 | if(ftp_time_1s++ > _FTP_UPDATE_TIME_) ftp_time_1s = 0; |
javakys | 0:1dd4081a2bb9 | 61 | } |
javakys | 0:1dd4081a2bb9 | 62 | }*/ |
javakys | 0:1dd4081a2bb9 | 63 | void Volume_Up() |
javakys | 0:1dd4081a2bb9 | 64 | { |
javakys | 0:1dd4081a2bb9 | 65 | volume_set+=3; // Volume Up |
javakys | 0:1dd4081a2bb9 | 66 | if(volume_set>=0) |
javakys | 0:1dd4081a2bb9 | 67 | volume_set=0; |
javakys | 0:1dd4081a2bb9 | 68 | } |
javakys | 0:1dd4081a2bb9 | 69 | |
javakys | 0:1dd4081a2bb9 | 70 | void Volume_Down() |
javakys | 0:1dd4081a2bb9 | 71 | { |
javakys | 0:1dd4081a2bb9 | 72 | volume_set-=3; //Volume Down |
javakys | 0:1dd4081a2bb9 | 73 | if(volume_set<-55) |
javakys | 0:1dd4081a2bb9 | 74 | volume_set=-55; |
javakys | 0:1dd4081a2bb9 | 75 | } |
javakys | 0:1dd4081a2bb9 | 76 | |
javakys | 0:1dd4081a2bb9 | 77 | void Song_Forward() |
javakys | 0:1dd4081a2bb9 | 78 | { |
javakys | 0:1dd4081a2bb9 | 79 | new_song_number += 1; |
javakys | 0:1dd4081a2bb9 | 80 | if(new_song_number == 10) |
javakys | 0:1dd4081a2bb9 | 81 | new_song_number = 1; |
javakys | 0:1dd4081a2bb9 | 82 | } |
javakys | 0:1dd4081a2bb9 | 83 | |
javakys | 0:1dd4081a2bb9 | 84 | void Song_Backward() |
javakys | 0:1dd4081a2bb9 | 85 | { |
javakys | 0:1dd4081a2bb9 | 86 | if(new_song_number == 1) |
javakys | 0:1dd4081a2bb9 | 87 | new_song_number = 9; |
javakys | 0:1dd4081a2bb9 | 88 | else |
javakys | 0:1dd4081a2bb9 | 89 | new_song_number -= 1; |
javakys | 0:1dd4081a2bb9 | 90 | } |
javakys | 0:1dd4081a2bb9 | 91 | |
javakys | 0:1dd4081a2bb9 | 92 | void Play_Pressed() |
javakys | 0:1dd4081a2bb9 | 93 | { |
javakys | 0:1dd4081a2bb9 | 94 | pause = !pause; |
javakys | 0:1dd4081a2bb9 | 95 | } |
javakys | 0:1dd4081a2bb9 | 96 | |
javakys | 0:1dd4081a2bb9 | 97 | int main (void) |
javakys | 0:1dd4081a2bb9 | 98 | { |
javakys | 0:1dd4081a2bb9 | 99 | *(volatile uint32_t *)(0x41001014) = 0x0060100; |
javakys | 0:1dd4081a2bb9 | 100 | // *(volatile uint32_t *)(0x41003000) = 0x10; //D6 |
javakys | 0:1dd4081a2bb9 | 101 | // *(volatile uint32_t *)(0x41003004) = 0x10; //D5 |
javakys | 0:1dd4081a2bb9 | 102 | // *(volatile uint32_t *)(0x41003008) = 0x10; //D4 |
javakys | 0:1dd4081a2bb9 | 103 | // *(volatile uint32_t *)(0x41003080) = 0x10; //D3 |
javakys | 0:1dd4081a2bb9 | 104 | // *(volatile uint32_t *)(0x41003098) = 0x10; //D7 |
javakys | 0:1dd4081a2bb9 | 105 | |
javakys | 0:1dd4081a2bb9 | 106 | unsigned int update_count_s=6; |
javakys | 0:1dd4081a2bb9 | 107 | unsigned int update_count_ms=0; |
javakys | 0:1dd4081a2bb9 | 108 | unsigned int ain_temp=0; |
javakys | 0:1dd4081a2bb9 | 109 | //char* my_text = "GIF2015"; |
javakys | 0:1dd4081a2bb9 | 110 | /*char* tok = NULL; |
javakys | 0:1dd4081a2bb9 | 111 | char* lasts = NULL; |
javakys | 0:1dd4081a2bb9 | 112 | char filename[_MAX_FNAME_LEN_]; |
javakys | 0:1dd4081a2bb9 | 113 | FILE* fp;*/ |
javakys | 0:1dd4081a2bb9 | 114 | |
javakys | 0:1dd4081a2bb9 | 115 | init(); |
javakys | 0:1dd4081a2bb9 | 116 | cls(); |
javakys | 0:1dd4081a2bb9 | 117 | //OLED_DrawBMP(0,0,128,8,(unsigned char *)GIF2015); |
javakys | 0:1dd4081a2bb9 | 118 | //OLED_ShowStr(0,0,my_text,2); |
javakys | 0:1dd4081a2bb9 | 119 | // OLED_DrawBMP(0,0,128,8,(unsigned char *)wiznet); |
javakys | 0:1dd4081a2bb9 | 120 | //LED_P23x32Str(0, 0, my_text); |
javakys | 0:1dd4081a2bb9 | 121 | // Serial Interface eth; |
javakys | 0:1dd4081a2bb9 | 122 | uart.baud(115200); |
javakys | 0:1dd4081a2bb9 | 123 | uart.printf("Initializing\r\n"); |
javakys | 0:1dd4081a2bb9 | 124 | |
javakys | 0:1dd4081a2bb9 | 125 | // EthernetInterface eth; |
javakys | 0:1dd4081a2bb9 | 126 | uart.printf("Initializing Ethernet\r\n"); |
javakys | 0:1dd4081a2bb9 | 127 | |
javakys | 0:1dd4081a2bb9 | 128 | //eth.init(); //Use DHCP |
javakys | 0:1dd4081a2bb9 | 129 | eth.init((uint8_t*)MAC,IP,MASK,GATEWAY); //IP,mask,Gateway |
javakys | 0:1dd4081a2bb9 | 130 | uart.printf("Connecting\r\n"); |
javakys | 0:1dd4081a2bb9 | 131 | eth.connect(); |
javakys | 0:1dd4081a2bb9 | 132 | uart.printf("IP Address is %s\r\n", eth.getIPAddress()); |
javakys | 0:1dd4081a2bb9 | 133 | |
javakys | 0:1dd4081a2bb9 | 134 | // Check File System |
javakys | 0:1dd4081a2bb9 | 135 | uart.printf("Checking File System\r\n"); |
javakys | 0:1dd4081a2bb9 | 136 | DIR *d = opendir("/sdc/"); |
javakys | 0:1dd4081a2bb9 | 137 | if (d != NULL) { |
javakys | 0:1dd4081a2bb9 | 138 | uart.printf("SD Card Present\r\n"); |
javakys | 0:1dd4081a2bb9 | 139 | closedir(d); |
javakys | 0:1dd4081a2bb9 | 140 | } else { |
javakys | 0:1dd4081a2bb9 | 141 | uart.printf("SD Card Root Directory Not Found\r\n"); |
javakys | 0:1dd4081a2bb9 | 142 | } |
javakys | 0:1dd4081a2bb9 | 143 | |
javakys | 0:1dd4081a2bb9 | 144 | uint32_t tmp; |
javakys | 0:1dd4081a2bb9 | 145 | tmp = *(volatile uint32_t *)(0x41003000); //D6 |
javakys | 0:1dd4081a2bb9 | 146 | uart.printf("Before set, D6 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 147 | tmp = 0x00000002; |
javakys | 0:1dd4081a2bb9 | 148 | *(volatile uint32_t *)(0x41003000) = tmp; |
javakys | 0:1dd4081a2bb9 | 149 | tmp = *(volatile uint32_t *)(0x41003004); //D5 |
javakys | 0:1dd4081a2bb9 | 150 | uart.printf("Before set, D5 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 151 | tmp = 0x00000002; |
javakys | 0:1dd4081a2bb9 | 152 | *(volatile uint32_t *)(0x41003004) = tmp; |
javakys | 0:1dd4081a2bb9 | 153 | tmp = *(volatile uint32_t *)(0x41003008); //D4 |
javakys | 0:1dd4081a2bb9 | 154 | uart.printf("Before set, D4 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 155 | tmp = 0x00000002; |
javakys | 0:1dd4081a2bb9 | 156 | *(volatile uint32_t *)(0x41003008) = tmp; |
javakys | 0:1dd4081a2bb9 | 157 | tmp = *(volatile uint32_t *)(0x41003080); //D3 |
javakys | 0:1dd4081a2bb9 | 158 | uart.printf("Before set, D3 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 159 | tmp = 0x00000002; |
javakys | 0:1dd4081a2bb9 | 160 | *(volatile uint32_t *)(0x41003080) = tmp; |
javakys | 0:1dd4081a2bb9 | 161 | tmp = *(volatile uint32_t *)(0x41003098); //D7 |
javakys | 0:1dd4081a2bb9 | 162 | uart.printf("Before set, D5 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 163 | tmp = 0x00000002; |
javakys | 0:1dd4081a2bb9 | 164 | *(volatile uint32_t *)(0x41003098) = tmp; |
javakys | 0:1dd4081a2bb9 | 165 | |
javakys | 0:1dd4081a2bb9 | 166 | |
javakys | 0:1dd4081a2bb9 | 167 | //ledTick.attach(&ledTickfunc,2); |
javakys | 0:1dd4081a2bb9 | 168 | /* UI Button setup */ |
javakys | 0:1dd4081a2bb9 | 169 | K_VU.fall(&Volume_Up); |
javakys | 0:1dd4081a2bb9 | 170 | // K_VU.mode(PullUp); |
javakys | 0:1dd4081a2bb9 | 171 | K_VD.fall(&Volume_Down); |
javakys | 0:1dd4081a2bb9 | 172 | // K_VD.mode(PullUp); |
javakys | 0:1dd4081a2bb9 | 173 | K_ONOFF.fall(&Play_Pressed); |
javakys | 0:1dd4081a2bb9 | 174 | // K_ONOFF.mode(PullUp); |
javakys | 0:1dd4081a2bb9 | 175 | K_FW.fall(&Song_Forward); |
javakys | 0:1dd4081a2bb9 | 176 | // K_FW.mode(PullUp); |
javakys | 0:1dd4081a2bb9 | 177 | K_BW.fall(&Song_Backward); |
javakys | 0:1dd4081a2bb9 | 178 | // K_BW.mode(PullUp); |
javakys | 0:1dd4081a2bb9 | 179 | |
javakys | 0:1dd4081a2bb9 | 180 | tmp = *(volatile uint32_t *)(0x41003000); //D6 |
javakys | 0:1dd4081a2bb9 | 181 | uart.printf("After set, D6 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 182 | tmp = *(volatile uint32_t *)(0x41003004); //D5 |
javakys | 0:1dd4081a2bb9 | 183 | uart.printf("After set, D5 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 184 | tmp = *(volatile uint32_t *)(0x41003008); //D4 |
javakys | 0:1dd4081a2bb9 | 185 | uart.printf("After set, D4 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 186 | tmp = *(volatile uint32_t *)(0x41003080); //D3 |
javakys | 0:1dd4081a2bb9 | 187 | uart.printf("After set, D3 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 188 | tmp = *(volatile uint32_t *)(0x41003098); //D7 |
javakys | 0:1dd4081a2bb9 | 189 | uart.printf("After set, D5 : %08X\r\n", tmp); |
javakys | 0:1dd4081a2bb9 | 190 | |
javakys | 0:1dd4081a2bb9 | 191 | while(1) |
javakys | 0:1dd4081a2bb9 | 192 | { |
javakys | 0:1dd4081a2bb9 | 193 | /* |
javakys | 0:1dd4081a2bb9 | 194 | update_count_ms++; |
javakys | 0:1dd4081a2bb9 | 195 | if(update_count_ms>5000) |
javakys | 0:1dd4081a2bb9 | 196 | { |
javakys | 0:1dd4081a2bb9 | 197 | printf("update_count_ms count : %d\r\n", update_count_s); |
javakys | 0:1dd4081a2bb9 | 198 | update_count_ms=0; |
javakys | 0:1dd4081a2bb9 | 199 | update_count_s++; |
javakys | 0:1dd4081a2bb9 | 200 | } |
javakys | 0:1dd4081a2bb9 | 201 | //printf("ftp_time_1s:%d\r\n", ftp_time_1s); |
javakys | 0:1dd4081a2bb9 | 202 | //if(ftp_time_1s == 0) |
javakys | 0:1dd4081a2bb9 | 203 | if(update_count_s>=5) |
javakys | 0:1dd4081a2bb9 | 204 | { |
javakys | 0:1dd4081a2bb9 | 205 | //Configure the display driver |
javakys | 0:1dd4081a2bb9 | 206 | update_count_s = 0; |
javakys | 0:1dd4081a2bb9 | 207 | |
javakys | 0:1dd4081a2bb9 | 208 | printf(" UPDATING MP3\r\n"); |
javakys | 0:1dd4081a2bb9 | 209 | printf("==================\n\r\n"); |
javakys | 0:1dd4081a2bb9 | 210 | |
javakys | 0:1dd4081a2bb9 | 211 | if(myFTP.open("192.168.0.10", 21, "user", "pass")) |
javakys | 0:1dd4081a2bb9 | 212 | { |
javakys | 0:1dd4081a2bb9 | 213 | printf("Connect Success to FTPServer\r\n"); |
javakys | 0:1dd4081a2bb9 | 214 | printf("Connected to FTP Server\r\n"); |
javakys | 0:1dd4081a2bb9 | 215 | |
javakys | 0:1dd4081a2bb9 | 216 | myFTP.getfile("1.mp3"); |
javakys | 0:1dd4081a2bb9 | 217 | myFTP.getfile("2.mp3"); |
javakys | 0:1dd4081a2bb9 | 218 | myFTP.getfile("3.mp3"); |
javakys | 0:1dd4081a2bb9 | 219 | |
javakys | 0:1dd4081a2bb9 | 220 | printf("\n UPDATE DONE\n\r\n"); |
javakys | 0:1dd4081a2bb9 | 221 | myFTP.quit(); |
javakys | 0:1dd4081a2bb9 | 222 | } |
javakys | 0:1dd4081a2bb9 | 223 | else |
javakys | 0:1dd4081a2bb9 | 224 | { |
javakys | 0:1dd4081a2bb9 | 225 | printf(" Can't connect to FTP Server\r\n"); |
javakys | 0:1dd4081a2bb9 | 226 | printf(" UPDATE FAIL\r\n"); |
javakys | 0:1dd4081a2bb9 | 227 | } |
javakys | 0:1dd4081a2bb9 | 228 | printf("==================\n"); |
javakys | 0:1dd4081a2bb9 | 229 | } |
javakys | 0:1dd4081a2bb9 | 230 | */ |
javakys | 0:1dd4081a2bb9 | 231 | |
javakys | 0:1dd4081a2bb9 | 232 | /*============================================================ |
javakys | 0:1dd4081a2bb9 | 233 | * MP3 Initialising |
javakys | 0:1dd4081a2bb9 | 234 | *==========================================================*/ |
javakys | 0:1dd4081a2bb9 | 235 | |
javakys | 0:1dd4081a2bb9 | 236 | mp3._RST = 1; |
javakys | 0:1dd4081a2bb9 | 237 | mp3.cs_high(); //chip disabled |
javakys | 0:1dd4081a2bb9 | 238 | mp3.sci_initialise(); //initialise MBED |
javakys | 0:1dd4081a2bb9 | 239 | mp3.sci_write(0x00,(SM_SDINEW+SM_STREAM+SM_DIFF)); |
javakys | 0:1dd4081a2bb9 | 240 | mp3.sci_write(0x03, 0x9800); |
javakys | 0:1dd4081a2bb9 | 241 | mp3.sdi_initialise(); |
javakys | 0:1dd4081a2bb9 | 242 | |
javakys | 0:1dd4081a2bb9 | 243 | ain_temp = ain.read_u16(); |
javakys | 0:1dd4081a2bb9 | 244 | //printf("normalized: %d \n\r", ain_temp); |
javakys | 0:1dd4081a2bb9 | 245 | |
javakys | 0:1dd4081a2bb9 | 246 | // if (pause) |
javakys | 0:1dd4081a2bb9 | 247 | // { |
javakys | 0:1dd4081a2bb9 | 248 | printf("enter song\r\n"); |
javakys | 0:1dd4081a2bb9 | 249 | printf("song number: %d\r\n", new_song_number); |
javakys | 0:1dd4081a2bb9 | 250 | mp3.play_song(new_song_number); |
javakys | 0:1dd4081a2bb9 | 251 | // } |
javakys | 0:1dd4081a2bb9 | 252 | } |
javakys | 0:1dd4081a2bb9 | 253 | } |