|
|
#include <stdio.h>
|
|
|
#include <fat32.h>
|
|
|
#include <gpio.h>
|
|
|
#include <uart.h>
|
|
|
#include <stm32f4xx.h>
|
|
|
#include <bsp.h>
|
|
|
#include <core.h>
|
|
|
#include <VS10XX.h>
|
|
|
#include <bsp.h>
|
|
|
#include <spi.h>
|
|
|
#include <sdcard.h>
|
|
|
#include <sdcard-spi.h>
|
|
|
#include <fat32.h>
|
|
|
#include <ucdirent.h>
|
|
|
#include <string.h>
|
|
|
#include <terminal.h>
|
|
|
|
|
|
|
|
|
extern streamdevice* __opnfiles__[];
|
|
|
char buffer[512];
|
|
|
|
|
|
void randBoxesDemo()
|
|
|
{
|
|
|
int16_t x,y,w,h,t,r;
|
|
|
x=rand()%240;
|
|
|
y=rand()%320;
|
|
|
w=rand()%(240-x);
|
|
|
if(x>y)
|
|
|
r=(rand()%(y))%(320-y);
|
|
|
else
|
|
|
r=(rand()%(x))%(240-x);
|
|
|
h=rand()%(320-y);
|
|
|
t=rand()%(10);
|
|
|
ili9328paintFilRect(&lcd0,x,y,w,h,rand(),t,rand());
|
|
|
//ili9328paintFilCirc(&lcd0,x,y,r,rand(),t,rand());
|
|
|
//delay_100us(10);
|
|
|
//for(volatile int i=0;i<(1024*2);i++);
|
|
|
}
|
|
|
void tryToplay1()
|
|
|
{
|
|
|
|
|
|
extern FAT32fs sdcard2FAT32part1;
|
|
|
extern volatile vs10XXDev audioCodec0;
|
|
|
ucdirent root;
|
|
|
char direntName[]=" \n";
|
|
|
uint32_t fileLba,nextLba;
|
|
|
int i=0;
|
|
|
spisetspeed(audioCodec0.SPIdev,2000000);
|
|
|
if(DIRENT_noErr==fat32mkdirent(&sdcard2FAT32part1,&root))
|
|
|
{
|
|
|
if(DIRENT_noErr==fat32getrootfirstent(&root))
|
|
|
{
|
|
|
do{
|
|
|
fat32getdirentname(&root,direntName);
|
|
|
printf("%s\n",direntName);
|
|
|
nextLba=fat32getdirentlba(&root);
|
|
|
printf("Streaming File\n");
|
|
|
do
|
|
|
{
|
|
|
fileLba = nextLba;
|
|
|
if(sdcard2FAT32part1.part->phy->read(sdcard2FAT32part1.part->phy,buffer,fileLba,1)==RES_OK)
|
|
|
{
|
|
|
for(i=0;i<512;i+=32)
|
|
|
{
|
|
|
vs10XXstream32bytes(&audioCodec0,buffer+i);
|
|
|
}
|
|
|
}
|
|
|
}while ((fat32nextsectorlba(&sdcard2FAT32part1,fileLba,&nextLba)==DIRENT_noErr) && (!gpiogetval(BP3)));
|
|
|
//vs10XXsoftReset(&audioCodec0);
|
|
|
while (gpiogetval(BP3))delay_100us(1000);
|
|
|
printf("looking for next file\n");
|
|
|
}while (DIRENT_noErr==fat32nextdirent(&root));
|
|
|
}
|
|
|
}
|
|
|
if(DIRENT_noErr==fat32mkdirent(&sdcard2FAT32part2,&root))
|
|
|
{
|
|
|
if(DIRENT_noErr==fat32getrootfirstent(&root))
|
|
|
{
|
|
|
fat32getdirentname(&root,direntName);
|
|
|
printf("%s\n",direntName);
|
|
|
nextLba=fat32getdirentlba(&root);
|
|
|
printf("Streaming File\n");
|
|
|
do
|
|
|
{
|
|
|
fileLba = nextLba;
|
|
|
if(sdcard2FAT32part2.part->phy->read(sdcard2FAT32part2.part->phy,buffer,fileLba,1)==RES_OK)
|
|
|
{
|
|
|
for(i=0;i<512;i+=32)
|
|
|
{
|
|
|
vs10XXstream32bytes(&audioCodec0,buffer+i);
|
|
|
}
|
|
|
}
|
|
|
}while ((fat32nextsectorlba(&sdcard2FAT32part2,fileLba,&nextLba)==DIRENT_noErr) && (!gpiogetval(BP3)));
|
|
|
while (gpiogetval(BP3))delay_100us(1000);
|
|
|
}
|
|
|
}
|
|
|
if(DIRENT_noErr==fat32mkdirent(&sdcard2FAT32part3,&root))
|
|
|
{
|
|
|
if(DIRENT_noErr==fat32getrootfirstent(&root))
|
|
|
{
|
|
|
fat32getdirentname(&root,direntName);
|
|
|
printf("%s\n",direntName);
|
|
|
nextLba=fat32getdirentlba(&root);
|
|
|
printf("Streaming File\n");
|
|
|
do
|
|
|
{
|
|
|
fileLba = nextLba;
|
|
|
if(sdcard2FAT32part3.part->phy->read(sdcard2FAT32part3.part->phy,buffer,fileLba,1)==RES_OK)
|
|
|
{
|
|
|
for(i=0;i<512;i+=32)
|
|
|
{
|
|
|
vs10XXstream32bytes(&audioCodec0,buffer+i);
|
|
|
}
|
|
|
}
|
|
|
}while ((fat32nextsectorlba(&sdcard2FAT32part3,fileLba,&nextLba)==DIRENT_noErr) && (!gpiogetval(BP3)));
|
|
|
while (gpiogetval(BP3))delay_100us(1000);
|
|
|
}
|
|
|
}
|
|
|
if(DIRENT_noErr==fat32mkdirent(&sdcard2FAT32part4,&root))
|
|
|
{
|
|
|
if(DIRENT_noErr==fat32getrootfirstent(&root))
|
|
|
{
|
|
|
fat32getdirentname(&root,direntName);
|
|
|
printf("%s\n",direntName);
|
|
|
nextLba=fat32getdirentlba(&root);
|
|
|
printf("Streaming File\n");
|
|
|
do
|
|
|
{
|
|
|
fileLba = nextLba;
|
|
|
if(sdcard2FAT32part4.part->phy->read(sdcard2FAT32part4.part->phy,buffer,fileLba,1)==RES_OK)
|
|
|
{
|
|
|
for(i=0;i<512;i+=32)
|
|
|
{
|
|
|
vs10XXstream32bytes(&audioCodec0,buffer+i);
|
|
|
}
|
|
|
}
|
|
|
}while ((fat32nextsectorlba(&sdcard2FAT32part4,fileLba,&nextLba)==DIRENT_noErr) && (!gpiogetval(BP3)));
|
|
|
while (gpiogetval(BP3))delay_100us(1000);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
void tryToplay2()
|
|
|
{
|
|
|
|
|
|
extern blkdevice sdcard2blkdev;
|
|
|
int i=0,l=0;
|
|
|
|
|
|
spisetspeed(audioCodec0.SPIdev,4000000);
|
|
|
printf("Streaming File\n");
|
|
|
|
|
|
//printf("New LBA=0x%X\n",nextLba);
|
|
|
|
|
|
while(sdcard2blkdev.read(&sdcard2blkdev,buffer,l++,1)==RES_OK)
|
|
|
{
|
|
|
|
|
|
for(i=0;i<512;i+=32)
|
|
|
{
|
|
|
vs10XXstream32bytes(&audioCodec0,buffer+i);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
|
|
|
int main()
|
|
|
{
|
|
|
extern terminal_t terminal0;
|
|
|
extern volatile vs10XXDev audioCodec0;
|
|
|
printf("Volume=0x%x\n",vs10XXcmdread(&audioCodec0,VSVOL));
|
|
|
vs10XXcmdwrite(&audioCodec0,VSCLOCKF,0x2000);
|
|
|
vs10XXcmdwrite(&audioCodec0,VSVOL,0x2222);
|
|
|
printf("VSCLOCKF=0x%x\n",vs10XXcmdread(&audioCodec0,VSCLOCKF));
|
|
|
printf("VSMODE=0x%x\n",vs10XXcmdread(&audioCodec0,VSMODE));
|
|
|
terminal_clear(&terminal0);
|
|
|
// tryToplay2();
|
|
|
tryToplay1();
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|