Individální projekty MPOA

Mikroprocesory s architekturou ARM

Uživatelské nástroje

Nástroje pro tento web


2018:mp3-player

Toto je starší verze dokumentu!


Zadání

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í.


Úvod

ToDo

—-

Hardware

Najdôležitejšou súčasťou bol samozrejme vývojový kit STM32F4Discovery a k tomu pripojené nasledujúce veci:

  • napájací kábel
  • USB OTG kábel
  • reproduktor (slúchadlá) cez 3,5mm jack
  • 3 externé tlačítka

Na videu je pripojený aj displej, ktorý však ešte nieje implementovaný, preto tu nieje zapojenie.

Software

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--;
        }
      }
 
  }

Video

Pozn. - musím nahrať video s lepším mikrofónom.

Záver

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.

Zdrojový kód

Zdroje

2018/mp3-player.1548636639.txt.gz · Poslední úprava: 2019/01/28 01:50 autor: Ondrej Rehák