AN451
VEZETÉK NÉLKÜLI M-BUS SZOFTVER MEGVALÓSÍTÁSA
Bevezetés
Ez az alkalmazási megjegyzés a Wireless M-Bus Silicon Labs megvalósítását írja le egy Silicon Labs C8051 MCU és EZRadioPRO® használatával. A vezeték nélküli M-bus egy európai szabvány a 868 MHz-es frekvenciasávot használó mérő-leolvasási alkalmazásokhoz.
Stack Layers
A vezeték nélküli M-Bus a 3-rétegű IEC-modellt használja, amely a 7-rétegű OSI-modell részhalmaza (lásd az 1. ábrát).
A fizikai (PHY) réteget az EN 13757-4 szabvány határozza meg. A fizikai réteg határozza meg a bitek kódolásának és továbbításának módját, az RF modem jellemzőit (chip sebesség, preambulum és szinkronizálási szó), valamint az RF paramétereket (moduláció, középfrekvencia és frekvenciaeltérés).
A PHY réteg hardver és firmware kombinációjával valósul meg. Az EZRadioPRO végrehajtja az összes RF és modem funkciót. Az EZRadioPRO-t FIFO módban használják a csomagkezelővel. Az MbusPhy.c modul SPI interfészt, kódolást/dekódolást, blokk olvasást/írást és csomagkezelést biztosít, és kezeli az adó-vevő állapotait.
Az M-Bus Data kapcsolati réteg az MbusLink.c modulban van megvalósítva. Az M-Bus alkalmazásprogramozási felület nyilvános függvényekből áll, amelyek a fő szál alkalmazási rétegéből hívhatók meg. Az MbusLink modul az adatkapcsolati réteget is megvalósítja. Az adatkapcsolati réteg formázza és másolja az adatokat az alkalmazás TX pufferéből az MbusPhy TX pufferbe, hozzáadva a szükséges fejléceket és CRC-ket.
Maga az alkalmazási réteg nem része az M-bus firmware-nek. Az alkalmazási réteg határozza meg, hogy az adatok széles skáláját hogyan kell formázni az átvitelhez. A legtöbb mérőműszernek csak egy vagy kétféle adatot kell továbbítania. Ha nagy mennyiségű kódot ad hozzá bármilyen adatnak a mérőhöz, az felesleges kódot és költséget jelent a mérő számára. Megvalósítható lehet egy könyvtár vagy egy fejléc megvalósítása file adattípusok kimerítő listájával. A legtöbb mérési ügyfél azonban pontosan tudja, hogy milyen adatokat kell továbbítania, és a formázási részleteket a szabványban találja. Egy univerzális olvasó vagy szippantó az alkalmazási adattípusok teljes készletét implementálhatja a PC grafikus felületén. Ezen okok miatt az alkalmazási réteget plample alkalmazások mérő és olvasó számára.
Kötelező szabványok
- EN 13757-4
EN 13757-4
Kommunikációs rendszer mérőkhöz és mérők távleolvasásához
4. rész: Vezeték nélküli mérőműszer kijelzése
Radiométer leolvasása a 868 MHz–870 MHz SRD sávban történő működéshez - EN 13757-3
Kommunikációs rendszer mérőkhöz és mérők távleolvasásához
3. rész: Dedikált alkalmazási réteg - IEC 60870-2-1:1992
Távirányító berendezések és rendszerek
5. rész: Átviteli protokollok
1. szakasz: Link átviteli eljárás - IEC 60870-1-1:1990
Távirányító berendezések és rendszerek
5. rész: Átviteli protokollok
1. szakasz: Átviteli keretformátumok
Meghatározások
- M-busz –Az M-Bus egy vezetékes szabvány a mérők leolvasására Európában.
- Vezeték nélküli M-Bus– Vezeték nélküli M-Bus mérőleolvasási alkalmazásokhoz Európában.
- PHY— A fizikai réteg határozza meg az adatbitek és bájtok kódolását és továbbítását.
- API-Alkalmazásprogramozó felület.
- LINK-Az adatkapcsolati réteg határozza meg a blokkok és keretek átvitelének módját.
- CRC-Ciklikus redundancia ellenőrzés.
- FSK-Frekvenciaeltolásos billentyűzés.
- Forgács-A továbbított adatok legkisebb egysége. Egy adatbit több chipként van kódolva.
- Modul –AC kód forrása .c file.
M-Bus PHY Funkcionális leírás
Preambulum Sequence
Az M-bus specifikáció által meghatározott preambulum sorozat egy nullákat és egyeseket váltakozó egész szám. Az egyes a magasabb frekvencia, a nulla pedig az alacsonyabb frekvencia.
nx (01)
Az Si443x preambulumának beállításai egy egész számú nibble, amely váltakozó egyesekből és nullákból áll.
nx (1010)
A preambulum extra bevezetővel nem jelentene problémát, de akkor a szinkronizálási szó és a hasznos adat egy bittel eltolódik.
A megoldás a teljes csomag megfordítása a Modulation Control 2 regiszterben (0x71) a motorbit beállításával. Ez megfordítja a preambulumot, a szinkronszót és a TX/RX adatokat. Következésképpen az adatokat meg kell fordítani a TX adatok írásakor vagy az RX adatok olvasásakor. Ezenkívül a szinkronizálási szó az Si443x szinkronizálási szóregiszterekbe való írás előtt megfordul.
Szinkronizálás Word
Az EN-13757-4 által megkövetelt szinkronizálási szó vagy 18 chip az S és Mode R módokhoz, vagy 10 chip a T modellhez. Az Si443x szinkronizálási szója 1-4 bájt. Mivel azonban a szinkronizálási szót mindig megelőzi a preambulum, a preambulum utolsó hat bitje a szinkronizálási szó részének tekinthető; így az első szinkronizálási szó három nulla ismétlésével, majd egy egységgel van kitöltve. A szinkronizálási szó az Si443x regiszterekbe való írás előtt kiegészítésre kerül.
1. táblázat: Szinkronizálási szó az S és az R módhoz
EN 13757-4 | 00 | 01110110 | 10010110 | bináris |
00 | 76 | 96 | hex | |
pad (01) x 3 | 01010100 | 01110110 | 10010110 | bináris |
54 | 76 | 96 | hex | |
kiegészíti | 10101011 | 10001001 | 01101001 | bináris |
AB | 89 | 69 | hex |
2. táblázat: Szinkronizálási szó a T módú mérőhöz a többihez
SZINCH | SZINCH | SZINCH |
SZÓ | SZÓ | SZÓ |
3 | 2 | 1 |
Átviteli preambulum hossza
A minimális preambulum négy különböző üzemmódhoz van megadva. Elfogadható a megadottnál hosszabb preambulum. Ha kivonunk hat chipet a preambulumból, akkor megkapjuk az Si443x preambulumhoz tartozó chipek minimális számát. Az implementáció két további preambulumbekezdést ad hozzá minden rövid preambulum módhoz, hogy javítsa a preambulum észlelését és az interoperabilitást. A hosszú preambulumú S mód preambuluma nagyon hosszú; tehát a minimális preambulum kerül felhasználásra. A preambulum hossza nibblesben a Preamble Length (0x34) regiszterbe van írva. A preambulum hosszregiszter csak az átvitelkor határozza meg a preambulumot. A minimális specifikáció és a preambulum hosszának beállításait a 3. táblázat foglalja össze.
3. táblázat: Átviteli preambulum hossza
EN-13757-4 minimális |
Si443x Preambulum Beállítás |
Szinkronizál Szó |
Teljes | külön- | |||
nx (01) | chips | rágcsál | chips | chips | chips | chips | |
Mode S rövid preambulum | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
S mód hosszú preambulum | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
T mód (mérő-egyéb) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
R mód | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
A vétel minimális preambulumát a Preamble Detection Control regiszter (0x35) határozza meg. Fogadáskor a használható preambulum meghatározásához ki kell vonni a szinkronszóban lévő bitek számát a megadott minimális preambulumból. A vevő minimális beállási ideje 16 chip, ha az AFC engedélyezve van, vagy 8 chip, ha az AFC ki van kapcsolva. A vevő beállítási idejét szintén levonjuk a használható preambulumból, hogy meghatározzuk a Preamble Detection Control regiszter minimális beállítását.
A hamis preambulum valószínűsége a Preamble Detection Control regiszter beállításától függ. A 8 chipből álló rövid beállítás néhány másodpercenként hamis preambulumot eredményezhet. Az ajánlott 20 chip beállítás miatt a hamis preambulum észlelése valószínűtlen esemény. A Mode R és Mode SL preambulum hossza elég hosszú az ajánlott beállítás használatához.
Nagyon kevés előnye van annak, ha a preambulum 20 chipnél hosszabb ideig érzékeli.
Az AFC le van tiltva a rövid előtaggal rendelkező Model S és a T modell esetében. Ez csökkenti a vevő beállítási idejét, és hosszabb előtag észlelési beállítást tesz lehetővé. Ha az AFC le van tiltva, a T mód használhatja az ajánlott 20 chip beállítást. 4 nibbles vagy 20 chips beállítást használnak a Model S-hez rövid előtaggal. Emiatt ennél a modellnél valamivel nagyobb a hamis preambulum-észlelés valószínűsége.
4. táblázat: Preambulum-észlelés
EN-13757-4 minimális |
Szinkronizál Szó |
használható preambulum |
RX rendezés | Észlelés min |
Si443x Preambulum Érzékelési beállítás |
|||
nx (01) | chips | chips | chips | chips | chips | rágcsál | chips | |
Mode S rövid preambulum | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Model S hosszú preambulum | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
T modell (mérő-egyéb) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
R mód | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Jegyzet: Az AFC le van tiltva |
A vevő úgy van konfigurálva, hogy a minimálisan meghatározott preambulum használatával együttműködjön egy adóval. Ez biztosítja, hogy a vevő minden M-busszal kompatibilis adóval együttműködjön.
A Wireless M-Bus specifikáció nagyon hosszú preambulumot ír elő az S1 módhoz, legalább 558 chipet. Ez körülbelül 17 ms-t vesz igénybe, csak a preambulum továbbítása. Az Si443x nem igényel ilyen hosszú preambulumot, és nem használ a hosszú preambulum előnyeit. Míg a hosszú preambulum nem kötelező az S2 módban, nincs ok a hosszú preambulum használatára az Si443x esetében. Ha egyirányú kommunikációra van szükség, a T1 mód rövidebb előtagot, nagyobb adatsebességet és hosszabb akkumulátor-élettartamot biztosít. Ha az S2 módot használó kétirányú kommunikációra van szükség, egy rövid bevezető javasolt.
Figyelje meg, hogy a hosszú előtaggal rendelkező S-modell észlelési küszöbe hosszabb, mint a rövid előtaggal rendelkező S-modell esetében továbbított preambulum-jelek száma. Ez azt jelenti, hogy a hosszú preambulumú S módú vevő nem érzékeli a rövid preambulumú S módú adó előtagját. Erre akkor van szükség, ha a hosszú preambulumú Mode S vevő részesülhet a hosszú előtagból.
Vegye figyelembe, hogy a rövid preambulumú Mode S vevő észleli a preambulumot, és mindkét rövid preambulum S módból fogad csomagokat.
adó és egy hosszú preambulumú Mode S adó; így általában a mérőolvasónak a rövid preambulumú Mode S vevőkonfigurációt kell használnia.
Kódolás/dekódolás
A Wireless M-bus specifikáció két különböző kódolási módszert igényel. Manchester kódolást használnak az S és az R módban. A Manchester kódolást a T modell egyéb-mérő kapcsolatához is használják. A T modell mérő-egyéb hivatkozás 3-ból 6 kódolást használ.
1. Manchester kódolás/dekódolás
A manchesteri kódolás hagyományosan elterjedt az RF rendszerekben, hogy robusztus órahelyreállítást és nyomkövetést biztosítson egy egyszerű és olcsó modem segítségével. Egy modern, nagy teljesítményű rádiónak, például az Si443x-nek azonban nincs szüksége Manchester-kódolásra. A manchesteri kódolás elsősorban a meglévő szabványokkal való kompatibilitás miatt támogatott, de az Si443x adatátviteli sebessége gyakorlatilag megduplázódik, ha nem Manchester kódolást használnak.
Az Si443x támogatja a manchesteri kódolást és a teljes csomag hardveres dekódolását. Sajnos a szinkronizálási szó nem Manchester kódolású. Szándékosan érvénytelen Manchester sorozatot választottak a szinkronizálási szóhoz. Emiatt a manchesteri kódolás nem kompatibilis a legtöbb létező rádióval, beleértve az Si443x-et is. Következésképpen a manchesteri kódolást és dekódolást az MCU-nak kell végrehajtania. A kódolatlan adatok minden bájtja nyolc adatbitből áll. Manchester kódolást használva minden adatbit egy kétchipes szimbólummá van kódolva. Mivel a kódolt adatokat egyszerre nyolc chippel kell a rádió FIFO-ba írni, egyszerre egy adatrögzítést kódol és ír a FIFO-ba.
5. táblázat: Manchesteri kódolás
adat | Ox12 | 0x34 | bájtok | ||
Ox1 | 0x2 | 0x3 | 0x4 | rágcsál | |
1 | 10 | 11 | 100 | bináris | |
chip | 10101001 | 10100110 | 10100101 | 10011010 | bináris |
FIFO | OxA9 | OxA6 | OxA5 | Ox9A | hex |
Minden továbbítandó bájt egyenként egy-egy bájtot ad át a kódoló bájt funkciónak. A kódoló bájt függvény kétszer hívja meg a kódolási nibble függvényt, először a legjelentősebb nibble, majd a legkevésbé jelentős nibble esetében.
A Manchester kódolás szoftverben nem nehéz. A legjelentősebb bittől kezdve az egyik „01” chipszekvenciának van kódolva. A nulla „10” chip sorozatként van kódolva. Ez könnyen megvalósítható egy hurok használatával, és minden szimbólumhoz két bitet váltunk. Mindazonáltal gyorsabb, ha egy egyszerű 16 bejegyzésből álló keresőtáblázatot használunk minden egyes falathoz. A Manchester nibble kódolása funkció egy adatrögzítést kódol, majd kiírja a FIFO-ba. A chipeket megfordítják, mielőtt a FIFO-ba írnának, hogy figyelembe vegyék az invertált preambulum követelményeit.
Fogadáskor a FIFO minden bájtja nyolc chipből áll, és egy adatrögzítésre dekódolódik. Az olvasási blokk funkció egy-egy bájtot olvas be a FIFO-ból, és meghívja a dekódoló bájt függvényt. A chipek a FIFO-ból való kiolvasás után megfordulnak, hogy figyelembe vegyék az invertált preambulum követelményeit. A Manchester által kódolt chipek minden egyes bájtja adathalmazzá dekódolódik. A dekódolt nibble az írási nibble RX puffer funkció segítségével az RX pufferbe kerül.
Figyeljük meg, hogy mind a kódolás, mind a dekódolás menet közben egyenként adatrögzítésre kerül. A pufferbe történő kódoláshoz egy további pufferre lenne szükség, amely kétszer akkora, mint a kódolatlan adatok. A kódolás és dekódolás sokkal gyorsabb, mint a leggyorsabb támogatott adatsebesség (100 443 chip per másodperc). Mivel az Si10x támogatja a többbájtos olvasást és írást a FIFO-hoz, kis többletköltség merül fel, ha csak egybájtos olvasást és írást használ. Az overhead körülbelül 100 µs 512 kódolt chip esetén. Az előny az XNUMX bájt megtakarítás a RAM-ban.
2. Hatból három kódolási dekódolás
Az EN-13757-4 szabványban meghatározott három a hatból kódolási módszert az MCU firmware-jében is megvalósították. Ezt a kódolást a nagy sebességű (100 k chip/másodperc) T módban használják mérőről másikra. A T modell a legrövidebb átviteli időt és a leghosszabb akkumulátor-élettartamot biztosítja a vezeték nélküli mérőműszer számára.
A továbbítandó adat minden egyes bájtja két nibble-re van osztva. A legjelentősebb nibble kódolása és továbbítása történik először. Ez ismét egy kódolási bájtfüggvénnyel valósul meg, amely kétszer hívja meg az encode nibble függvényt.
Minden adatcsomó egy hat chipből álló szimbólumba van kódolva. A hat chipből álló szimbólumok sorozatát a 8 chipes FIFO-ba kell írni.
A kódolás során két bájtnyi adat négy nibble-ként van kódolva. Minden falat egy 6 zsetonból álló szimbólum. Négy 6 chipes szimbólum három bájtban van összesítve.
6. táblázat: Hatból három kódolás
adat | 0x12 | 0x34 | bájtok | ||||
Ox1 | 0x2 | 0x3 | 0x4 | rágcsál | |||
chip | 15 | 16 | 13 | 34 | nyolcas | ||
1101 | 1110 | 1011 | 11100 | bináris | |||
FIFO | 110100 | 11100010 | 11011100 | bináris | |||
0x34 | OxE2 | OxDC | hex |
A szoftverben a hatból három kódolást három beágyazott függvény segítségével valósítják meg. Az encode byte függvény kétszer hívja meg az encode nibble függvényt. A kódoló nibble függvény egy keresőtáblát használ a hat chipből álló szimbólumhoz, és a szimbólumot a Shift Three of Six függvénybe írja. Ez a funkció egy 16 chipes shift regisztert valósít meg a szoftverben. A szimbólum a shift regiszter legkisebb jelentőségű bájtjába van írva. A regiszter kétszer balra tolódik. Ezt háromszor megismételjük. Ha egy teljes bájt van a shift regiszter felső bájtjában, akkor az invertálódik és a FIFO-ba íródik.
Mivel minden adatbájt másfél kódolt bájtként van kódolva, fontos, hogy először töröljük a shift regisztert, hogy az első kódolt bájt helyes legyen. Ha a csomag hossza páratlan szám, az összes bájt kódolása után még marad egy nibble a shift regiszterben. Ezt a postalevéllel kezeljük a következő részben leírtak szerint.
A hat kódolt közül három dekódolása fordított eljárás. Dekódoláskor három kódolt bájtot két adatbájtba dekódolunk. A szoftvereltolási regiszter ismét a dekódolt adatok bájtjainak összesítésére szolgál. A dekódoláshoz egy 64 bejegyzésből álló inverz keresőtáblát használnak. Ez kevesebb ciklust, de több kódmemóriát használ. A 16 bejegyzésből álló keresőtáblázatban a megfelelő szimbólum keresése lényegesen tovább tart.
Postambulum
A vezeték nélküli M-busz specifikációja speciális követelményeket ír elő a postai küldeményre vagy a pótkocsira vonatkozóan. Minden módban a minimum két zseton, a maximum nyolc zseton. Mivel a FIFO minimális atomi egysége egy bájt, egy 8 chipes trailert használnak az S és az R módhoz. A T mód postamble nyolc chip, ha a csomag hossza páros, vagy négy chip, ha a csomag hossza páratlan. A páratlan csomaghosszúságú négy chipből álló postamble megfelel a legalább két váltakozó chip követelményeinek.
7. táblázat: Postalevél hossza
Postambulum hossza (chip) | |||||
min | max | Végrehajtás | chip sorrend | ||
S mód | 2 | 8 | 8 | 1010101 | |
T mód | 2 | 8 | 4 | (páratlan) | 101 |
8 | (még) | 1010101 | |||
R mód | 2 | 8 | 8 | 1010101 |
Csomagkezelő
Az Si443x csomagkezelője változó csomagszélességű vagy fix csomagszélességű módban használható. A változó csomagszélességű módhoz egy csomaghosszúságú bájtra van szükség a szinkronizálási szó után és az opcionális fejlécbájtokra. A rádió a vételkor a hosszúságú bájt alapján határozza meg az érvényes csomag végét. Adáskor a rádió beszúrja a hosszmezőt a fejléc bájtok mögé.
A vezeték nélküli M-bus protokoll L mezője nem használható az Si443x hosszúságú mezőhöz. Először is, az L mező nem a tényleges csomaghossz. Ez a kapcsolati réteg hasznos adatbájtjainak száma, amely nem tartalmazza a CRC bájtokat és a kódolást. Másodszor, maga az L-mező vagy Manchester kódolással, vagy Three of Six kódolással van kódolva a Mode T mérő másokhoz.
A megvalósítás a csomagkezelőt rögzített csomagszélességű módban használja mind az átvitelhez, mind a vételhez. Az átvitel során a PHY réteg beolvassa az L mezőt az átviteli pufferben, és kiszámítja a kódolt bájtok számát, beleértve a postamble-t is. A továbbítandó kódolt bájtok teljes száma a Packet Length regiszterbe (0x3E) kerül.
A vételkor az első két kódolt bájt dekódolásra kerül, és az L-mező a vételi pufferbe kerül. Az L-mező a fogadandó kódolt bájtok számának kiszámítására szolgál. A fogadni kívánt kódolt bájtok száma ezután beírásra kerül a Packet Length regiszterbe (0x3E). A postatábla eldobva.
Az MCU-nak dekódolnia kell az L-mezőt, ki kell számítania a kódolt bájtok számát, és be kell írnia az értéket a Packet Length regiszterbe, mielőtt a lehető legrövidebb csomaghosszat megkapná. A PHY réteg legrövidebb megengedett L-mezője 9, ami 12 kódolatlan bájtot ad. Ez 18 kódolt bájtot ad a T modellhez. Az első két bájt már dekódolásra került. Így a csomaghossz-regisztert 16 byte-onként 100 kbps vagy 1.28 ezredmásodperc sebességgel kell frissíteni. Ez nem jelent problémát egy 8051 MIPS-en futó 20-nél.
A fogadandó bájtok száma nem tartalmazza a postamble-t, kivéve a páratlan csomaghosszúságú T módú csomagokhoz használt négy chipes postamble-t. Így a vevőnek nincs szüksége postamble-re, kivéve a T modell páratlan hosszúságú csomagjait. Ez a postamble csak azért szükséges, hogy egész számú kódolt bájtot adjon. A postacím tartalmát figyelmen kívül hagyja; tehát, ha a postamble nem kerül továbbításra, akkor négy chip chip fog érkezni és figyelmen kívül hagyni. Mivel a kódolt bájtok teljes száma 255-re van korlátozva (0xFF), a megvalósítás korlátozza a különböző módok maximális L-mezőjét.
8. táblázat: Csomagméret-korlátok
kódolt | dekódolt | M-busz | ||||
bájtok | bájtok | L-mező | ||||
december | hex | december | hex | december | hex | |
S mód | 255 | FF | 127 | 7 F | 110 | 6E |
T mód (mérő-egyéb) | 255 | FF | 169 | A9 | 148 | 94 |
R mód | 255 | FF | 127 | 7 F | 110 | 6E |
Ezek a határértékek általában jóval meghaladják a vezeték nélküli mérők tipikus használati esetét. A lehető legjobb akkumulátor-élettartam érdekében a csomag hosszát kicsinek kell tartani.
Ezenkívül a felhasználó megadhatja a fogadni kívánt maximális L-mezőt (USER_RX_MAX_L_FIELD). Ez határozza meg a vételi puffer szükséges méretét (USER_RX_BUFFER_SIZE).
A 255-ös maximális L-mező támogatásához 290 bájtos vételi pufferre és maximum 581 Manchester kódolású bájtra lenne szükség. A csomagkezelőt le kell tiltani, és ebben az esetben a Packet Length regiszter nem használható. Ez megvalósítható, de ha lehetséges, kényelmesebb a csomagkezelő használata.
FIFO használat
Az Si4431 64 bájtos FIFO-t biztosít az átvitelhez és a vételhez. Mivel a kódolt bájtok száma 255, előfordulhat, hogy egy teljes kódolt csomag nem fér el a 64 bájtos pufferben.
Terjedés
Az átvitel során a rendszer kiszámítja a kódolt bájtok teljes számát. Ha a kódolt bájtok teljes száma, beleértve a postamble-t is, kevesebb, mint 64 bájt, akkor a teljes csomag a FIFO-ba kerül, és csak a csomagküldés megszakítása engedélyezett. A legtöbb rövid csomag egy FIFO-átutalással kerül elküldésre.
Ha a kódolt bájtok száma nagyobb, mint 64, akkor többszörös FIFO átvitelre lesz szükség a csomag elküldéséhez. Az első 64 bájt a FIFO-ba kerül. A Packet Sent és a TX FIFO Almost Empty megszakítások engedélyezve vannak. A TX FIFO majdnem üres küszöbértéke 16 bájt (25%). Minden IRQ eseménynél a 2. állapotregiszter kerül kiolvasásra. Először a Packet Sent bitet ellenőrzik, és ha a csomagot nem küldték el teljesen, akkor a következő 48 bájt kódolt adat kerül a FIFO-ba. Ez addig folytatódik, amíg az összes kódolt bájt meg nem íródott, és meg nem történik a csomagküldés megszakítása.
1. Recepció
Fogadáskor kezdetben csak a Sync Word megszakítása engedélyezett. A szinkronszó fogadása után a szinkronszó megszakítása le van tiltva, és a FIFO majdnem teljes megszakítás engedélyezve van. A FIFO majdnem teljes küszöbértéke kezdetben 2 bájt. Az első FIFO Almost Full megszakítás arra szolgál, hogy megtudja, hogy a két bájtot mikor fogadták. A hossz vétele után a hossz dekódolásra kerül, és kiszámításra kerül a kódolt bájtok száma. Az RX FIFO majdnem teljes küszöbértéke ezután 48 bájtra van állítva. Az RX FIFO majdnem megtelt, és a Valid Packet megszakítások engedélyezve vannak. A következő IRQ eseménynél az 1. állapotregiszter kerül beolvasásra. Először a Valid Packet bitet, majd a FIFO Almost Full bitet ellenőrizzük. Ha csak az RX FIFO majdnem teljes bitje van beállítva, a következő 48 bájt a FIFO-ból kerül kiolvasásra. Ha az érvényes csomagbit be van állítva, a csomag fennmaradó részét a rendszer a FIFO-ból olvassa be. Az MCU nyomon követi, hogy hány bájtot olvasott be, és az utolsó bájt után leállítja az olvasást.
Adatkapcsolati réteg
Az adatkapcsolati réteg modul egy 13757-4:2005 szabványnak megfelelő kapcsolati réteget valósít meg. Az adatkapcsolati réteg (LINK) interfészt biztosít a fizikai réteg (PHY) és az alkalmazási réteg (AL) között.
Az adatkapcsolati réteg a következő funkciókat látja el:
- Olyan funkciókat biztosít, amelyek adatátvitelt végeznek a PHY és az AL között
- CRC-ket generál a kimenő üzenetekhez
- Érzékeli a CRC hibákat a bejövő üzenetekben
- Fizikai címzést biztosít
- Nyugtázza a kétirányú kommunikációs módok átvitelét
- Keretek adatbitek
- Érzékeli a keretezési hibákat a bejövő üzenetekben
Linkréteg keret formátuma
Az EN 13757-4:2005 szabványban használt vezeték nélküli M-Bus keretformátum az IEC3-3-60870 szabvány FT5 (Frame Type 2) keretformátumából származik. A keret egy vagy több adatblokkból áll. Minden blokk tartalmaz egy 16 bites CRC mezőt. Az első blokk egy fix hosszúságú, 12 bájtos blokk, amely tartalmazza az L-mezőt, C-mezőt, M-mezőt és A-mezőt.
- L-mező
Az L-mező a kapcsolati réteg adathordozójának hossza. Ez nem tartalmazza magát az L-mezőt vagy a CRC bájtokat. Ez magában foglalja az L-mezőt, a C-mezőt, az M-mezőt és az A-mezőt. Ezek a PHY rakomány részét képezik.
Mivel a kódolt bájtok száma 255 bájtra korlátozva van, az M-mező maximális támogatott értéke 110 bájt Manchester kódolású adatok esetén és 148 bájt T módban, háromból hatból kódolt adatok esetén.
A kapcsolati réteg felelős az L-mező kiszámításáért átvitelkor. A link-layer az L-mezőt fogja használni vételkor.
Vegye figyelembe, hogy az L-mező nem jelzi a PHY hasznos terhelés hosszát vagy a kódolt bájtok számát. Az átvitelkor a PHY kiszámítja a PHY hasznos terhelés hosszát és a kódolt bájtok számát. A vétel után a PHY dekódolja az L-mezőt, és kiszámítja a dekódolandó bájtok számát. - C-Field
A C-mező a keretvezérlő mező. Ez a mező azonosítja a keret típusát, és a link adatcsere szolgáltatás primitívjeihez használatos. A C-mező a keret típusát jelzi – KÜLDÉS, MEGERŐSÍTÉS, KÉRÉS vagy VÁLASZ. A SEND és REQUEST keretek esetében a C-mező jelzi, hogy MEGERŐSÍTÉS vagy VÁLASZ vár-e.
Az alap Link TX funkció használatakor a C bármely értéke használható. A Link Service primitívek használatakor a C mező automatikusan kitöltésre kerül az EN 13757-4:2005 szabvány szerint. - M-Field
Az M-mező a gyártó kódja. A gyártók az alábbiak közül kérhetnek hárombetűs kódot web cím: http://www.dlms.com/flag/INDEX.HTM A hárombetűs kód minden karaktere öt bitként van kódolva. Az 5 bites kódot úgy kaphatja meg, hogy az ASCII kódot kivonja 0x40-ből ("A"). A három 5 bites kód 15 bitessé van összefűzve. A legjelentősebb bit nulla. - Mezőn
A címmező egy egyedi 6 bájtos cím minden eszközhöz. Az egyedi címet a gyártónak kell hozzárendelnie. Minden gyártó felelőssége, hogy minden eszköz egyedi, 6 bájtos címmel rendelkezzen. A Send és Request keretek címe a mérő vagy más eszköz saját címe. A megerősítő és válasz adatkeretek a kiinduló eszköz címével kerülnek elküldésre. - CI-mező
A CI-mező az alkalmazás fejléce, és meghatározza az alkalmazás adathordozójában lévő adatok típusát. Míg az EN13757-4:2005 korlátozott számú értéket határoz meg, a Link Service primitívek bármilyen érték használatát engedélyezik. - CRC
A CRC-t az EN13757-4:2005 szabvány határozza meg.
A CRC polinom a következő:
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
Vegye figyelembe, hogy az M-Bus CRC kiszámítása minden 16 bájtos blokkon keresztül történik. Az eredmény az, hogy minden 16 bájt adat 18 bájtot igényel,
További információk
A kapcsolati réteg megvalósításával kapcsolatos további információkért lásd: „AN452: Vezeték nélküli M-busz veremprogramozói útmutató”.
Energiagazdálkodás
A 2. ábra egy mérőműszer energiagazdálkodási idővonalát mutatja, plample a Mode T1 használatával.
Az energiatakarékosság érdekében az MCU-nak lehetőség szerint alvó üzemmódban kell lennie. Ebben az example, az MCU alvó állapotban van, amikor az RTC fut, amikor a rádiókristály indítására vár, és amikor a FIFO-ról küld. Az MCU felébred az EZRadioPRO IRQ jelre, amely egy Port Match ébresztéshez kapcsolódik.
Egy blokknál hosszabb üzenetek továbbításakor az MCU-nak fel kell ébrednie, hogy kitöltse a FIFO-t (a FIFO majdnem üres megszakítása alapján), majd vissza kell aludnia.
Az MCU-nak készenléti üzemmódban kell lennie az alacsony teljesítményű oszcillátorról vagy a sorozatos üzemmódú oszcillátorról, amikor az ADC-ről olvas. Az ADC-hez SAR óra szükséges.
Ha nincs használatban, az EZRadioPRO-nak Leállítás módban kell lennie, és az SDN érintkezőt magasra kell állítani. Ehhez vezetékes kapcsolat szükséges az MCU-hoz. Az EZ Radio Pro regiszterei leállítási módban nem maradnak meg; így az EZRadioPro minden RTC intervallumon inicializálódik. A rádió inicializálása kevesebb, mint 100 µs-ot vesz igénybe, és 400 nA-t takarít meg. Ez 10 µJ energiamegtakarítást eredményez, 10 másodperces intervallum alapján.
Az EZRadioPRO kristály körülbelül 16 ms-t vesz igénybe egy POR-hoz. Ez elég hosszú a CRC kiszámításához körülbelül nyolc blokkra. Az MCU visszaalszik alvó állapotba, ha befejezi az összes CRC-t, mielőtt a kristály stabilizálódik. Ha titkosításra van szükség, az is elindítható, miközben a kristályoszcillátoron várakozik.
Az MCU-nak 20 MHz-en kell működnie a kis teljesítményű oszcillátor használatával a legtöbb feladathoz. A pontos időtúllépést igénylő feladatoknál a precíziós oszcillátort és az üresjárati üzemmódot kell használni az alvó üzemmód helyett. Az RTC elegendő felbontást biztosít a legtöbb feladathoz. Az energiagazdálkodási idővonal a T2 mérőhöz, plampAz alkalmazást a 3. ábra mutatja.
Az adó-vevő megvalósítást arra a normál esetre kell optimalizálni, amikor a mérő felébred, és nincs olvasó. A minimális/maximális ACK időtúllépések kellően hosszúak ahhoz, hogy a C8051F930 RTC használható legyen és az MCU alvó módba kerüljön.
Beépítési lehetőségek állnak rendelkezésre a hálózatról vagy USB-ről táplált olvasókhoz, amelyeknek nem kell alvó módot használniuk. A készenléti üzemmód az alvó üzemmód helyett, így az USB és az UART megszakíthatja az MCU-t.
Egyszerűség Stúdió
Egy kattintással elérheti az MCU-t és a vezeték nélküli eszközöket, dokumentációt, szoftvert, forráskód-könyvtárakat és egyebeket. Windowshoz elérhető,
Mac és Linux!
![]() |
![]() |
![]() |
![]() |
IoT-portfólió www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
Minőség www.silabs.com/quality |
Támogatás és közösség Community.silabs.com |
Jogi nyilatkozat
A Silicon Labs a Silicon Labs termékeket használó vagy használni szándékozó rendszer- és szoftvermegvalósítók számára elérhető összes perifériáról és modulról a legújabb, pontos és mélyreható dokumentációval kívánja ellátni ügyfeleit. A jellemző adatok, a rendelkezésre álló modulok és perifériák, a memóriaméretek és a memóriacímek az egyes eszközökre vonatkoznak, a megadott „tipikus” paraméterek pedig változhatnak és változnak a különböző alkalmazásokban. Pályázat plampAz itt leírtak csak illusztrációs célokat szolgálnak. A Silicon Labs fenntartja a jogot, hogy további értesítés és korlátozás nélkül módosítsa az itt található termékinformációkat, specifikációkat és leírásokat, és nem vállal garanciát a mellékelt információk pontosságára vagy teljességére vonatkozóan. A Silicon Labs nem vállal felelősséget az itt közölt információk felhasználásának következményeiért. Ez a dokumentum nem utal vagy nem fejez ki olyan szerzői jogi engedélyeket, amelyeket az alábbiakban biztosítottak integrált áramkörök tervezésére vagy gyártására. A termékeket a Silicon Labs külön írásos engedélye nélkül semmilyen életfenntartó rendszeren belüli használatra tervezték vagy engedélyezték. Az „életfenntartó rendszer” minden olyan termék vagy rendszer, amelynek célja az élet és/vagy egészség támogatása vagy fenntartása, amely meghibásodása esetén ésszerűen várható, hogy jelentős személyi sérülést vagy halált okoz. A Silicon Labs termékeit nem katonai alkalmazásokra tervezték és nem engedélyezték. A Silicon Labs termékei semmilyen körülmények között nem használhatók tömegpusztító fegyverekben, beleértve (de nem kizárólagosan) nukleáris, biológiai vagy vegyi fegyvereket, vagy ilyen fegyverek célba juttatására alkalmas rakétákat.
Védjegyinformáció
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® és a Silicon Labs logó®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro logó és ezek kombinációi, „a világ legenergiabarátabb mikrovezérlői”, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, a Telegesis Logo®, USBXpress® és mások a Silicon Labs védjegyei vagy bejegyzett védjegyei. Az ARM, a CORTEX, a Cortex-M3 és a thumbs az ARM Holdings védjegyei vagy bejegyzett védjegyei. A Keil az ARM Limited bejegyzett védjegye. Az itt említett összes többi termék vagy márkanév a megfelelő tulajdonosának védjegye.
Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
Egyesült Államok
http://www.silabs.com
Dokumentumok / Források
![]() |
SILICON LABS vezeték nélküli M-BUS szoftverimplementáció AN451 [pdf] Felhasználói útmutató SILICON LABS, C8051, MCU és, EZRadioPRO, vezeték nélküli M-busz, vezeték nélküli, M-BUS, szoftver, megvalósítás, AN451 |