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.

 Zachęcamy też do przeczytania części pierwszej artykułu

 

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

O autorze