Odtwarzacz plików WAV zbudowany na mikrokontrolerze z rdzeniem ARM.

Wav Player ImageWav Player ImageWav Player ImageWav Player Image

 

1. Odtwarzacz umożliwia następującą funkcjonalność:
-odtwarzanie plików wav w formacie stereo, próbkowaniem 22500 Hz, oraz rozdzielczością 8 bitów,
-wyświetlanie nazw utworów,
-wyświetlanie czasu trwania utworu,
-możliwość zatrzymywania (pauza) oraz przełączania piosenek,
-możliwość płynnej regulacji głośności (+, -),
-sczytywanie danych z karty pamięci MMC umieszczonej w slocie,
-wyświetlanie stanu bieżącego na alfanumerycznym wyświetlaczu LCD,
-możliwość włączenia kolejności losowej odtwarzanych utworów

2. Do budowy takiego układu wykorzystane zostały następujące elementy:
-mikrokontroler SAM7S,
-wyświetlacz alfanumeryczny LCD ze sterownikiem HD44780,
-4 przyciskowa klawiatura,
-gniazdo kart pamięci,
-karta pamięci Multimedia Memory Stick (MMC) lub opcjonalnie SD

3. Zasada działania urządzenia jest dość prosta.
a) Dane z karty pamięci
| SPI
b) uC SAM7S
| PWM
c) AUX

ad. a) Dane z karty pamięci sczytywane są dzięki wykorzystaniu modułu FatFS służącemu do obsługi formatu plików FAT16, FAT32 występujących na kartach pamięci. Dzięki takim zabiegom dane odtwarzane są wprost z plików wav, które zostały wcześniej zapisane na karcie pamięci przy użyciu zwykłego komputera klasy PC. Sczytywane dane zapisywane są do 2 buforów - jest to wymagane gdyż odczyt danych nie może zakłócać aktualnie odtwarzanej muzyki.
Moduł FatFs został napisany zgodnie z ANSI C, przez co jest niezależny od warstwy sprzętowej i może być z łatwością przenoszony na różne typy mikroprocesorów. Obsługa karty odbywa się za pośrednictwem interfejsu SPI, przez co zajmowane są tylko 3 końcówki mikroprocesora - linie danych MISO, MOSI, oraz linia zegara CLK. Karta wymaga zasilania napięciem 3.3V, które jest również równe napięciu zasilania procesora SAM7S.

ad. b) W mikrokontrolerze skonfigurowany jest timer PIT do zgłaszania okresowych żądań przerwań z częstotliwością 22,5kHz - częstotliwość próbkowania plików muzycznych. W obsłudze przerwania następuje sprawdzenie który bufor danych jest obecnie używany i z niego odpowiednie wartości indeksów bufora są przekazywane do rejestrów wypełnienia generatora PWM. Wartości te odpowiadają dwóm kolejnym indeksom tablicy reprezentującym 2 kanały dźwięku (lewy i prawy). W momencie osiągnięcia przez indeks maksymalnej długości tablicy następuje zmiana bufora, oraz zostaje ustawiona flaga nakazująca programowi głównemu odczyt kolejnej porcji danych do drugiego bufora.

ad. c) Odtwarzacz wykorzystuje 2 niezależne kanały PWM, które są skonfigurowane do pracy z rozdzielczością 8 bitów, oraz częstotliwością MCK/8. Współczynnik wypełnienia fali generatora PWM jest zależna od danych pobranych z bufora i jest proporcjonalny do napięcia na wyjściu odpowiedniej końcówce układu.

Schematic:

 

Charakterystyka procesora AT91SAM7S256:
* Internal High-speed Flash - 256 Kbytes Organized in 1024 Pages of 256 Bytes
* Internal High-speed SRAM - 64 Kbytes
* Reset Controller
* AIC- Advanced Interrupt Controller
* DBGU, 2-wire UART, 2 USART
* PIT - 20-bit Programmable Counter plus 12-bit Interval Counter
* RTT - 32-bit Free-running Counter
* PIO - 32 Programmable I/O Lines
* SPI - to 16-bit Programmable Data Length
* One Three-channel 16-bit Counter
* 1 Four-channel 16-bit PWM Controller
* 1 8-channel 10-bit Analog-to-Digital Converter
* Power Supplies - 3.3V

PLIKI:
wav_player.zip - files
main.c - txt format

 
>