use VS1033(MP3 decoder) and UL024TF(TFTLCD)
Dependencies: TFTLCDwithFastIO FastIO SDFileSystem TouchPanel VS1033 mbed
main.cpp@2:0090839c8276, 2015-07-12 (annotated)
- Committer:
- nameless129
- Date:
- Sun Jul 12 06:59:22 2015 +0000
- Revision:
- 2:0090839c8276
- Parent:
- 0:5f0e931ae677
- Child:
- 3:67e97c846cec
first commit;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nameless129 | 0:5f0e931ae677 | 1 | #include "ili9328.h" |
nameless129 | 2:0090839c8276 | 2 | #include <stdio.h> |
nameless129 | 2:0090839c8276 | 3 | #include "mbed.h" |
nameless129 | 2:0090839c8276 | 4 | #include "SDFileSystem.h" |
nameless129 | 2:0090839c8276 | 5 | #include "VS1053.h" |
nameless129 | 2:0090839c8276 | 6 | |
nameless129 | 0:5f0e931ae677 | 7 | // prepare the data bus for writing commands and pixel data |
nameless129 | 0:5f0e931ae677 | 8 | BusOut dataBus( P1_28,P2_3,P1_18,P1_24,P1_19,P1_26,P1_27,P1_25 ); // 16 pins |
nameless129 | 0:5f0e931ae677 | 9 | // create the lcd instance |
nameless129 | 0:5f0e931ae677 | 10 | //(PinName CS, PinName RESET, PinName RS, PinName WR, BusOut *DATA_PORT, PinName BL=NC, PinName RD=NC, backlight_t blType=Constant, float defaultBackLightLevel=1.0) |
nameless129 | 0:5f0e931ae677 | 11 | ILI9328_LCD lcd( P0_12, P0_11, P0_13, P0_14, &dataBus, NC, P1_9 ); // control pins and data bus |
nameless129 | 2:0090839c8276 | 12 | |
nameless129 | 2:0090839c8276 | 13 | SDFileSystem sd(/*MOSI*/ P0_9, /*MISO*/ P0_8, /*SCK*/ P1_29, /*CS*/ P0_2, /*Mountpoint*/ "sd"); |
nameless129 | 2:0090839c8276 | 14 | VS1053 mp3(/*MOSI*/ P1_22 , /*MISO*/ P1_21, /*SCK*/ P1_20, /*CS*/ P1_23, |
nameless129 | 2:0090839c8276 | 15 | /*BSYNC*/ P2_16, /*DREQ*/ P2_17, /*RST*/ P2_18, /*SPI freq.*/ 10000000); |
nameless129 | 2:0090839c8276 | 16 | |
nameless129 | 2:0090839c8276 | 17 | |
nameless129 | 2:0090839c8276 | 18 | #define SD_READ_BLOCK_SIZE (1024) |
nameless129 | 2:0090839c8276 | 19 | |
nameless129 | 0:5f0e931ae677 | 20 | int main() |
nameless129 | 0:5f0e931ae677 | 21 | { |
nameless129 | 2:0090839c8276 | 22 | static FILE *fp = NULL; |
nameless129 | 2:0090839c8276 | 23 | size_t sizeRead = 0; |
nameless129 | 2:0090839c8276 | 24 | size_t totalSizeSent=0; |
nameless129 | 2:0090839c8276 | 25 | size_t fileSize=0; |
nameless129 | 2:0090839c8276 | 26 | uint8_t buf[SD_READ_BLOCK_SIZE]; |
nameless129 | 2:0090839c8276 | 27 | |
nameless129 | 2:0090839c8276 | 28 | printf("Power ON\r\n"); |
nameless129 | 2:0090839c8276 | 29 | |
nameless129 | 2:0090839c8276 | 30 | //LCD Init. |
nameless129 | 0:5f0e931ae677 | 31 | lcd.Initialize(LANDSCAPE,RGB16); |
nameless129 | 2:0090839c8276 | 32 | |
nameless129 | 2:0090839c8276 | 33 | /* for sine test mode */ |
nameless129 | 2:0090839c8276 | 34 | // mp3.sine_test_activate(SineWave_10k); |
nameless129 | 2:0090839c8276 | 35 | // while(1); |
nameless129 | 2:0090839c8276 | 36 | |
nameless129 | 2:0090839c8276 | 37 | //MP3 decoder Init. |
nameless129 | 2:0090839c8276 | 38 | mp3.hardwareReset(); |
nameless129 | 2:0090839c8276 | 39 | mp3.sci_init(); |
nameless129 | 2:0090839c8276 | 40 | mp3.sdi_init(); |
nameless129 | 2:0090839c8276 | 41 | wait(0.1); |
nameless129 | 2:0090839c8276 | 42 | |
nameless129 | 2:0090839c8276 | 43 | printf("init CMPL.\r\n"); |
nameless129 | 2:0090839c8276 | 44 | |
nameless129 | 0:5f0e931ae677 | 45 | lcd.SetBackground(COLOR_BLUE); |
nameless129 | 0:5f0e931ae677 | 46 | lcd.FillScreen(-1); |
nameless129 | 0:5f0e931ae677 | 47 | lcd.SetFont( &TerminusFont ); |
nameless129 | 0:5f0e931ae677 | 48 | lcd.Print( "STOP:XXXXXXXX", CENTER, 25 ); // align text to center horizontally and use starndard colors |
nameless129 | 2:0090839c8276 | 49 | |
nameless129 | 2:0090839c8276 | 50 | fp = fopen("/sd/2.mp3", "rb"); |
nameless129 | 2:0090839c8276 | 51 | |
nameless129 | 2:0090839c8276 | 52 | //Get file size |
nameless129 | 2:0090839c8276 | 53 | fseek( fp, 0, SEEK_END ); |
nameless129 | 2:0090839c8276 | 54 | fileSize = ftell( fp ); |
nameless129 | 2:0090839c8276 | 55 | printf("file size:%d\r\n",fileSize); |
nameless129 | 2:0090839c8276 | 56 | |
nameless129 | 2:0090839c8276 | 57 | //move file pointer to top. |
nameless129 | 2:0090839c8276 | 58 | rewind(fp); |
nameless129 | 2:0090839c8276 | 59 | |
nameless129 | 2:0090839c8276 | 60 | if (fp) { |
nameless129 | 2:0090839c8276 | 61 | clearerr(fp); |
nameless129 | 2:0090839c8276 | 62 | totalSizeSent = 0; |
nameless129 | 2:0090839c8276 | 63 | } |
nameless129 | 2:0090839c8276 | 64 | while(1) |
nameless129 | 0:5f0e931ae677 | 65 | { |
nameless129 | 2:0090839c8276 | 66 | if(totalSizeSent>=fileSize) |
nameless129 | 2:0090839c8276 | 67 | { // Close when the track reaches the end |
nameless129 | 2:0090839c8276 | 68 | mp3.stop(); |
nameless129 | 2:0090839c8276 | 69 | fclose(fp); |
nameless129 | 2:0090839c8276 | 70 | fp = NULL; |
nameless129 | 2:0090839c8276 | 71 | printf("stop\r\n"); |
nameless129 | 2:0090839c8276 | 72 | while(1) |
nameless129 | 2:0090839c8276 | 73 | { |
nameless129 | 2:0090839c8276 | 74 | } |
nameless129 | 2:0090839c8276 | 75 | } |
nameless129 | 2:0090839c8276 | 76 | else |
nameless129 | 2:0090839c8276 | 77 | { |
nameless129 | 2:0090839c8276 | 78 | sizeRead = fread(buf, sizeof(uint8_t), SD_READ_BLOCK_SIZE, fp); |
nameless129 | 2:0090839c8276 | 79 | totalSizeSent += mp3.sendDataBlock(buf, sizeRead); |
nameless129 | 2:0090839c8276 | 80 | //printf("total %d Send %d\r\n",totalSizeSent,sizeRead); |
nameless129 | 2:0090839c8276 | 81 | } |
nameless129 | 2:0090839c8276 | 82 | } |
nameless129 | 0:5f0e931ae677 | 83 | } |