Modułowy odtwarzacz MP3 (2)
Kontynuujemy prezentację rozwiązań umożliwiających szybką i wygodną budowę popularnego urządzenia jakim jest odtwarzacz MP3.
Moduł z portem USB
Zachęcony pozytywnymi doświadczeniami z modułem odtwarzacz MP3 o oznaczeniu YX5300 zakupiłem, również w bardzo przystępnej cenie, kolejny moduł odtwarzacz MP3 potrafiący odtwarzać pliki z karty SD, ale również z pamięci z interfejsem USB, czyli z tak zwanego pendrive’a. Tego rodzaju pamięć jest dużo wygodniejsza od karty SD, bo nie wymaga dodatkowego czytnika, a port USB jest w każdym komputerze.
Kłopoty z dokumentacją
Po dostarczeniu modułu okazało się, że jest problem z dokumentacją. Sprzedawca przesłał mi link do dokumentacji… po chińsku. Pomimo wielu poszukiwań nie udało mi się dotrzeć do dokumentacji napisanej po angielsku. Z konieczności musiałem się posłużyć translatorem Google. Tłumaczenie z chińskiego na polski mówiąc oględnie nie zachwyciło, tłumaczenie z chińskiego na angielski było lepsze, ale tylko trochę. Pozostało posiłkować się częściowymi informacjami i uzupełniać je metodą eksperymentów. Taka metoda okazała się bardzo pracochłonna, ale pozwoliła na zweryfikowanie działania przynajmniej najważniejszych komend pozwalających na uruchomienie odtwarzania.
Jak już wspomniałem moduł może odtwarzać pliki dźwiękowe z dwu nośników: karty SD i pamięci pendrive (USB). Podstawowe właściwości modułu zostały pokazane w tabeli 1, a parametry w tabeli 2.
Tabela 1. Podstawowe właściwości modułu opisanego w artykule (odtwarzacz MP3)
Parametr | Wartość |
Częstotliwość próbkowania | 8/11, 025/12/16/22,05/24/32/44,1/48kHz |
Rozdzielczość przetwornika | 24 bity |
Zakres dynamiczny | 90 dB, 85 dB SNR |
Format | FAT16, FAT32 |
Foldery/pliki | 255 folderów po 1000 plików |
Interfejs sterujący | UART lub sterowanie przyciskami |
Regulacja poziomu sygnału | Cyfrowa (UART) lub za pomocą potencjometru na płytce modułu |
Charakterystyka częstotliwościowa | 5 ustawień equalizera FLAT, POP, ROCK, JAZZ, CLASIC, BASS |
Tabela 2. Podstawowe parametry modułu opisanego w artykule (odtwarzacz MP3)
Format plików dźwiękowych | mp3 11172-3 i ISO13813-3 Layer3 |
Interfejs USB | 2.0 |
Interfejs sterujący | UART 9600, 1, N poziom TTL |
Napięcie zasilania | 3,3V….5,4V |
Pobór prądu | 15 mA (bez pendrive) |
Temperatura pracy | -40…+70˚ stC |
Wilgotność | 5…95% |
Zasilanie i sterowanie odbywa się przez złącze goldpinów – rysunek 5. Wyprowadzenia mają następujące funkcje
- MUTE – sprzętowe wyciszenie – aktywne, kiedy na wejściu jest stan wysoki
- ADKEY – sprzętowe sterowanie funkcjami odtwarzania
- VCC – napięcie zasilające (3,3V….5,4V)
- RxD – linia odbieranych danych z punktu widzenia modułu
- TxD – linia wysłanych danych z punktu widzenia modułu
- GND – masa
Poza złączem sterującym, w jaki wyposażono odtwarzacz MP3, można podłączać słuchawki stereofoniczne do standardowego złącza Jack 3,5 mm, lub głośnik do dwu wyprowadzeń SP- i SP+.
Rysunek 5. Sterowanie przez wejście ADKEY
Interfejs sterujący UART
Komendy sterujące modułem można przesyłać wykorzystując standardowy interfejs sterujący UART. Parametry transmisji to: prędkość 9600 Bd, jeden bit stopu, brak bitu parzystości i brak sterowania przepływem danych. Podobnie jak w przypadku YX5300, do sterowania wystarczą dwie linie RxD i TxD.
Format ramki sterującej został pokazany w tabeli 6. Od razu rzucają się w oczy podobieństwa z układem YX5300, co sugeruje tego samego producenta układu scalonego.
Tabela 6. Format ramki sterującej
Bajt startu 7Eh | Ilość bajtów | komenda | Parametr1 | Parametr 2 | Bajt stopu EFh |
Ilość bajtów = komenda + parametr1 + parametr2 + bajt stopu.
Pola Parametr 1 i/lub Parametr2 nie muszą występować
Ramka rozpoczyna się od bajtu startu 7Eh. Po nim następuje bajt określający ilość przesyłanych bajtów od bajtu komendy do bajtu stopu, lub co na to samo wychodzi, ilość wszystkich bajtów w ramce bez bajtu startu i stopu. Pola parametru mogą nie występować w ogóle, lub może ich być różna ilość zależnie od rodzaju komendy. Każda ramka kończy się bajtem stopu o wartości EFh.
Podstawowe komendy odtwarzacza
Zestaw podstawowych komend został pokazany w tabeli 7. W tym przypadku ramka sterująca nie zawiera pola parametrów. Na przykład, żeby wykonać komendę PLAY, trzeba wysłać sekwencję
7E 02 01 EF, a komendę PAUSE sekwencję 7E 02 02 EF.
Tabela 7. Podstawowe komendy odtwarzania
Kod komendy | Komenda |
01h | PLAY |
02h | PAUZA |
03h | Następny utwór (plik) |
04h | Poprzedni utwór (plik) |
05h | Głośniej (VOL+) |
06h | Ciszej (VOL-) |
07h | Tryb obniżonego poboru energii (STANBY –ON) |
09h | Praca normalna (STANBY-OFF) |
0ah | Szybkie przewijanie do przodu (FORWARD) |
0bh | Szybkie przewijanie do tyłu (REWIND) |
0eh | STOP |
Po wysłaniu komendy moduł odpowiada wysłaniem sekwencji znaków ASCII:
- „OK” dla prawidłowo rozpoznanej i zdekodowanej komendy
- „ERR” dla nierozpoznanej komendy
Pytania o konfigurację
Kolejny zestaw komend umożliwia zapytanie modułu o ustawione parametry, na przykład o status odtwarzania, ustawioną głośność, ilość plików itp. Po wysłaniu komendy moduł odpowiada maksymalnie 16-bitową liczbą zapisaną za pomocą 4 znaków ASCII.
Tabela 8. Komendy zapytania o ustawienia modułu
Kod komendy | Komenda | Odpowiedź (4 znaki ASCII) |
10h | status odtwarzania | 0-STOP, 1-PLAY, 2-PAUZA, 3 –FFORW, 4-FREW |
11h | poziom głośności | 0-30 ustawiony poziom głośności |
12h | ustawienia equalizera | 0-5 (FLAT\POP\ROCK\JAZZ\CLASSIC\BASS) |
13h | tryb odtwarzania | 0-4 Wszystkie\folder\jeden\RANDOM |
14h | numer wersji | 1,0 |
15h | ilość plików na karcie SD | 1-65536 |
16h | ilość plików na pendrive | 1-65536 |
18h | Aktualnie używana pamięć | 0-USB 1-SD |
19h | Aktualnie odtwarzany plik z karty SD | 1-65536 |
1Ah | Aktualnie odtwarzany plik z pendrive | 1-65536 |
1Ch | Całkowity czas odtwarzanego utworu w sekundach | Czas w sekundach |
1Dh | Bieżący czas odtwarzanego utworu w sekundach | Czas w sekundach |
1Eh | Nazwa odtwarzanego utworu |
Na przykład żeby odczytać ustawiony poziom głośności trzeba wysłać 7E 02 11 EF. Moduł odpowie na przykład znakami ASCII 30h, 30h, 30h, 39h (0009h), co oznacza liczbę 9dec jeżeli komenda jest prawidłowo rozpoznana (jest zwracane „OK”). Kiedy komenda nie zostanie prawidłowo rozpoznana jest zwracany kod błędu „Err”.
W tabeli 9 jest pokazany zestaw komend z 8-bitowym argumentem (hex), przeznaczonych do konfigurowania pracy modułu.
Tabela 9. Komendy konfiguracji modułu
Kod komendy | Komenda | Argument (8-bit hex) |
31h | Ustaw głośność | 0-30 |
32h | Ustaw equalizer | 0-5 (FLAT\POP\ROCK\JAZZ\CLASSIC\BASS) |
33h | Ustaw tryb odtwarzania | 0-4 Wszystkie\folder\jeden\RANDOM |
34h | Przełącz folder | Kolejny podfolder |
35h | Przełącz nośnik | 0-USB, 1 karta SD |
37h | Wejście ADK | 1-aktywne, 0-nie aktywne |
38h | Wejście MUTE | 1-wyciszenie stan wysoki, 0-wyciszenie stan niski |
Ustawienie poziomu głośności może wyglądać następująco: 7E 03 31 1E EF.
Komendy wyboru utworu
Ostatni zestaw komend ma dwubajtowy (16-bitowy) argument i jest przeznaczony do wybierania pliku do odtwarzania.
Tabela 10. Komendy wyboru pliku do odtwarzania
Kod komendy | Komenda | Argument (16bit hex) |
41h | Wybierz utwór | Numer utworu |
42h | Wybierz plik z folderu | 8 starszych bitów określa numer folderu, 8 młodszych numer pliku (utworu) |
43h | Wybierz steram track | |
44h | Wybierz folder dla stream track |
Komenda 41h wybiera numer pliku (utworu) do odtwarzania. Na przykład żeby odtworzyć plik numer 8 trzeba wysłać komendę 7E 04 41 00 08 EF. Komendy wyboru pliku działają podobnie jak w module z YX5300. Można identyfikować pliki za pomocą indeksu, lub podając numer folderu i numer pliku w folderze.
W przypadku komendy „Wybierz plik z folderu” (42h), folder musi mieć nazwę od 01 do 99, a pliki nazwę 001…255.mp3 (lub 1…255.wav). Jeżeli foldery i pliki nie będą tak nazywane, to funkcja wyboru plików 42h nie będzie działała poprawnie. Na rysunku 18 została pokazana struktura folderów i plików zapisanych na pendrive w trakcie testowania modułu odtwarzacza.
Rysunek 6. Wymagane nazwy plików i katalogów
Żeby odtworzyć plik nr 002 z katalogu 01 trzeba wysłać komendę: 7E 04 42 01 02 EF