OK. Acum aveţi nevoie de un … MP3 Player

by donpedro

Adoptarea formatului MP3 a produs o revoluţie în tehnologia compresiei digitale a sunetelor, prin faptul că fişierele audio au putut deveni mult mai mici. Dacă se doreşte introducerea în diferite proiecte a unor mesaje audio sau muzicale, acest lucru este acum facil. Este nevoie doar de un card de memorie MMC sau SD, câteva cipuri şi puţin timp…

de Milan Rajic, Mikroelektronika – Departamentul de Software

Înainte de a începe, este necesar să se formateze card-ul MMC şi să se salveze în el fişierul sound1.mp3. (card-ul ar trebui formatat ca FAT16, adică format FAT).
Calitatea sunetului codificat în format MP3 depinde de rata de eşantionare şi de rata de biţi. Similar cu un CD audio, majoritatea fişierelor MP3 sunt eşantionate la 44,1kHz. Rata de biţi (bitrate) a fişierului MP3 este un indicator al calităţii fişierului audio comprimat în comparaţie cu cel original necomprimat, adică fidelitatea acestuia. O viteză de 64kbit/s este suficientă pentru reproducere de voce, în timp ce aceasta trebuie să fie de 128kbit/s sau mai mult pentru reproducere de muzică. În acest exemplu este utilizat un fişier de muzică cu un bit rate de 128kbit/s.

Hardware
Sunetul conţinut în acest fişier este codificat în format MP3, astfel încât pentru decodarea acestuia este necesar un decoder MP3. În exemplu, cipul VS1011E este utilizat în acest scop. Acest cip decodează înregistrările MP3 şi realizează conversia digital-analogică a semnalului pentru a produce un semnal care poate fi transmis difuzoarelor audio printr-un mic amplificator audio.
Considerând că memoriile MMC/SD utilizează selecţii cu o mărime de 512 byte, este necesar un microcontroler cu memorie RAM de 512 byte sau mai mult în scopul de a controla procesul de decodare MP3. A fost ales PIC18F4520 cu 1536 byte RAM.

Software

Programul care controlează operarea acestui dispozitiv constă din 5 paşi:
Pasul 1: Iniţializarea modulului SPI al microcontrolerului.
Pasul 2: Iniţializarea bibliotecii Mmc_FAT16 a compilatorului, care permite citirea fişierelor MP3 din card-urile MMC sau SD.
Pasul 3: Citirea parţială din fişier.
Pasul 4: Transmiterea datelor la buffer-ul decoderului MP3.
Pasul 5: Dacă nu s-a ajuns la sfârşitul fişierului, salt la pasul 3.

Testare
Este recomandat să se înceapă testarea operării dispozitivului cu un bitrate scăzut şi acesta să se crească gradual. Buffer-ul decoderului MP3 are o dimensiune de 2048 octeţi. Dacă buffer-ul este încărcat cu o parte din fişierul MP3 cu un bitrate de 128kbit/s, acesta va conţine de două ori numărul de eşantioane de sunet decât atunci când este încărcat cu o parte de fişier cu un bitrate de 256 kbit/s. În concordanţă, dacă bitrate-ul fişierului este mai scăzut, dispozitivului îi va lua de două ori mai mult să codeze conţinutul buffer-ului.
Dacă se exagerează birate-ul fişierului, se poate întâmpla situaţia în care conţinutul buffer-ului să fie codat înainte ca microcontrolerul să reuşească să citească următoarea parte din fişierul din card şi să o scrie în buffer, ceea ce va cauza o discontinuitate a sunetului.

Dacă acest lucru se întâmplă, se poate reduce bitrate-ul fişierului MP3 sau se poate utiliza un cristal de cuarţ de 8MHz sau mai mult. (Consultaţi Schema 1)
Oricum, aceste lucruri nu trebuie să îngrijoreze în cazul acesta din moment ce programul prezentat a fost testat pe câteva familii de microcontrolere cu diferite valori ale cristalului şi acesta este capabil să decodeze fişiere MP3 de calitate medie şi ridicată.
Pe de altă parte, un bitrate scăzut înseamnă că buffer-ul decoder este plin cu sunet de durată mai mare. Se poate întâmpla ca decoderul să nu decodeze conţinutul buffer-ului înainte ca acesta să fie reîncărcat. Pentru a evita acest lucru, este necesar să se asigure că decoderul este gata să primească date noi înainte ca acestea să fie trimise.
Cu alte cuvinte, este necesar să se aştepte până când semnalul de cerere a datelor (DREQ) al decoderului este setat la valoarea logică unu (1).

Îmbunătăţiri
Acest exemplu poate de asemenea fi extins după ce este testat. Semnalul DREQ poate fi testat periodic. În program poate fi integrată o rutină pentru controlul volumului sau control al Bass/Treble. Biblioteca MMC permite selectarea unui fişier cu un nume diferit.
În acest fel este posibil să se creeze un set de mesaje MP3, sunete sau melodii care să fie folosite în alte aplicaţii şi să se trimită fişiere MP3 corespunzătoare decoderului în funcţie de nevoi.

Dedesubt este o listă de funcţii gata de utilizat conţinute de Biblioteca Mmc_FAT16. Această bibliotecă este integrată în compilatorul mikroC PRO pentru PIC.

Mmc_Fat_Append() Scrie la sfârşitul fişierului
Mmc_Fat_Assign()* Alocă fişierul pentru operaţii FAT
Mmc_Fat_Delete() Şterge fişierul
Mmc_Fat_Get_File_Date() Obţine ora şi data fişierului
Mmc_Fat_Get_File_Size() Obţine dimensiunea fişierului
Mmc_Fat_Get_Swap_File() Creează unui fişier swap
Mmc_Fat_Init()* Iniţiază card-ul pentru operaţii FAT
Mmc_Fat_QuickFormat() Formatare rapidă
Mmc_Fat_Read()* Citeşte date din fişier
Mmc_Fat_Reset()* Deschide fişierul pentru citire
Mmc_Fat_Rewrite() Deschide fişierul pentru scriere
Mmc_Fat_Set_File_Date() Setează data şi ora fişierului
Mmc_Fat_Write() Scrie date în fişier

* Funcţii Mmc_FAT16 utilizate în program

Alte funcţii mikroC for PIC utilizate în program:
Spi_Init_Advanced() Iniţializarea modulului SPI al microcontrolerului

Exemplul 1: Program care demonstrează operarea modulului Smart MP3

NOTÃ
Programul pentru acest exemplu este scris pentru microcontrolerele PIC® în C, Basic şi Pascal, pe dar pagina web: www.mikroe.com/en/article/ pot fi găsite şi programe scrise pentru microcontrolere dsPIC® şi AVR®.

Contact
MikroElektronika
www.mikroe.com

Microchip®, logo-ul şi combinaţii ale acestora, PIC® şi alte mărci înregistrate sunt mărci ale Microchip Corporation sau ale subsidiarilor acestuia. Alţi termeni sau nume de produse pot fi de asemenea mărci comerciale ale altor companii.

S-ar putea să vă placă și

Adaugă un comentariu