AN451
IMPLEMENTÁCIA BEZDRÔTOVÉHO SOFTVÉRU M-BUS
Úvod
Táto aplikačná poznámka popisuje implementáciu Wireless M-Bus Silicon Labs pomocou Silicon Labs C8051 MCU a EZRadioPRO®. Wireless M-bus je európska norma pre aplikácie na odčítanie meračov využívajúcich frekvenčné pásmo 868 MHz.
Hromadné vrstvy
Wireless M-Bus využíva 3-vrstvový IEC model, ktorý je podmnožinou 7-vrstvového OSI modelu (pozri obrázok 1).
Fyzická (PHY) vrstva je definovaná v EN 13757-4. Fyzická vrstva definuje, ako sú bity kódované a prenášané, charakteristiky RF modemu (čipová rýchlosť, preambula a synchronizačné slovo) a RF parametre (modulácia, stredná frekvencia a frekvenčná odchýlka).
Vrstva PHY je implementovaná pomocou kombinácie hardvéru a firmvéru. EZRadioPRO vykonáva všetky funkcie RF a modemu. EZRadioPRO sa používa v režime FIFO s obsluhou paketov. Modul MbusPhy.c poskytuje rozhranie SPI, kódovanie/dekódovanie, blokové čítanie/zápis a manipuláciu s paketmi a riadi stavy transceivera.
Vrstva M-Bus Data link je implementovaná v module MbusLink.c. Rozhranie programovania aplikácií M-Bus pozostáva z verejných funkcií, ktoré možno volať z aplikačnej vrstvy v hlavnom vlákne. Modul MbusLink tiež implementuje Data Link Layer. Vrstva dátového spojenia naformátuje a skopíruje dáta z vyrovnávacej pamäte TX aplikácie do vyrovnávacej pamäte MbusPhy TX, pričom pridá požadované hlavičky a CRC.
Samotná aplikačná vrstva nie je súčasťou firmvéru M-bus. Aplikačná vrstva definuje, ako sa má formátovať široká škála údajov na prenos. Väčšina meračov potrebuje prenášať iba jeden alebo dva typy údajov. Pridanie veľkého množstva kódu na uloženie akéhokoľvek druhu údajov do glukomera by zvýšilo zbytočný kód a náklady na glukomer. Mohlo by byť možné implementovať knižnicu alebo hlavičku file s vyčerpávajúcim zoznamom typov údajov. Väčšina zákazníkov meračov však presne vie, aký druh údajov potrebuje prenášať, a podrobnosti o formátovaní si môže prečítať v norme. Univerzálny čítač alebo sniffer môže implementovať kompletnú sadu aplikačných dátových typov na PC GUI. Z týchto dôvodov je aplikačná vrstva implementovaná pomocou naprampaplikácie pre merač a čítačku.
Požadované štandardy
- EN 13757-4
EN 13757-4
Komunikačný systém pre merače a diaľkový odpočet meračov
Časť 4: Bezdrôtový odpočet
Stav rádiometra pre prevádzku v pásme SRD 868 MHz až 870 MHz - EN 13757-3
Komunikačný systém pre merače a diaľkový odpočet meračov
Časť 3: Vyhradená aplikačná vrstva - IEC 60870-2-1:1992
Zariadenia a systémy na diaľkové ovládanie
Časť 5: Prenosové protokoly
Časť 1: Postup prenosu odkazu - IEC 60870-1-1:1990
Zariadenia a systémy na diaľkové ovládanie
Časť 5: Prenosové protokoly
Časť 1: Formáty prenosových rámcov
Definície
- M-Bus —M-Bus je káblový štandard pre odčítanie meračov v Európe.
- Bezdrôtový M-Bus—Bezdrôtová zbernica M-Bus pre aplikácie odčítania meračov v Európe.
- PHY— Fyzická vrstva definuje, ako sa dátové bity a bajty kódujú a prenášajú.
- API —Rozhranie aplikačného programátora.
- LINK —Vrstva dátového spojenia definuje, ako sa prenášajú bloky a rámce.
- CRC —Kontrola cyklickej redundancie.
- FSK —Kľúčovanie s frekvenčným posunom.
- Čip-Najmenšia jednotka prenášaných dát. Jeden dátový bit je zakódovaný ako viacero čipov.
- Modul —Zdroj AC kódu .c file.
Popis funkcie M-Bus PHY
Preambulová sekvencia
Sekvencia preambuly špecifikovaná špecifikáciou M-bus je celé číslo striedajúce sa nuly a jednotky. Jednotka je definovaná ako vyššia frekvencia a nula je definovaná ako nižšia frekvencia.
nx (01)
Možnosti preambuly pre Si443x sú celé čísla pozostávajúce zo striedajúcich sa jednotiek a núl.
nx (1010)
Preambula s ďalšou predchádzajúcou by nebola problémom, ale potom by synchronizačné slovo a užitočné zaťaženie boli nesprávne zarovnané o jeden bit.
Riešením je invertovať celý paket nastavením bitu motora v registri Modulation Control 2 (0x71). Tým sa invertuje preambula, synchronizačné slovo a údaje TX/RX. V dôsledku toho by mali byť údaje invertované pri zapisovaní údajov o vysielaní alebo čítaní údajov o prijímaní. Synchronizačné slovo je tiež invertované pred zápisom do registrov synchronizačného slova Si443x.
Synchronizácia Word
Synchronizačné slovo požadované normou EN-13757-4 je buď 18 čipov pre režim S a režim R alebo 10 čipov pre model T. Synchronizačné slovo pre Si443x je 1 až 4 bajty. Keďže však synchronizačnému slovu vždy predchádza preambula, posledných šesť bitov preambuly možno považovať za súčasť synchronizačného slova; takže prvé synchronizačné slovo je doplnené tromi opakovaniami nuly, po ktorých nasleduje jednotka. Synchronizačné slovo je doplnené pred zápisom do registrov Si443x.
Tabuľka 1. Synchronizačné slovo pre režim S a režim R
EN 13757-4 | 00 | 01110110 | 10010110 | binárne |
00 | 76 | 96 | hex | |
podložka s (01) x 3 | 01010100 | 01110110 | 10010110 | binárne |
54 | 76 | 96 | hex | |
dopĺňať | 10101011 | 10001001 | 01101001 | binárne |
AB | 89 | 69 | hex |
Tabuľka 2. Synchronizačné slovo pre merací prístroj v režime T s ostatnými
SYNCH | SYNCH | SYNCH |
SLOVO | SLOVO | SLOVO |
3 | 2 | 1 |
Dĺžka preambuly prenosu
Minimálna preambula je špecifikovaná pre štyri rôzne prevádzkové režimy. Je prijateľné mať preambulu dlhšiu, ako je špecifikované. Odpočítaním šiestich čipov pre preambulu dostaneme minimálny počet čipov pre preambulu Si443x. Implementácia pridáva dve ďalšie časti preambuly vo všetkých režimoch krátkej preambuly, aby sa zlepšila detekcia a interoperabilita preambuly. Preambula v režime S s dlhou preambulou je veľmi dlhá; takže sa používa minimálna preambula. Dĺžka preambuly v útržkoch sa zapisuje do registra Dĺžka preambuly (0x34). Register dĺžky preambuly určuje preambulu len pri prenose. Minimálne špecifikácie a nastavenia dĺžky preambuly sú zhrnuté v tabuľke 3.
Tabuľka 3. Dĺžka preambuly prenosu
EN-13757-4 minimálne |
Si443x Preambula Nastaviť ing |
Synchronizovať Slovo |
Celkom | extra | |||
nx (01) | čipy | okusuje | čipy | čipy | čipy | čipy | |
Krátka preambula režimu S | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
Dlhá preambula režimu S | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
Režim T (meter-iný) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Režim R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
Minimálna preambula pre príjem je určená registrom kontroly detekcie preambuly (0x35). Po prijatí sa musí počet bitov v synchronizačnom slove odpočítať od špecifikovanej minimálnej preambuly, aby sa určila použiteľná preambula. Minimálny čas ustálenia prijímača je 16 čipov, ak je AFC povolené, alebo 8 čipov, ak je AFC zakázané. Čas ustálenia prijímača sa tiež odpočíta od použiteľnej preambuly, aby sa určilo minimálne nastavenie pre register riadenia detekcie preambuly.
Pravdepodobnosť falošnej preambuly závisí od nastavenia registra kontroly detekcie preambuly. Krátke nastavenie 8-čipov môže mať za následok falošnú preambulu zistenú každých pár sekúnd. Odporúčané nastavenie 20 čipov robí z detekcie falošnej preambuly nepravdepodobnú udalosť. Dĺžky preambuly pre režim R a režim SL sú dostatočne dlhé na použitie odporúčaného nastavenia.
Je veľmi málo prínosné, ak preambula detekuje dlhšie ako 20 čipov.
AFC je vypnuté pre Model S s krátkou preambulou a Model T. To skracuje čas ustálenia prijímača a umožňuje dlhšie nastavenie detekcie preambuly. Keď je AFC vypnuté, režim T môže použiť odporúčané nastavenie 20 čipov. Pre Model S s krátkou preambulou sa používa nastavenie 4 kúskov alebo 20 žetónov. Vďaka tomu je pravdepodobnosť detekcie falošnej preambuly pre tento model o niečo vyššia.
Tabuľka 4. Detekcia preambuly
EN-13757-4 minimálne |
Synchronizovať Slovo |
použiteľné preambula |
Vyrovnanie RX | Zistiť min |
Si443x Preambula Nastavenie detekcie |
|||
nx (01) | čipy | čipy | čipy | čipy | čipy | okusuje | čipy | |
Krátka preambula režimu S | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Dlhá preambula modelu S | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
Model T (meter-iný) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Režim R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Poznámka: AFC vypnuté |
Prijímač je nakonfigurovaný tak, aby spolupracoval s vysielačom s použitím minimálnej špecifikovanej preambuly. To zaisťuje, že prijímač bude spolupracovať s akýmkoľvek vysielačom kompatibilným s M-bus.
Špecifikácia Wireless M-Bus vyžaduje veľmi dlhú preambulu pre režim S1 s minimálne 558 čipmi. Prenos preambuly bude trvať asi 17 ms. Si443x nevyžaduje takú dlhú preambulu a nevyužíva dlhú preambulu. Zatiaľ čo dlhá preambula je označená ako voliteľná pre režim S2, nie je dôvod používať dlhú preambulu so Si443x. Ak je požadovaná jednosmerná komunikácia, režim T1 poskytne kratšiu preambulu, vyššiu dátovú rýchlosť a dlhšiu výdrž batérie. Ak sa vyžaduje obojsmerná komunikácia pomocou režimu S2, odporúča sa krátka preambula.
Všimnite si, že prah detekcie pre Model S s dlhou preambulou je dlhší ako počet preambulových vsuviek prenášaných pre Model S s krátkou preambulou. To znamená, že prijímač režimu S s dlhou preambulou nezistí preambulu z vysielača režimu S s krátkou preambulou. Toto je potrebné, ak má prijímač režimu S s dlhou preambulou získať nejakú výhodu z dlhej preambuly.
Všimnite si, že prijímač s krátkou preambulou v režime S zistí preambulu a prijme pakety z krátkej preambuly v režime S
vysielač a vysielač režimu S s dlhou preambulou; takže vo všeobecnosti by čítačka elektromera mala používať konfiguráciu prijímača v režime S s krátkym úvodom.
Kódovanie/dekódovanie
Špecifikácia Wireless M-bus vyžaduje dve rôzne metódy kódovania. Kódovanie Manchester sa používa pre režim S a režim R. Kódovanie Manchester sa používa aj pre prepojenie medzi iným meracím prístrojom v Modeli T. Prepojenie z merača na iné zariadenie modelu T používa 3 zo 6 kódovaní.
1. Manchester Encoded/Decoding
Kódovanie v Manchestri je historicky bežné v systémoch RF na poskytovanie robustnej obnovy a sledovania hodín pomocou jednoduchého a lacného modemu. Moderné vysokovýkonné rádio ako Si443x však nepotrebuje kódovanie Manchester. Kódovanie Manchester je primárne podporované z dôvodu kompatibility s existujúcimi štandardmi, ale rýchlosť prenosu dát pre Si443x sa efektívne zdvojnásobí, keď sa nepoužíva kódovanie Manchester.
Si443x podporuje manchesterské kódovanie a dekódovanie celého paketu v hardvéri. Bohužiaľ, synchronizačné slovo nie je zakódované v Manchestri. Pre synchronizačné slovo bola zámerne zvolená neplatná Manchester sekvencia. Vďaka tomu je kódovanie Manchester nekompatibilné s väčšinou existujúcich rádií, vrátane Si443x. V dôsledku toho musí kódovanie a dekódovanie v Manchestri vykonávať MCU. Každý bajt nekódovaných dát pozostáva z ôsmich dátových bitov. Pomocou kódovania Manchester je každý dátový bit zakódovaný do dvojčipového symbolu. Pretože zakódované dáta musia byť zapísané do rádiového FIFO ôsmimi čipmi naraz, jeden kúsok dát je zakódovaný a zapísaný do FIFO naraz.
Tabuľka 5. Kódovanie Manchester
údajov | Ox12 | 0x34 | bajtov | ||
Ox1 | 0x2 | 0x3 | 0x4 | okusuje | |
1 | 10 | 11 | 100 | binárne | |
čip | 10101001 | 10100110 | 10100101 | 10011010 | binárne |
FIFO | OxA9 | OxA6 | OxA5 | Ox9A | hex |
Každý bajt, ktorý sa má preniesť, je odovzdaný jeden bajt do funkcie kódovania bajtov. Funkcia encode byte zavolá funkciu encode nibble dvakrát, najprv pre najvýznamnejšie nibble a potom pre najmenej významné nibble.
Softvérové kódovanie v Manchestri nie je ťažké. Počnúc od najvýznamnejšieho bitu je jeden kódovaný ako sekvencia čipu „01“. Nula je zakódovaná ako sekvencia žetónov „10“. To sa dá ľahko dosiahnuť pomocou slučky a posunutia dvoch bitov pre každý symbol. Je však rýchlejšie použiť jednoduchú vyhľadávaciu tabuľku so 16 položkami pre každý kúsok. Funkcia encode Manchester nibble zakóduje nibble dát a potom ich zapíše do FIFO. Čipy sú pred zápisom do FIFO invertované, aby sa zohľadnili požiadavky na invertovanú preambulu.
Pri príjme sa každý bajt vo FIFO skladá z ôsmich čipov a je dekódovaný do jedného kúsku dát. Funkcia čítacieho bloku číta jeden bajt po druhom z FIFO a volá funkciu dekódovania bajtov. Čipy sú invertované po načítaní z FIFO, aby sa zohľadnili požiadavky invertovanej preambuly. Každý bajt manchesterských kódovaných čipov je dekódovaný do kúska dát. Dekódovaný nibble sa zapíše do vyrovnávacej pamäte RX pomocou funkcie zápisu nibble RX vyrovnávacej pamäte.
Všimnite si, že kódovanie aj dekódovanie sa vykonáva po jednom kuse údajov za behu. Kódovanie do vyrovnávacej pamäte by vyžadovalo dodatočnú vyrovnávaciu pamäť, ktorá je dvakrát väčšia ako veľkosť nekódovaných údajov. Kódovanie a dekódovanie je oveľa rýchlejšie ako najvyššia podporovaná rýchlosť prenosu údajov (100 443 čipov za sekundu). Keďže Si10x podporuje viacbajtové čítanie a zápis do FIFO, existuje malá réžia pri použití iba jednobajtového čítania a zápisu. Réžia je asi 100 µs pre 512 kódovaných čipov. Výhodou je úspora RAM o XNUMX bajtov.
2. Tri zo šiestich Kódovanie Dekódovanie
Metóda kódovania Tri zo šiestich špecifikovaná v EN-13757-4 je implementovaná aj vo firmvéri na MCU. Toto kódovanie sa používa pre vysokorýchlostný (100 k čipov za sekundu) režim T z merača na druhý. Model T poskytuje najkratší čas prenosu a najdlhšiu výdrž batérie pre bezdrôtový merač.
Každý bajt dát, ktoré sa majú preniesť, je rozdelený na dve časti. Najvýznamnejšie hryzenie sa zakóduje a prenesie ako prvé. Opäť je to implementované pomocou funkcie encode byte, ktorá dvakrát volá funkciu encode nibble.
Každý kúsok dát je zakódovaný do šesťčipového symbolu. Postupnosť šesťčipových symbolov musí byť zapísaná do 8čipového FIFO.
Počas kódovania sú dva bajty údajov zakódované ako štyri časti. Každý kúsok je symbolom 6 žetónov. Štyri 6čipové symboly sú agregované ako tri bajty.
Tabuľka 6. Kódovanie troch zo šiestich
údajov | 0x12 | 0x34 | bajtov | ||||
Ox1 | 0x2 | 0x3 | 0x4 | okusuje | |||
čip | 15 | 16 | 13 | 34 | osmičkový | ||
1101 | 1110 | 1011 | 11100 | binárne | |||
FIFO | 110100 | 11100010 | 11011100 | binárne | |||
0x34 | OxE2 | OxDC | hex |
V softvéri je kódovanie troch zo šiestich implementované pomocou troch vnorených funkcií. Funkcia encode byte zavolá funkciu encode nibble dvakrát. Funkcia encode nibble využíva vyhľadávaciu tabuľku pre šesťčipový symbol a zapisuje symbol do funkcií Shift Three zo šiestich. Táto funkcia implementuje 16-čipový posuvný register v softvéri. Symbol sa zapíše do najmenej významného bajtu posuvného registra. Register sa dvakrát posunie doľava. Toto sa opakuje trikrát. Keď sa v hornom byte posuvného registra nachádza úplný bajt, je invertovaný a zapísaný do FIFO.
Pretože každý bajt dát je zakódovaný ako jeden a pol zakódovaného bajtu, je dôležité najprv vymazať posuvný register, aby bol prvý zakódovaný bajt správny. Ak je dĺžka paketu nepárne číslo, po zakódovaní všetkých bajtov zostane v posuvnom registri ešte jeden kúsok. Toto sa rieši s poštovou adresou, ako je vysvetlené v ďalšej časti.
Dekódovanie troch zo šiestich zakódovaných je opačný postup. Pri dekódovaní sa tri zakódované bajty dekódujú na dva dátové bajty. Softvérový posuvný register sa opäť používa na agregáciu bajtov dekódovaných dát. Na dekódovanie sa používa 64-položková inverzná vyhľadávacia tabuľka. Toto používa menej cyklov, ale viac pamäte kódu. Vyhľadávanie zodpovedajúceho symbolu v 16-položkovej vyhľadávacej tabuľke trvá podstatne dlhšie.
Postamble
Špecifikácia Wireless M-bus má špecifické požiadavky na postamble alebo príves. Pre všetky režimy sú minimum dva žetóny a maximum osem žetónov. Pretože minimálna atómová jednotka pre FIFO je jeden bajt, pre režim S a režim R sa používa 8-čipový prívesok. Postamble režimu T je osem čipov, ak je dĺžka paketu párna, alebo štyri čipy, ak je dĺžka paketu nepárna. Štvorčipový postamble pre nepárnu dĺžku paketu spĺňa požiadavky mať aspoň dva striedavé čipy.
Tabuľka 7. Dĺžka postamble
Dĺžka postamble (čipy) | |||||
min | max | Implementácia | sekvencia čipov | ||
Režim S | 2 | 8 | 8 | 1010101 | |
Režim T | 2 | 8 | 4 | (zvláštny) | 101 |
8 | (párne) | 1010101 | |||
Režim R | 2 | 8 | 8 | 1010101 |
Manipulátor paketov
Manipulátor paketov na Si443x môže byť použitý v režime s premenlivou šírkou paketu alebo v režime s pevnou šírkou paketu. Režim premennej šírky paketu vyžaduje bajt dĺžky paketu po synchronizačnom slove a voliteľné bajty hlavičky. Po prijatí rádio použije bajt dĺžky na určenie konca platného paketu. Pri prenose rádio vloží pole dĺžky za bajty hlavičky.
Pole L pre bezdrôtový protokol M-bus nemožno použiť pre pole dĺžky Si443x. Po prvé, pole L nie je skutočnou dĺžkou paketu. Je to počet bajtov užitočného zaťaženia spojovej vrstvy bez bajtov CRC alebo kódovania. Po druhé, samotné L-pole je kódované buď kódovaním Manchester alebo kódovaním troch zo šiestich pre merací prístroj v režime T na iné.
Implementácia používa obsluhu paketov v režime s pevnou šírkou paketu na prenos aj príjem. Po prenose vrstva PHY načíta pole L vo vyrovnávacej pamäti prenosu a vypočíta počet zakódovaných bajtov, vrátane postamble. Celkový počet kódovaných bajtov, ktoré sa majú preniesť, sa zapíše do registra Packet Length (0x3E).
Po prijatí sa prvé dva zakódované bajty dekódujú a pole L sa zapíše do prijímacej vyrovnávacej pamäte. L-pole sa používa na výpočet počtu kódovaných bajtov, ktoré sa majú prijať. Počet zakódovaných bajtov, ktoré sa majú prijať, sa potom zapíše do registra Packet Length (0x3E). Postamble sa zahodí.
MCU musí dekódovať L-pole, vypočítať počet zakódovaných bajtov a zapísať hodnotu do registra Packet Length predtým, než bude prijatá najkratšia možná dĺžka paketu. Najkratšie prípustné L-pole pre vrstvu PHY je 9, čo dáva 12 nekódovaných bajtov. To dáva 18 zakódovaných bajtov pre Model T. Prvé dva bajty už boli dekódované. Register dĺžky paketu sa teda musí aktualizovať v 16-bajtových časoch pri rýchlosti 100 kbps alebo 1.28 milisekúnd. Pre 8051 s rýchlosťou 20 MIPS to nie je žiadny problém.
Počet bajtov, ktoré sa majú prijať, nezahŕňa postamble, s výnimkou štvorčipového postamble používaného pre pakety módu T s nepárnou dĺžkou paketu. Prijímač teda nevyžaduje odosielanie, s výnimkou paketov s nepárnou dĺžkou modelu T. Tento postamble je potrebný len na poskytnutie celočíselného počtu zakódovaných bajtov. Obsah postambuly sa ignoruje; takže ak sa postamble neprenesie, budú prijaté a ignorované štyri čipy šumu. Keďže celkový počet zakódovaných bajtov je obmedzený na 255 (0xFF), implementácia obmedzuje maximálne L-pole pre rôzne režimy.
Tabuľka 8. Limity veľkosti paketov
zakódované | dekódované | M-Bus | ||||
bajtov | bajtov | Pole L | ||||
dec | hex | dec | hex | dec | hex | |
Režim S | 255 | FF | 127 | 7 F | 110 | 6E |
Režim T (meter-iný) | 255 | FF | 169 | A9 | 148 | 94 |
Režim R | 255 | FF | 127 | 7 F | 110 | 6E |
Tieto limity sú zvyčajne výrazne nad bežným prípadom použitia bezdrôtového merača. Dĺžka paketu by mala byť malá, aby sa dosiahla čo najlepšia životnosť batérie.
Okrem toho môže používateľ špecifikovať maximálne pole L, ktoré má byť prijaté (USER_RX_MAX_L_FIELD). Toto určuje požadovanú veľkosť pre prijímaciu vyrovnávaciu pamäť (USER_RX_BUFFER_SIZE).
Podpora maximálneho L-pola 255 by vyžadovala prijímaciu vyrovnávaciu pamäť 290 bajtov a maximálne 581 bajtov kódovaných v Manchestri. Obslužný program paketov by musel byť deaktivovaný a register dĺžky paketov by sa v takom prípade nedal použiť. Je to možné, ale ak je to možné, je pohodlnejšie použiť obsluhu paketov.
Použitie FIFO
Si4431 poskytuje 64 bajtové FIFO na vysielanie a prijímanie. Keďže počet zakódovaných bajtov je 255, celý zakódovaný paket sa nemusí zmestiť do 64-bajtovej vyrovnávacej pamäte.
Prenos
Pri prenose sa vypočíta celkový počet zakódovaných bajtov. Ak je celkový počet zakódovaných bajtov vrátane postamble menší ako 64 bajtov, celý paket sa zapíše do FIFO a povolí sa len prerušenie odosielaného paketu. Väčšina krátkych paketov bude odoslaná jedným prenosom FIFO.
Ak je počet zakódovaných bajtov väčší ako 64, na odoslanie paketu bude potrebných viacero prenosov FIFO. Prvých 64 bajtov sa zapíše do FIFO. Sú povolené prerušenia Packet Sent a TX FIFO Almost Empty. Prahová hodnota TX FIFO Takmer prázdne je nastavená na 16 bajtov (25 %). Pri každej udalosti IRQ sa načíta register stavu 2. Najprv sa skontroluje bit odoslaný paket a ak sa paket úplne neodoslal, do FIFO sa zapíše ďalších 48 bajtov zakódovaných dát. Toto pokračuje, kým sa nezapíšu všetky zakódované bajty a nedôjde k prerušeniu odoslaných paketov.
1. Recepcia
Pri príjme je na začiatku povolené iba prerušenie synchronizačného slova. Po prijatí synchronizačného slova sa prerušenie synchronizačného slova deaktivuje a aktivuje sa prerušenie FIFO Takmer plné. Takmer plný prah FIFO je pôvodne nastavený na 2 bajty. Prvé prerušenie FIFO Takmer plné sa používa na zistenie, kedy boli prijaté dva bajty dĺžky. Po prijatí dĺžky sa dĺžka dekóduje a vypočíta sa počet zakódovaných bajtov. Prahová hodnota RX FIFO takmer plná je potom nastavená na 48 bajtov. RX FIFO je takmer plné a sú povolené platné prerušenia paketov. Pri ďalšej udalosti IRQ sa načíta stav 1 registra. Najprv sa skontroluje bit Platný paket a potom sa skontroluje bit takmer plný FIFO. Ak je nastavený iba bit RX FIFO Almost Full, ďalších 48 bajtov sa načíta z FIFO. Ak je nastavený platný bit paketu, zvyšok paketu sa načíta z FIFO. MCU sleduje, koľko bajtov bolo prečítaných a zastaví čítanie po poslednom byte.
Vrstva dátového spojenia
Modul vrstvy dátového spojenia implementuje linkovú vrstvu vyhovujúcu 13757-4:2005. Vrstva dátového spojenia (LINK) poskytuje rozhranie medzi fyzickou vrstvou (PHY) a aplikačnou vrstvou (AL).
Vrstva dátového spojenia vykonáva nasledujúce funkcie:
- Poskytuje funkcie, ktoré prenášajú dáta medzi PHY a AL
- Generuje CRC pre odchádzajúce správy
- Detekuje chyby CRC v prichádzajúcich správach
- Poskytuje fyzické adresovanie
- Potvrdzuje prenosy pre obojsmerné komunikačné režimy
- Rámuje dátové bity
- Zisťuje chyby rámcov v prichádzajúcich správach
Link Layer Frame Format
Formát rámca Wireless M-Bus používaný v EN 13757-4:2005 je odvodený od formátu rámca FT3 (Frame Type 3) z IEC60870-5-2. Rámec pozostáva z jedného alebo viacerých blokov údajov. Každý blok obsahuje 16-bitové pole CRC. Prvý blok je blok s pevnou dĺžkou 12 bajtov, ktorý zahŕňa L-pole, C-pole, M-pole a A-pole.
- Pole L
L-pole je dĺžka dátového zaťaženia spojovacej vrstvy. To nezahŕňa samotné L-pole ani žiadne bajty CRC. Zahŕňa L-pole, C-pole, M-pole a A-pole. Tie sú súčasťou užitočného zaťaženia PHY.
Pretože počet kódovaných bajtov je obmedzený na 255 bajtov, maximálna podporovaná hodnota pre M-pole je 110 bajtov pre dáta kódované v Manchestri a 148 bajtov pre dáta kódované v režime T tri zo šiestich.
Linková vrstva je zodpovedná za výpočet L-pola pri prenose. Link-layer použije L-pole pri príjme.
Všimnite si, že pole L neudáva dĺžku užitočného zaťaženia PHY ani počet zakódovaných bajtov. Po prenose PHY vypočíta dĺžku užitočného zaťaženia PHY a počet zakódovaných bajtov. Po prijatí PHY dekóduje L-pole a vypočíta počet bajtov na dekódovanie. - C-pole
C-pole je kontrolné pole rámca. Toto pole identifikuje typ rámca a používa sa pre primitíva služby výmeny dát o linke. Pole C označuje typ rámca – ODOSLAŤ, POTVRDIŤ, ŽIADOSŤ alebo ODPOVEDAŤ. V prípade rámcov SEND a REQUEST, C-pole udáva, či sa očakáva CONFIRM alebo RESPOND.
Pri použití základnej funkcie Link TX je možné použiť akúkoľvek hodnotu C. Pri použití Primitives Link Service Primitives sa pole C vyplní automaticky podľa EN 13757-4:2005. - M-pole
M-pole je kód výrobcu. Výrobcovia môžu požiadať o trojpísmenový kód od nasledujúceho web adresa: http://www.dlms.com/flag/INDEX.HTM Každý znak trojpísmenového kódu je zakódovaný ako päť bitov. 5-bitový kód možno získať zobratím kódu ASCII a odčítaním 0x40 („A“). Tri 5-bitové kódy sú zreťazené, aby vytvorili 15-bitové. Najvýznamnejší bit je nula. - A-pole
Pole adresy je jedinečná 6-bajtová adresa pre každé zariadenie. Jedinečnú adresu by mal prideliť výrobca. Je zodpovednosťou každého výrobcu zabezpečiť, aby každé zariadenie malo jedinečnú 6-bajtovú adresu. Adresa pre rámce na odoslanie a vyžiadanie je vlastná adresa meracieho prístroja alebo iného zariadenia. Dátové rámce potvrdenia a odpovede sa odosielajú pomocou adresy pôvodného zariadenia. - CI pole
Pole CI je hlavička aplikácie a špecifikuje typ údajov v užitočnom zaťažení údajov aplikácie. Zatiaľ čo norma EN13757-4:2005 špecifikuje obmedzený počet hodnôt, funkcie Link Service Primitives povolia použitie akejkoľvek hodnoty. - CRC
CRC je špecifikovaný v EN13757-4:2005.
Polynóm CRC je:
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
Všimnite si, že M-Bus CRC sa počíta pre každý 16-bajtový blok. Výsledkom je, že každých 16 bajtov údajov vyžaduje prenos 18 bajtov,
Ďalšie informácie
Ďalšie informácie o implementácii Link Layer nájdete v „AN452: Wireless M-Bus Stack Programmers Guide“.
Správa napájania
Obrázok 2 zobrazuje časovú os správy napájania pre elektromer napramppomocou režimu T1.
MCU by mala byť v režime spánku vždy, keď je to možné, aby sa šetrila energia. V tomto example, MCU spí, keď RTC beží, keď čaká na spustenie rádiového kryštálu a keď vysiela z FIFO. MCU sa prebudí zo signálu EZRadioPRO IRQ pripojeného k budeniu Port Match.
Pri prenose správ dlhších ako jeden blok sa MCU musí prebudiť, aby naplnil FIFO (na základe takmer prázdneho prerušenia FIFO) a potom sa vrátiť do režimu spánku.
Pri čítaní z ADC by MCU mala byť v nečinnom režime spustená z oscilátora s nízkym výkonom alebo oscilátora v burst režime. ADC vyžaduje hodiny SAR.
Keď sa EZRadioPRO nepoužíva, malo by byť v režime vypnutia s kolíkom SDN nastaveným vysoko. Vyžaduje si to pevné pripojenie k MCU. Registre EZ Radio Pro nie sú zachované v režime vypnutia; takže EZRadioPro sa inicializuje v každom RTC intervale. Inicializácia rádia trvá menej ako 100 µs a šetrí 400 nA. Výsledkom je úspora energie 10 µJ na základe 10-sekundového intervalu.
Kryštál EZRadioPRO trvá POR asi 16 ms. To je dosť dlho na výpočet CRC pre približne osem blokov. MCU sa vráti do režimu spánku, ak dokončí všetky CRC skôr, ako sa kryštál stabilizuje. Ak sa vyžaduje šifrovanie, môže sa tiež spustiť čakaním na kryštálovom oscilátore.
MCU by mal pre väčšinu úloh bežať na frekvencii 20 MHz s použitím nízkoenergetického oscilátora. Úlohy, ktoré vyžadujú presný časový limit, musia namiesto režimu spánku používať presný oscilátor a režim nečinnosti. RTC poskytuje dostatočné rozlíšenie pre väčšinu úloh. Časová os správy napájania merača T2 naprampAplikácia je znázornená na obrázku 3.
Implementácia transceivera by mala byť optimalizovaná pre normálny prípad, keď sa merač prebudí a nie je prítomný žiadny čítač. Minimálne/maximálne časové limity ACK sú dostatočne dlhé na to, aby bolo možné použiť C8051F930 RTC a uviesť MCU do režimu spánku.
K dispozícii sú možnosti zostavenia pre čítačky napájané zo siete alebo USB, ktoré nemusia používať režim spánku. Nečinný režim sa použije namiesto spánku, takže USB a UART môžu prerušiť MCU.
Štúdio jednoduchosti
Prístup jedným kliknutím k MCU a bezdrôtovým nástrojom, dokumentácii, softvéru, knižniciam zdrojových kódov a ďalším. Dostupné pre Windows,
Mac a Linux!
![]() |
![]() |
![]() |
![]() |
Portfólio internetu vecí www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
Kvalita www.silabs.com/quality |
Podpora a komunita community.silabs.com |
Vylúčenie zodpovednosti
Silicon Labs má v úmysle poskytnúť zákazníkom najnovšiu, presnú a hĺbkovú dokumentáciu všetkých periférnych zariadení a modulov dostupných pre implementátorov systémov a softvéru, ktorí používajú alebo plánujú používať produkty Silicon Labs. Charakterizačné údaje, dostupné moduly a periférie, veľkosti pamäte a adresy pamäte sa vzťahujú na každé konkrétne zariadenie a poskytnuté „typické“ parametre sa môžu v rôznych aplikáciách líšiť. Aplikácia napramptu popísané sú len ilustračné. Spoločnosť Silicon Labs si vyhradzuje právo na zmeny bez ďalšieho upozornenia a obmedzenia informácií o produkte, špecifikácií a popisov uvedených v tomto dokumente a neposkytuje žiadne záruky na presnosť alebo úplnosť zahrnutých informácií. Spoločnosť Silicon Labs nenesie žiadnu zodpovednosť za následky použitia tu uvedených informácií. Tento dokument nenaznačuje ani nevyjadruje autorské práva udelené podľa tohto dokumentu na navrhovanie alebo výrobu akýchkoľvek integrovaných obvodov. Produkty nie sú navrhnuté ani autorizované na použitie v rámci akéhokoľvek systému na podporu života bez osobitného písomného súhlasu Silicon Labs. „Systém na podporu života“ je akýkoľvek produkt alebo systém určený na podporu alebo udržanie života a/alebo zdravia, pri ktorom v prípade zlyhania možno odôvodnene očakávať, že povedie k vážnemu zraneniu alebo smrti. Produkty Silicon Labs nie sú navrhnuté ani autorizované pre vojenské aplikácie. Produkty Silicon Labs sa za žiadnych okolností nesmú používať v zbraniach hromadného ničenia vrátane (okrem iného) jadrových, biologických alebo chemických zbraní alebo rakiet schopných niesť takéto zbrane.
Informácie o ochrannej známke
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® a logo Silicon Labs®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, logo Energy Micro a ich kombinácie, „najúspornejšie mikrokontroléry na svete“, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® a ďalšie sú ochranné známky alebo registrované ochranné známky spoločnosti Silicon Labs. ARM, CORTEX, Cortex-M3 a thumbs sú ochranné známky alebo registrované ochranné známky spoločnosti ARM Holdings. Keil je registrovaná ochranná známka spoločnosti ARM Limited. Všetky ostatné produkty alebo názvy značiek uvedené v tomto dokumente sú ochrannými známkami ich príslušných vlastníkov.
Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
USA
http://www.silabs.com
Dokumenty / zdroje
![]() |
Implementácia softvéru SILICON LABS Wireless M-BUS AN451 [pdf] Používateľská príručka SILICON LABS, C8051, MCU, and, EZRadioPRO, Wireless M-bus, Wireless, M-BUS, Software, Implementation, AN451 |