
Under construction
Dependencies: 4DGL-uLCD-SE SDFileSystem mbed
Fork of vs1011e by
Diff: main.cpp
- Revision:
- 1:9c5643903657
- Parent:
- 0:8a46c5988d62
--- a/main.cpp Sat Dec 10 23:20:32 2016 +0000 +++ b/main.cpp Mon Dec 12 14:31:10 2016 +0000 @@ -1,18 +1,17 @@ #include "mbed.h" #include "SDFileSystem.h" +#include "uLCD_4DGL.h" +#include "VS1002.h" -DigitalOut led1(LED1); -DigitalOut led2(LED2); -DigitalOut led3(LED3); -DigitalOut led4(LED4); +uLCD_4DGL uLCD(p28, p27, p30); DigitalIn Dreq(p26); DigitalOut XDCS(p25); DigitalOut reset(p23); DigitalOut XCS(p22); -SPI mp3Board(p11, p12, p13); -SDFileSystem sd(p5, p6, p7, p8, "sd"); //SD card +SPI mp3Board(p11, p12, p13); // mosi, miso, sclk +SDFileSystem sd(p5, p6, p7, p8, "sd"); // DI, DO, SCK, CS int killLoop = 1; int mp3Chunk; @@ -22,17 +21,67 @@ fseek(fp, 0, SEEK_END); int size = ftell(fp); fseek(fp, 0, SEEK_SET); - return size; } +void sdi_write(unsigned char datum) +{ + XCS = 1; + XDCS = 1; + XCS = 0; + while(!Dreq); + mp3Board.write(datum); + XCS = 1; +} + +/* +void sdi_write(unsigned char datum) +{ + _CS = 1; + _DCS = 1; + _CS = 0; + while(!_DREQ); + _spi.write(datum); + _CS = 1; +} +//////////////////////////////////////////////////////////////////////////// +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, PinName vol) + : + _sd(mmosi, mmiso, ssck, ccs, name), + _spi(mosi, miso, sck), + _CS(cs), + _RST(rst), + _DREQ(dreq), + _DCS(dcs), + _VOL(vol) { + + } */ +/////////////////////////////////////////////////////////////////////////// + int main() { - led1=0; - led2=0; - led3=0; - led4=0; + reset = 1; + //Sine test // So, the simplified procedure is: + XDCS = 1; //1) Always keep XDCS at logical 1. + XCS = 0; //2) Set XCS to 0, + mp3Board.write(0x02); //0x02 is the write opcode + mp3Board.write(0x00); //0x00 is the address of the sci mode register + mp3Board.write(0x0A); //0x0A (11 in dec) is the SM_SDINEW bit //send SCI command to set SCI_MODE with SM_SHARED and SM_SDINEW set to 1, + XCS = 1; //then set XCS back to 1. + mp3Board.write(0x53); //3) While XCS is 1, send sine test activation bytes, e.g. 0x53 0xef 0x6e 0x7e 0x00 0x00 0x00 0x00. + mp3Board.write(0xEF); + mp3Board.write(0x6E); + mp3Board.write(0x44); + mp3Board.write(0x00); + mp3Board.write(0x00); + mp3Board.write(0x00); + mp3Board.write(0x00); + /* + mp3Board.frequency(12000000); XCS=1; XCS=0; //pull xcs low to begin sci write. Sets mode to vs1002, mp3Board.write(0x02); //0x02 is the write opcode @@ -40,35 +89,81 @@ mp3Board.write(0x0A); //0x0A (11 in dec) is the SM_SDINEW bit XCS=1; //pulled high to end write sequence - led1=1; + uLCD.locate(0,0); + uLCD.printf("Initialized..."); FILE *mp3_file; - //printf("\n\n\nHello, wave world!\n"); - mp3_file=fopen("/sd/Putties.mp3","rb"); - - XDCS = 1; - XDCS = 0; - - - /* - fseek(mp3_file, 0, SEEK_END); - fileSize=ftell(mp3_file); - fseek(mp3_file, 0, SEEK_SET); - */ - - fileSize=getFileSize(mp3_file); + unsigned char mp3Chunk[512]; + mp3_file = fopen("/sd/GGW.mp3","rb"); - led2=1; - - fread(&mp3Chunk, 1, 100, mp3_file); - led3=1; - mp3Board.write(mp3Chunk); - - - - fclose(mp3_file); - XDCS=1; - - led4=1; - -} + if (mp3_file !=NULL) + { + uLCD.locate(0,1); + uLCD.printf("File found"); + XDCS = 1; + XDCS = 0; + fileSize=getFileSize(mp3_file); + uLCD.locate(0,3); + uLCD.printf("Filesize: "); + uLCD.locate(0,4); + uLCD.printf(" %i", fileSize); + //fread(&mp3Chunk, 1, 1, mp3_file); + uLCD.locate(0,5); + uLCD.printf("mp3 file: "); + uLCD.locate(0,6); + uLCD.printf(" %i", mp3_file); + uLCD.locate(0,7); + //uLCD.printf("mp3 chunk: "); + //uLCD.locate(0,8); + //uLCD.printf(" %i", mp3Chunk); + //would have funtion here passing the 8 bits to arm assembler code, hence the necessatity for 8 btis only! + //mp3Board.write(mp3Chunk); + uLCD.locate(0,10); + uLCD.printf("File writing..."); +////////////////////////////////////////////////////////////////////////////// + fread(&mp3Chunk, 1, 512, mp3_file); + for(int i=0; i<512; i++) + { + #ifndef FS_ONLY + //mp3Board.write(mp3Chunk[i]); + sdi_write(mp3Chunk[i]); + uLCD.locate(0,11); + uLCD.printf("... %i", i); + uLCD.locate(0,12); + uLCD.printf(".. %i", mp3Chunk[i]); + #endif + } + #ifndef FS_ONLY + //Volume set to 0 dB + XCS = 1; + XDCS = 1; + XCS = 0; //enables SCI/disables SDI + while(!Dreq); //wait unitl data request is high + mp3Board.write(0x02); //SCI write + mp3Board.write(0x0B); //register address + mp3Board.write((0 >> 8) & 0xFF); //write out first half of data word + mp3Board.write(0 & 0xFF); //write out second half of data word + XCS = 1; //enables SDI/disables SCI + wait_us(5); + #endif + for(int n=0; n<2048; n++) + { + #ifndef FS_ONLY + sdi_write(0x00); + uLCD.locate(0,13); + uLCD.printf("... %i", n); + #endif + } +//////////////////////////////////////////////////////////////////////// + fclose(mp3_file); + XDCS=1; + uLCD.locate(0,14); + uLCD.printf("File closing."); + } + else + { + uLCD.locate(0,2); + uLCD.printf("File not found"); + } + return 0;*/ +} \ No newline at end of file