Toto je starší verze dokumentu!
Realizujte přehrávač souborů formátu MP3 na platformě STM32F4. Využijte vhodnou knihovnu pro softwarové dekódování MP3, USB host s FATFS. Pro ovládání připojte několik externích tlačítek. Zjistěte procentuální využití výpočetního výkonu procesoru při SW dekódování.
ToDo
—-
Najdôležitejšou súčasťou bol samozrejme vývojový kit STM32F4Discovery a k tomu pripojené nasledujúce veci:
Na videu je pripojený aj displej, ktorý však ešte nieje implementovaný, preto tu nieje zapojenie.
Kompilované pomocou príkazového riadku a Makefile, debugovane pomocou OpenOCD a ST-link/V2.1 - Linux Mint 18.3. toolchain : arm-none-eabi.
Kód je poskladaný z rôznych knižníc dostupných z odkazov. V maine sa volá funkcia ktoré načíta obsah priečinku z USB, prečíta si všetky súbory mp3, vynecháva priečinky. Z bufferu si potom naťahuje názvy pesničiek a tie prehráva v danom poradí. Po stlačení pridaného externého tlačítka na PE8 sa listuje v prehrávači naspäť, respektíve sa volí smer prehrávania. Ďalšími dvomi externými tlačidlami sa pridáva a uberá hlas.
while(fno.fname[0] != 0){ /* store all files in USB to buffer for playing - while not end of file*/ f_readdir(&dir, &fno); fn = fno.fname; if (!(fno.fattrib & AM_DIR)) { sprintf(buffer, "%s/%s", path, fn); for(k = 0; k < 16; k++) { buffer33[index_of_song][k]=buffer[k]; } index_of_song++; } } num_of_songs = index_of_song; index_of_song = 0; if (res == FR_OK) { while(1) /* This is basicly the "main" code, where songs are played in order or backwards. */ { /* The program is looped here */ if(direction == 0) { if(index_of_song > num_of_songs) { index_of_song = 0; } } else { if(index_of_song > num_of_songs) /* underflow, not correct solution, but works when there is no more than 256 songs in directory*/ { /* Todo: find better solution than store all songs in memmory - its good soluton for LCD menu thou */ index_of_song = num_of_songs; } } // Check if it is an mp3 file if (strcasecmp("mp3", cwSFGetFilenameExt(buffer33[index_of_song])) == 0) { MP3PlayFile(buffer33[index_of_song]); } if(direction == 0) { index_of_song++; } else { index_of_song--; } } }
Pozn. - musím nahrať video s lepším mikrofónom.
Cieľom projektu bolo realizovať prehrávač MP3 na vývojovej platforme STM32F4Discovery za vhodného použitia už vytvorených knižníc.
Aktuálny stav je taký, že po pripojení sa prehrávajú MP3 súbory v koreňovom adresári USB. Modrým tlačidlom sa posúvajú pesničky dopredu, ďalšie externé tlačidlá slúžia na posun vzad v prehrávaní či znižovanie a zvyšovanie hlasitosti. V pláne je ešte dorobiť LCD aby zobrazovalo príslušný prehrávaný súbor.