use VS1033(MP3 decoder) and UL024TF(TFTLCD)
Dependencies: TFTLCDwithFastIO FastIO SDFileSystem TouchPanel VS1033 mbed
Diff: main.cpp
- Revision:
- 2:0090839c8276
- Parent:
- 0:5f0e931ae677
- Child:
- 3:67e97c846cec
--- a/main.cpp Sun Jul 12 03:49:09 2015 +0000 +++ b/main.cpp Sun Jul 12 06:59:22 2015 +0000 @@ -1,25 +1,83 @@ -// include the library, this will also pull in the header for the provided fonts #include "ili9328.h" - +#include <stdio.h> +#include "mbed.h" +#include "SDFileSystem.h" +#include "VS1053.h" + // prepare the data bus for writing commands and pixel data BusOut dataBus( P1_28,P2_3,P1_18,P1_24,P1_19,P1_26,P1_27,P1_25 ); // 16 pins // create the lcd instance //(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) ILI9328_LCD lcd( P0_12, P0_11, P0_13, P0_14, &dataBus, NC, P1_9 ); // control pins and data bus - + +SDFileSystem sd(/*MOSI*/ P0_9, /*MISO*/ P0_8, /*SCK*/ P1_29, /*CS*/ P0_2, /*Mountpoint*/ "sd"); +VS1053 mp3(/*MOSI*/ P1_22 , /*MISO*/ P1_21, /*SCK*/ P1_20, /*CS*/ P1_23, + /*BSYNC*/ P2_16, /*DREQ*/ P2_17, /*RST*/ P2_18, /*SPI freq.*/ 10000000); + + +#define SD_READ_BLOCK_SIZE (1024) + int main() { - // initialize display - place it in standard portrait mode and set background to black and - // foreground to white color. + static FILE *fp = NULL; + size_t sizeRead = 0; + size_t totalSizeSent=0; + size_t fileSize=0; + uint8_t buf[SD_READ_BLOCK_SIZE]; + + printf("Power ON\r\n"); + + //LCD Init. lcd.Initialize(LANDSCAPE,RGB16); - // set current font to the smallest 8x12 pixels font. + +/* for sine test mode */ +// mp3.sine_test_activate(SineWave_10k); +// while(1); + + //MP3 decoder Init. + mp3.hardwareReset(); + mp3.sci_init(); + mp3.sdi_init(); + wait(0.1); + + printf("init CMPL.\r\n"); + lcd.SetBackground(COLOR_BLUE); lcd.FillScreen(-1); lcd.SetFont( &TerminusFont ); lcd.Print( "STOP:XXXXXXXX", CENTER, 25 ); // align text to center horizontally and use starndard colors - - while ( 1 ) + + fp = fopen("/sd/2.mp3", "rb"); + + //Get file size + fseek( fp, 0, SEEK_END ); + fileSize = ftell( fp ); + printf("file size:%d\r\n",fileSize); + + //move file pointer to top. + rewind(fp); + + if (fp) { + clearerr(fp); + totalSizeSent = 0; + } + while(1) { - - } + if(totalSizeSent>=fileSize) + { // Close when the track reaches the end + mp3.stop(); + fclose(fp); + fp = NULL; + printf("stop\r\n"); + while(1) + { + } + } + else + { + sizeRead = fread(buf, sizeof(uint8_t), SD_READ_BLOCK_SIZE, fp); + totalSizeSent += mp3.sendDataBlock(buf, sizeRead); + //printf("total %d Send %d\r\n",totalSizeSent,sizeRead); + } + } }