MP3Player use 11U68 and VS1033
Dependencies: SDFileSystem mbed
Fork of MP3_player_on_Orange by
main.cpp@2:e64114d458e5, 2015-07-11 (annotated)
- 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?
User | Revision | Line number | New 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 | } |