Elektronika, ukázky pro STM8S103F3, plus programování v assembleru.


Jednoduchý MP3 přehrávač v2

pomocí MP3 modulu DFPlayer mini

DF Player mini

Tento přehrávač s modulem DF Player mini Datasheet modulu DFPlayer mini, ze kterého jsem čerpal na internetu, již jaksi nemohu najít. Dávam zde tedy odkaz ke stažení z mých zdrojů, snad se výrobce nebude zlobit. Přehrávač je velmi podobný předtím publikovanému přehrávačí pro Arduino. Rozdíl je hlavně v tom, že pro ovládání je místo tří tlačítek použito pět. Tlačítka pro play/pause, o jeden vpřed a o jeden zpět jsou připojena přímo k modulu DF Player mini (viz schéma), který toto umožňuje. Tím se trochu ušetří programování mikrokontroléru. Tlačítka u DF Player mini vpřed/zpět zároveň regulují i hlasitost při jejich dlouhém stisku. Takovéto ovládání hlasitosti je trochu neohrabané, zde je pro hlasitost rotační enkodér. Dlouhý stisk tlačítek lze samozřejmě používat takě.
Mikrokontrolér (STM8) řídí tlačítka o deset vpřed/zpět a rotační enkodér pro hlasitost a equalizer (stiskem knoflíku). Dále reaguje na události na sériové lince (UART) a čte stav pinu BUSY modulu DF Player mini.

schema

Modul posílá info na UART při vložení a vyjmutí paměťové karty a také při připojení a odpojení kabelu USB. Trochu je problém se zjišťováním pořadí právě přehrávaného souboru. Modul sice pošle info při ukončení skladby, ale pokud posunete tlačítkem o jedno vpřed, nebo zpět, nepošle nic. Tato informace je však potřebná pro uložení do EEPROM. V programu se to řeší tak, že každých asi pět vteřin se pošle dotaz na pořadí (příkaz 0x4C, viz datasheet ke stažení níže). Do EEPROM se uloží, pouze pokud se pořadí změnilo. Naprogramováno je to samozřejmě v assembleru.
Modul ja napájen napětím 5 V, odběr do sluchátek je asi 20 mA. Napájet jej lze z konektoru mikro USB, který je na desce mikrokontroléru, nebo z pinů plus a mínus tamtéž. Tyto jsou i vhodné pro napájení z baterií. Další možnost napájení je i z USB konektoru, který je možno připojit z modulu DF Player mini. Pomocí něj lze i nahrávat paměťovou kartu, pokud jej připojíte k počítači. Dopručuji, abyste z těchto možností použili vždy pouze jednu, aby nebyly připojeny dva zdroje napájení současně (např. baterie a USB). Pro uspěšný překlad je nutný malý modul níže, pro ukládání bajtů a 16-bit slov do EEPROM mikrokontroléru. Modul lze použít obecně, do jakýchkoliv jiných projektů. Zde se ukládá pouze pořadí aktuální skladby, aby po opětovném zapnutí se nezačínalo vždy od začátku.
Pomocí programu ST Visual programmer lze do modulu STM8 vypálit již přeložený a sestavený kód, který si můžete stáhnout zde.


Ukládání dat do EEPROM

EEPROM je v mikrokontroléru STM8S103F3 umístěná na adresách 0x4000 až 0x427F, celkem 640 byte. Tento modul umožňuje ukládání bajtu (byte), nebo slova (word). Ukládaný byte se vloží do akumulátoru (ld A, [hodnota]), pokud se ukládá slovo (word), vloží se do registru Y (ldw Y, [hodnota]). Adresa na kterou se má hodnota uložit je v registru X. Adresa se zádává v rozsahu 0 - 639. V modulu se k ní přičte 0x4000. Nakonec se zavolá eeprom_zapis8, respektive eeprom_zapis16. V modulu jsou implementovány i instrukce pro čtení. Jde o prosté přečtení bajtu, nebo slova z adresy. Byte se přečte do akumulátoru (eeprom_cteni8) a slovo (eeprom_cteni16) se přečte do registru X. Adresa, odkud se má číst je v obou případech v registru X. Opět se zadává v rozsahu 0 až 639. Bližší info, viz poznámky ve zdrojáku.


všeobecné informace

Všechny zde uváděné zdrojáky mají stejnou strukturu, jsou vytvořeny podle stejné šablony. Na prvním řádku každého zdrojáku musí být direktiva stm8/, jinak překlad skončí chybou. Program má inicializační část (SETUP), kde je nastaven vrchol zásobníku, je vynulována paměť ram, nastaví se rychlost CPU a proběhne základní nastavení použitého hardware, například UART, CPI, I2C, GPIO, atd. Vyhrazené piny pro UART, SPI, I2C a analogy jsou v této tabulce:
STM8S103F3P6

určení jednotlivých pinů
Napájení5V, 3V3 a zem GND
GPIOvšechny piny An, Bn, Cn, Dn
UARTTX=pin D5, RX=pin D6
SPIMISO=pin C7, MOSI=pin C6, SCK=C5, CS/SS=pin A3
I2CSCL=pin B4, SDA=pin B5
ANALOGA0=pin C4, A1=pin D2, A2=pin D3, A3=pin D5, A4=pin D6
ST-LINKpiny pro programátor SWIM a NRST

V nekonečné smyčce (LOOP) se pak provádi samotná činnost. Úplně na konci je tabulka vektorů přerušení v segmentu vectit s popisy, které zařízení může přerušení vyvolat.
U modulů, které jsem v rámci svých možností odladil a otestoval, jsem vytvořil prográmek, který lze formou copy-paste vytáhnout (buď celý, nebo pouze potřebné kusy kódu) a použít jej v nějaké Vaší aplikaci. Zkopírovat se musí potřebný kód, proměnné v paměti a deklarace konstant (equ).

Na stránkách výrobce ST Microelectronics je ke stažení vývojové prostředí ST Visual develop, utilita ST Visual Programmer a dále jsou zde velmí podrobné manuály v PDF (v angličtině) odledně popisu mikrokontroléru a jeho instrukčního souboru.

Dúležité upozornění: Zde presentovaný modul mikrokontroléru má výstupy 5V, 3V3 a GND. Na výstupu 5V ve skutečnosti není 5 voltů, ale vstupní napětí, kterým celý tento modul napájíte, buď přes piny +/-, nebo přes konektor mikroUSB, což může být 4.5 - 15V. Buďte opatrní, co k tomu pinu (5V) připojíte, připojovaný modul můžete tímto zničit. Doporučuji modul napájet výhradně z 5V zdroje.

Vzkazník - dotazy, názory, připominky, hlášení chyb, atd:
případný E-mail nebude nikde zveřejněn, uveďte jej, pouze pokud si přejete odpověď.

Elektronika, ukázky pro Arduino a STM8, plus programování v Delphi (Lazarusu).
Všechna zapojení modulů v ukázkách (viz elektrická schémata) pracují s velmi malým napětím 3.3V až 12V a neobsahují návod na napájecí zdroj. Pokud se rozhodnete některé z těchto zařízení postavit, důrazně doporučuji používat zdroje s výstupním napětím maximálně 12V, podle schválených norem platných v ČR. Autor návodů za případné škody nepřebírá žádnou odpovědnost.
nahoru
tyto stránky jsou provozovány jako hobby, bez reklam a bez sběru osobních dat (c) 2026 iisivak.xf.cz