Elektronika, ukázky pro STM8S103F3, plus programování v assembleru. |
|
Ukázka řízení modulu radiopříjímače TEA5767 přes sběrnici i2c.
Zde je modul ovládán pomocí infračerveného čidla, ale určitě není problém
to předělat na ovládání pomocí několika tlačítek. V ukázce níže je ovládání zapnutí/vypnutí a pomocí šipek ladění vpřed/zpět, a to hrubě a jemně.
Výstup z modulu rádia je sluchátkový a modul nedisponuje žádným řízením hlasitosti.
Předpokládá se připojení (stereo) zesilovače, s potenciometry.
Propojení modulů je velmi jednoduché, kromě napájení; infračidlo potřebuje jediný datový vodič a i2c dva (scl, sda). K napájení použijte
konektor mikro USB, který je na desce mikrokontroléru. Infra i modul TDA5767 je napájen z pinu 3,3V.
4 × (Frf + Fif) 4 x (98.2 + 0.225)
PLL = ----------------- například pro 98.2 MHz: ------------------- = 12 015 (0x2EEF)
Fref 0.032768
Frf = požadovaná frekvence (v MHz)
Fif = mezifrekvence, obvykle 225 kHz (0.225 MHz) Fref = referenční krok ladění, 32.768 kHz (0.032768 MHz) výsledek se zaokrouhlí na celé číslo rutina pro zápis, v registru "Y" je PLL pro kmitočet rozhlasové stanice (ladění)
...
tea5767w ;zapise pres i2c - 5 bajtu do TEA5767 v Y je ladeni
bset I2C_CR2, #0
_startw btjf I2C_SR1, #0, _startw ;start spusten
ld a, #TEA5767_ADR ;0x60
sll a ;adresa pro zapis
ld I2C_DR, a
_waitaddrw btjf I2C_SR1, #1, _waitaddrw ;cekat na ADDR
ld a, I2C_SR3 ;dummy read kvuli clear ADDR
ld a, yh ;1.byte ladeni 1
ld I2C_DR, a
_wtx1 btjf I2C_SR1, #7, _wtx1
ld a, yl ;2.byte ladeni 2
ld I2C_DR, a
_wtx2 btjf I2C_SR1, #7, _wtx2
mov I2C_DR, #$08 ;3.byte 0x08=mono / 0=stereo
_wtx3 btjf I2C_SR1, #7, _wtx3
mov I2C_DR, #$10 ;4.byte xtal
_wtx4 btjf I2C_SR1, #7, _wtx4
clr I2C_DR ;5.byte default
_wtx5 btjf I2C_SR1, #7, _wtx5
bset I2C_CR2, #1 ;i2c stop transakce
ret
...
rutina pro čtení
...
radio1 ds.b 1 ;pro cteni z TEA5767
radio2 ds.b 1
radio3 ds.b 1
radio4 ds.b 1
radio5 ds.b 1
...
tea5767r ;precte pres i2c - 5 bajtu
bset I2C_CR2, #0
_startr btjf I2C_SR1, #0, _startr ;start spusten
ld a, #TEA5767_ADR ;0x60
sll a
or a, #1 ;adresa pro cteni
ld I2C_DR, a
_waitaddrr btjf I2C_SR1, #1, _waitaddrr ;cekat na ADDR
ld a, I2C_SR3 ;dummy read kvuli clear ADDR
bset I2C_CR2, #2 ;ACK=1
_wb1 btjf I2C_SR1, #6, _wb1 ;cte 1.byte
mov radio1, I2C_DR
_wb2 btjf I2C_SR1, #6, _wb2 ;cte 2.byte
mov radio2, I2C_DR
_wb3 btjf I2C_SR1, #6, _wb3 ;cte 3.byte
mov radio3, I2C_DR
_wb4 btjf I2C_SR1, #6, _wb4 ;cte 4.byte
mov radio4, I2C_DR
bres I2C_CR2, #2 ;nasleduje posledni bajt, ACK=0 (NACK)
bset I2C_CR2, #1 ;STOP=1
_wb5 btjf I2C_SR1, #6, _wb5
mov radio5, I2C_DR ;cte 5.byte
ret
...
Modul TEA5767 nebsahuje žádné i2c registry, prostě se na sběrnici přímo odešle pět bajtů a zase se z ní může číst. Tím se celá komunikace zjednodušuje. Význam jednotlvých bajtů je popsán v datasheetu TEA5767 Vlastní program i s infra ovladačem a řízením TDA5767 zabírá 692 bajtů. V úspornosti je assembler prostě nepřekonatelný :-) Celý zdroják je zde:
všeobecné informaceU 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
a dále jsou zde velmí podrobné manuály v PDF (v angličtině) odledně popisu mikrokontroléru a jeho instrukčního souboru.
Každý zde uváděný zdroják má stejnou strukturu. Na začátku jsou deklarace adres použitých systémových registrů (UART, I2C, GPIO...), což je klíčové. Tyto adresy jsou popsány
jednak v datasheetu STM8, a také jsou k dispozici ve zdrojovém kódu, který je nainstalován spolu s prostředím ST Visual develop ve složce
[Program Files]\ STMicroelectronics\ st_toolset\ asm\ include\ STM8S103F.asm). Asi je možné ji deklarovat jako include, ale zde jsou ve zdrojáku
definovány pouze ty, které jsou použity. Rychlý návod jak vytvořit nový projekt v prostředí ST Visual Dvelop:
Tím se vytvoří projekt. Na levé straně se objeví strom Workspace, kde ve větvi source files otevřete main.asm, které je hlavní zdroják
projektu. Je předvyplněn o počáteční definici segmentů a tabulku přerušení. Můžete jej vyčistit a pak do něj přes copy-paste (CTRL+A - CTRL+C -> CTRL+V) vložit některé s
zde uváděných mých (nebo Vašich) zdrojáků. Soubory mapping.asm a mapping.inc systém vytvořil automaticky a není doporučeno do nich zasahovat, protože systém je interně
přepisuje. Do téhož workspace můžete vkládat více projektů, každý však musí mít svou složku. Nahrání (vypálení) programu do modulu:
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. |
|
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.
(c) 2026 iisivak.xf.cz |