Elektronika, ukázky pro STM8S103F3, plus programování v assembleru. |
|
Jde o radiopřijímač VKV, s modulem s Si4703 podporující příjem dat z RDS. Modul se ovládá pomocí sběrnice i2c.
Čtení i zápis řídících slov do registrů je velmi podobný předtím popsanému modulu s čipem TEA5767. Během zápisu i čtení se žádná čísla registrů nezadávají.
Prostě odešlete/přečtete souvislou řadu byte.
V datasheetu Si4703 sice registry číslovány jsou, ale asi jen pro orientaci. Registry jsou šestnactibitové a je
jich celkem šestnáct (32 byte).
Propojení modulů je opět velmi jednoduché: napájení 3.3V, dva datové vodiče pro i2c (scl, sda), GPIO2 kvůli přerušení a RST (reset), nutný při zapnutí modulu. Toto schéma není úplné, je nutný ještě displej a nějaké ovládání. Ovládat se může buď pomocí tlačítek, nebo infra ovladačem. Na modulu je konektor 3,5mm jack, který slouží k připojení sluchátek. Kabel od sluchátek je zároveň anténa. Pokud by se měl připojit nf zesilovač, anténa se připojuje k pravému kanálu konektoru jack, tak jak je naznačeno ve schématu. Ladění frekvencí je oproti TEA5767 jednodušší. Zadává se přímo číslo kanálu, které lze snadno vypočítat.
frekvence[khz] - okraj pásma
kanál = ----------------------------
šířka kanálu[kHz]
Například pro 99.3MHz (Evropa2 z vysílače Praděd) vyjde číslo kanálu 118.
99300 - 87500 993 - 875
99.3 MHz => ------------- => pokrátit / 100 => --------- => 993 - 875 = 118
100 1
Stačí tedy prostě vzít požadovanou frekvenci v MHz bez desetinné čárky, od ní odečíst 875 a máte číslo kanálu.
Šířka kanálu je pro Evropu 100 kHz a nastavuje se v registru 0x05 položka "channel spacing" bity[5:4]. Pozor, defaultně je zde přednastaveno 200 kHz (USA). Celé nastavení
konfigurace je patrné ze zdrojáku níže.
Čtení dat z RDS:
Určující slovo RDSB vypadá asi nějak takto: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 --- typ bloku --- ver --------- PTY --------- TP TA - pozice textu -
Ukázka zde pracuje s typem bloku 0A/0B - název stanice, 2A/2B - radiotext a 4A - časová značka. Pokud jde o text (název, radiotext), jsou znaky umístěny v RDSC pouze u
verze A (viz bit 11 RDSB) a vždy v RDSD. U verze B jsou znaky pouze v RDSD, RDSC obsahuje nějakou jinou informaci. U verze A jsou to tedy čtyři znaky a u verze B dva.
Kam fragment textu patří je určeno v RDSB v bitech 3-0. Délka vysílaného radiotextu může mít 64 znaků u verze A a 32 znaků u verze B. Obsah RDSC a RDSD u časové značky:
RDSC RDSD
15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0
-- hod 5 bitu -- - minuty 6 bitu - +/- -- UTC --
Si4703 by měl umět ošetřit případné chyby přenosu. Ve stavovém registru 0x0B jsou položky BLERB, BLERC, BLERD (BLERA je v registru 0x0A) vždy po dvou bitech, které udávají chybovost přenosu pro každý blok. Pokud je přenost bez chyby, obsahují nulovou hodnotu. Aby "BLERy" fungovaly musí být zapnut "RDS verbose", což je bit 11 v registru 0x02 (RSDM=1). V ukázce testuji bloky B, C a D, které uložím do paměti pouze v případě bezchybného přečtení.
název stanice a radiotext v paměti
Zdrojový kód: 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 |