MP3Player use 11U68 and VS1033

Dependencies:   SDFileSystem mbed

Fork of MP3_player_on_Orange by en 129

Committer:
nameless129
Date:
Sat Jul 11 23:14:39 2015 +0000
Revision:
2:e64114d458e5
Parent:
1:371e02d5b03a
first commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
nameless129 1:371e02d5b03a 1 #include <stdio.h>
nameless129 0:1152f41f7f73 2 #include "mbed.h"
nameless129 1:371e02d5b03a 3 #include "SDFileSystem.h"
nameless129 1:371e02d5b03a 4 #include "VS1053.h"
nameless129 0:1152f41f7f73 5 /*
nameless129 0:1152f41f7f73 6 VS1002 MP3Player
nameless129 0:1152f41f7f73 7 2012/03/14
nameless129 0:1152f41f7f73 8
nameless129 0:1152f41f7f73 9 このプログラムは以下のURLのソースコードを元に作成しています
nameless129 0:1152f41f7f73 10 http://mbed.org/cookbook/VS1002-MP3-Decoder
nameless129 0:1152f41f7f73 11
nameless129 0:1152f41f7f73 12 接続方法
nameless129 0:1152f41f7f73 13 VS1002 | mbed
nameless129 0:1152f41f7f73 14 ---------------------------------------
nameless129 1:371e02d5b03a 15 RESET----------------P1_25
nameless129 1:371e02d5b03a 16
nameless129 1:371e02d5b03a 17 D2(BSYNC)------------P1_28
nameless129 1:371e02d5b03a 18 D3(DREQ)-------------P2_3
nameless129 0:1152f41f7f73 19
nameless129 1:371e02d5b03a 20 D9(CS)---------------P0_2
nameless129 1:371e02d5b03a 21 D11(MOSI)------------P0_9
nameless129 1:371e02d5b03a 22 D12(MISO)------------P0_8
nameless129 1:371e02d5b03a 23 D13(SCK)-------------P1_29
nameless129 0:1152f41f7f73 24
nameless129 0:1152f41f7f73 25 GND------------------GND(1)
nameless129 1:371e02d5b03a 26 3.3V-----------------VU(39)
nameless129 0:1152f41f7f73 27
nameless129 0:1152f41f7f73 28 */
nameless129 0:1152f41f7f73 29
nameless129 1:371e02d5b03a 30 SDFileSystem sd(/*MOSI*/ P1_22, /*MISO*/ P1_21, /*SCK*/ P1_20, /*CS*/ P1_23, /*Mountpoint*/ "sd");
nameless129 1:371e02d5b03a 31 VS1053 mp3(/*MOSI*/ P0_9, /*MISO*/ P0_8, /*SCK*/ P1_29,
nameless129 1:371e02d5b03a 32 /*CS*/ P0_2, /*BSYNC*/ P1_28, /*DREQ*/ P2_3, /*RST*/ P1_25, /*SPI freq.*/ 10000000);
nameless129 0:1152f41f7f73 33
nameless129 1:371e02d5b03a 34 //Serial pc(P1_27,P1_26);
nameless129 0:1152f41f7f73 35
nameless129 1:371e02d5b03a 36 const char *fileNameList[] = {
nameless129 1:371e02d5b03a 37 "/sd/1.mp3",
nameless129 1:371e02d5b03a 38 "/sd/2.mp3",
nameless129 1:371e02d5b03a 39 };
nameless129 1:371e02d5b03a 40
nameless129 1:371e02d5b03a 41 #define BLOCK_SIZE (1024)
nameless129 0:1152f41f7f73 42
nameless129 0:1152f41f7f73 43 int main ()
nameless129 0:1152f41f7f73 44 {
nameless129 0:1152f41f7f73 45 // pc.baud(9600);
nameless129 1:371e02d5b03a 46 printf("Power ON\r\n");
nameless129 0:1152f41f7f73 47 /*============================================================
nameless129 0:1152f41f7f73 48 * MP3 Initialising
nameless129 0:1152f41f7f73 49 *==========================================================*/
nameless129 1:371e02d5b03a 50 // Initialize VS1053
nameless129 1:371e02d5b03a 51
nameless129 1:371e02d5b03a 52 /* for sine test mode */
nameless129 2:e64114d458e5 53 // mp3.sine_test_activate(SineWave_10k);
nameless129 1:371e02d5b03a 54 // while(1);
nameless129 1:371e02d5b03a 55
nameless129 1:371e02d5b03a 56 mp3.hardwareReset();
nameless129 1:371e02d5b03a 57 mp3.sci_init();
nameless129 1:371e02d5b03a 58 mp3.sdi_init();
nameless129 1:371e02d5b03a 59
nameless129 1:371e02d5b03a 60
nameless129 1:371e02d5b03a 61 wait(0.1);
nameless129 0:1152f41f7f73 62 /*============================================================
nameless129 0:1152f41f7f73 63 * This is the good part
nameless129 0:1152f41f7f73 64 *==========================================================*/
nameless129 0:1152f41f7f73 65 printf("MP3 init OK\r\n");
nameless129 1:371e02d5b03a 66
nameless129 1:371e02d5b03a 67 static FILE *fp = NULL;
nameless129 1:371e02d5b03a 68 size_t sizeRead = 0;
nameless129 1:371e02d5b03a 69 size_t totalSizeSent=0;
nameless129 1:371e02d5b03a 70 size_t fileSize=0;
nameless129 1:371e02d5b03a 71 uint8_t buf[BLOCK_SIZE];
nameless129 1:371e02d5b03a 72
nameless129 2:e64114d458e5 73 fp = fopen("/sd/2.mp3", "rb");
nameless129 1:371e02d5b03a 74
nameless129 1:371e02d5b03a 75 fseek( fp, 0, SEEK_END );
nameless129 1:371e02d5b03a 76 fileSize = ftell( fp );
nameless129 1:371e02d5b03a 77 printf("file size:%d\r\n",fileSize);
nameless129 1:371e02d5b03a 78
nameless129 1:371e02d5b03a 79 rewind(fp);
nameless129 1:371e02d5b03a 80
nameless129 1:371e02d5b03a 81 if (fp) {
nameless129 1:371e02d5b03a 82 clearerr(fp);
nameless129 1:371e02d5b03a 83 totalSizeSent = 0;
nameless129 1:371e02d5b03a 84 }
nameless129 1:371e02d5b03a 85 while(1)
nameless129 0:1152f41f7f73 86 {
nameless129 1:371e02d5b03a 87 if(totalSizeSent>=fileSize)
nameless129 1:371e02d5b03a 88 { // Close when the track reaches the end
nameless129 1:371e02d5b03a 89 mp3.stop();
nameless129 1:371e02d5b03a 90 fclose(fp);
nameless129 1:371e02d5b03a 91 fp = NULL;
nameless129 1:371e02d5b03a 92 printf("stop\r\n");
nameless129 1:371e02d5b03a 93 while(1)
nameless129 1:371e02d5b03a 94 {
nameless129 1:371e02d5b03a 95 }
nameless129 1:371e02d5b03a 96 }
nameless129 1:371e02d5b03a 97 else
nameless129 1:371e02d5b03a 98 {
nameless129 1:371e02d5b03a 99 sizeRead = fread(buf, sizeof(uint8_t), BLOCK_SIZE, fp);
nameless129 1:371e02d5b03a 100 totalSizeSent += mp3.sendDataBlock(buf, sizeRead);
nameless129 1:371e02d5b03a 101 //printf("total %d Send %d\r\n",totalSizeSent,sizeRead);
nameless129 1:371e02d5b03a 102 }
nameless129 0:1152f41f7f73 103 }
nameless129 0:1152f41f7f73 104 }