AN451
BELAIDĖS M-BUS PROGRAMINĖS ĮRANGOS ĮDIEGINIMAS
Įvadas
Šioje programos pastaboje aprašomas „Silicon Labs“ belaidžio M-Bus diegimas naudojant „Silicon Labs C8051 MCU“ ir EZRadioPRO®. Wireless M-bus yra Europos standartas, skirtas skaitiklių nuskaitymo programoms, naudojančioms 868 MHz dažnių juostą.
Stack Layers
Belaidis M-Bus naudoja 3 sluoksnių IEC modelį, kuris yra 7 sluoksnių OSI modelio pogrupis (žr. 1 pav.).
Fizinis (PHY) sluoksnis apibrėžtas EN 13757-4. Fizinis sluoksnis apibrėžia, kaip koduojami ir perduodami bitai, RF modemo charakteristikos (lusto sparta, preambulė ir sinchronizacijos žodis) ir RF parametrai (moduliacija, centrinis dažnis ir dažnio nuokrypis).
PHY sluoksnis įgyvendinamas naudojant aparatinės ir programinės įrangos derinį. EZRadioPRO atlieka visas RF ir modemo funkcijas. EZRadioPRO naudojamas FIFO režimu su paketų tvarkykle. MbusPhy.c modulis suteikia SPI sąsają, kodavimą / dekodavimą, blokų skaitymą / rašymą ir paketų tvarkymą bei valdo siųstuvo-imtuvo būsenas.
M-Bus duomenų ryšio sluoksnis yra įdiegtas MbusLink.c modulyje. M-Bus taikomųjų programų programavimo sąsaja susideda iš viešųjų funkcijų, kurios gali būti iškviečiamos iš programos sluoksnio pagrindinėje gijoje. MbusLink modulis taip pat įgyvendina duomenų ryšio sluoksnį. Duomenų saito sluoksnis formatuos ir nukopijuos duomenis iš programos TX buferio į MbusPhy TX buferį, pridėdamas reikiamas antraštes ir CRC.
Pats programos sluoksnis nėra M-bus programinės įrangos dalis. Taikomasis sluoksnis apibrėžia, kaip turi būti formatuojami įvairūs duomenys, kad būtų galima perduoti. Daugumai skaitiklių tereikia perduoti vieno ar dviejų tipų duomenis. Pridėjus didelį kodo kiekį, kad būtų galima talpinti bet kokius duomenis į skaitiklį, skaitiklis papildytų nereikalingą kodą ir kainuos. Gali būti įmanoma įdiegti biblioteką arba antraštę file su išsamiu duomenų tipų sąrašu. Tačiau dauguma skaitiklių klientų tiksliai žino, kokius duomenis jiems reikia perduoti, ir gali remtis standartu dėl formatavimo detalių. Universalus skaitytuvas arba sniferis gali įdiegti visą programų duomenų tipų rinkinį kompiuterio GUI. Dėl šių priežasčių programos sluoksnis įgyvendinamas naudojant pvzample paraiškos skaitikliui ir skaitytuvui.
Reikalingi standartai
- EN 13757-4
EN 13757-4
Skaitiklių ryšio sistema ir nuotolinis skaitiklių nuskaitymas
4 dalis. Belaidžio skaitiklio rodmenys
Radiometro rodmenys, skirti darbui 868–870 MHz SRD juostoje - EN 13757-3
Skaitiklių ryšio sistema ir nuotolinis skaitiklių nuskaitymas
3 dalis: Specialus taikymo sluoksnis - IEC 60870-2-1:1992
Nuotolinio valdymo įranga ir sistemos
5 dalis. Perdavimo protokolai
1 skyrius. Nuorodų perdavimo procedūra - IEC 60870-1-1:1990
Nuotolinio valdymo įranga ir sistemos
5 dalis. Perdavimo protokolai
1 skyrius. Perdavimo kadrų formatai
Apibrėžimai
- M autobusas -M-Bus yra laidinis skaitiklių nuskaitymo standartas Europoje.
- Belaidis M-Bus– Belaidis M-Bus, skirtas skaitiklių nuskaitymo programoms Europoje.
- PHY– Fizinis sluoksnis apibrėžia, kaip koduojami ir perduodami duomenų bitai ir baitai.
- API –Programų programuotojo sąsaja.
- NUORODOS –Duomenų ryšio sluoksnis apibrėžia, kaip perduodami blokai ir kadrai.
- CRC –Ciklinė perteklinė kontrolė.
- FSK –Dažnio poslinkio klavišas.
- lustas -Mažiausias perduodamų duomenų vienetas. Vienas duomenų bitas yra užkoduotas kaip keli lustai.
- modulis -AC kodo šaltinis .c file.
M-Bus PHY Funkcinis aprašymas
Preambulės seka
M-bus specifikacijoje nurodyta preambulės seka yra sveikasis skaičius, kaitaliojantis nulius ir vienetus. Vienas apibrėžiamas kaip aukštesnis dažnis, o nulis – kaip žemesnis dažnis.
nx (01)
„Si443x“ preambulės parinktys yra sveikasis skaičius, kurį sudaro kintamieji vienetai ir nuliai.
nx (1010)
Preambulė su papildomu priekiniu elementu nesukeltų problemų, tačiau tada sinchronizacijos žodis ir naudingoji apkrova būtų vienu bitu nesuderinti.
Sprendimas yra apversti visą paketą, nustatant variklio bitą Modulation Control 2 registre (0x71). Taip bus apversta preambulė, sinchronizuojamas žodis ir TX/RX duomenys. Todėl rašant TX arba nuskaitant RX duomenis duomenys turėtų būti apversti. Taip pat sinchronizavimo žodis apverčiamas prieš rašant į Si443x sinchronizavimo žodžių registrus.
Sinchronizavimo žodis
EN-13757-4 reikalaujamas sinchronizavimo žodis yra arba 18 lustų režimams S ir Mode R arba 10 lustų modeliui T. Si443x sinchronizavimo žodis yra nuo 1 iki 4 baitų. Tačiau kadangi prieš sinchronizavimo žodį visada yra preambulė, paskutiniai šeši preambulės bitai gali būti laikomi sinchronizavimo žodžio dalimi; taigi, pirmasis sinchronizavimo žodis užpildomas trimis nulio pakartojimais, po kurių seka vienas. Sinchronizavimo žodis papildomas prieš rašant į Si443x registrus.
1 lentelė. S ir R režimo sinchronizavimo žodis
EN 13757-4 | 00 | 01110110 | 10010110 | dvejetainis |
00 | 76 | 96 | hex | |
padėklas su (01) x 3 | 01010100 | 01110110 | 10010110 | dvejetainis |
54 | 76 | 96 | hex | |
papildyti | 10101011 | 10001001 | 01101001 | dvejetainis |
AB | 89 | 69 | hex |
2 lentelė. T režimo matuoklio sinchronizavimo žodis į kitą
SYNCH | SYNCH | SYNCH |
ŽODIS | ŽODIS | ŽODIS |
3 | 2 | 1 |
Perdavimo preambulės ilgis
Minimali preambulė nurodyta keturiems skirtingiems darbo režimams. Priimtina, kad preambulė būtų ilgesnė nei nurodyta. Atėmus šešis preambulės lustus, gaunamas minimalus Si443x preambulės lustų skaičius. Įdiegimas prideda du papildomus preambulės fragmentus visuose trumposios preambulės režimuose, kad pagerintų preambulės aptikimą ir sąveikumą. S režimo preambulė su ilga preambule yra labai ilga; taigi, naudojama minimali preambulė. Preambulės ilgis nibbles įrašomas į preambulės ilgio (0x34) registrą. Preambulės ilgio registras nustato preambulę tik perdavimo metu. Minimalios specifikacijos ir preambulės ilgio nustatymai apibendrinti 3 lentelėje.
3 lentelė. Perdavimo preambulės ilgis
EN-13757-4 minimumas |
Si443x preambulė Nustatyti |
Sinchronizuoti Žodis |
Iš viso | papildomai | |||
nx (01) | traškučiai | kramtyti | traškučiai | traškučiai | traškučiai | traškučiai | |
S režimo trumpa preambulė | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
S režimo ilga preambulė | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
T režimas (skaitiklis-kitas) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Režimas R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
Minimali priėmimo preambulė nustatoma preambulės aptikimo valdymo registre (0x35). Priėmus, sinchronizavimo žodžio bitų skaičius turi būti atimtas iš nurodytos minimalios preambulės, kad būtų galima nustatyti naudotiną preambulę. Minimalus imtuvo nusistovėjimo laikas yra 16 lustų, jei įjungtas AFC, arba 8 lustai, jei AFC išjungtas. Imtuvo nustatymo laikas taip pat atimamas iš naudojamos preambulės, siekiant nustatyti minimalų preambulės aptikimo valdymo registro nustatymą.
Klaidingos preambulės tikimybė priklauso nuo preambulės aptikimo valdymo registro nustatymo. Dėl trumpo 8 lustų nustatymo kas kelias sekundes gali būti aptikta klaidinga preambulė. Dėl rekomenduojamo 20 lustų nustatymo klaidingos preambulės aptikimas yra mažai tikėtinas įvykis. Mode R ir Mode SL preambulės ilgiai yra pakankamai ilgi, kad būtų galima naudoti rekomenduojamą nustatymą.
Yra labai mažai naudos, jei preambulė aptiktų ilgiau nei 20 lustų.
AFC išjungtas S modeliui su trumpa preambule ir modeliu T. Tai sumažina imtuvo nusistojimo laiką ir leidžia ilgiau aptikti preambulę. Išjungus AFC, režimas T gali naudoti rekomenduojamą 20 lustų nustatymą. S modeliui su trumpa įžanga naudojamas 4 gabalėlių arba 20 žetonų nustatymas. Dėl to šio modelio klaidingos preambulės aptikimo tikimybė yra šiek tiek didesnė.
4 lentelė. Preambulės aptikimas
EN-13757-4 minimumas |
Sinchronizuoti Žodis |
tinkamas naudoti preambulė |
RX atsiskaitymas | Aptikti min |
Si443x preambulė Aptikimo nustatymas |
|||
nx (01) | traškučiai | traškučiai | traškučiai | traškučiai | traškučiai | kramtyti | traškučiai | |
S režimo trumpa preambulė | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Model S ilga preambulė | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
T modelis (metras-kitas) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Režimas R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Pastaba: AFC išjungtas |
Imtuvas sukonfigūruotas veikti kartu su siųstuvu, naudojant minimalią nurodytą preambulę. Tai užtikrina, kad imtuvas veiks su bet kuriuo M magistralės suderinamu siųstuvu.
„Wireless M-Bus“ specifikacija reikalauja labai ilgos S1 režimo preambulės, turinčios mažiausiai 558 lustus. Vien tik įžangos perdavimas užtruks apie 17 ms. Si443x nereikalauja tokios ilgos preambulės ir neturi naudos iš ilgos preambulės. Nors pažymėta, kad ilgoji preambulė yra neprivaloma režimui S2, nėra jokios priežasties naudoti ilgą preambulę su Si443x. Jei pageidaujama vienpusio ryšio, režimas T1 užtikrins trumpesnę preambulę, didesnį duomenų perdavimo spartą ir ilgesnį baterijos veikimo laiką. Jei reikalingas dvipusis ryšys naudojant S2 režimą, rekomenduojama trumpa įžanga.
Atkreipkite dėmesį, kad S modelio su ilga preambule aptikimo slenkstis yra ilgesnis nei S modelio su trumpa preambule perduodamų preambulės slenksčių skaičius. Tai reiškia, kad ilgosios preambulės režimo S imtuvas neaptiks preambulės iš trumposios preambulės režimo S siųstuvo. Tai būtina, jei ilgosios preambulės režimo S imtuvas gautų kokios nors naudos iš ilgosios preambulės.
Atkreipkite dėmesį, kad trumposios preambulės režimo S imtuvas aptiks preambulę ir priims paketus iš trumposios preambulės režimo S
siųstuvas ir ilgosios preambulės režimo S siųstuvas; taigi, paprastai skaitiklio skaitytuvas turėtų naudoti trumpos preambulės Mode S imtuvo konfigūraciją.
Kodavimas/dekodavimas
„Wireless M-bus“ specifikacijai reikalingi du skirtingi kodavimo metodai. Mančesterio kodavimas naudojamas S ir R režimams. Mančesterio kodavimas taip pat naudojamas T modelio ryšiui nuo kito iki skaitiklio. T modelio skaitiklio ir kitų sąsajoje naudojamos 3 iš 6 koduotės.
1. Mančesterio kodavimas/dekodavimas
Mančesterio kodavimas istoriškai paplitęs radijo dažnių sistemose, siekiant užtikrinti patikimą laikrodžio atkūrimą ir sekimą naudojant paprastą ir nebrangų modemą. Tačiau šiuolaikiniam didelio našumo radijui, tokiam kaip Si443x, Mančesterio kodavimo nereikia. Mančesterio kodavimas palaikomas visų pirma dėl suderinamumo su esamais standartais, tačiau Si443x duomenų perdavimo sparta efektyviai padvigubėja, kai nenaudojama Mančesterio koduotė.
Si443x palaiko Mančesterio kodavimą ir viso paketo dekodavimą aparatinėje įrangoje. Deja, sinchronizavimo žodis nėra užkoduotas Mančesteryje. Netinkama Mančesterio seka buvo sąmoningai pasirinkta sinchronizavimo žodžiui. Dėl to Mančesterio kodavimas nesuderinamas su daugeliu esamų radijo imtuvų, įskaitant Si443x. Dėl to Mančesterio kodavimą ir dekodavimą turi atlikti MCU. Kiekvienas nekoduotų duomenų baitas susideda iš aštuonių duomenų bitų. Naudojant Mančesterio kodavimą, kiekvienas duomenų bitas yra užkoduotas į dviejų lustų simbolį. Kadangi užkoduoti duomenys turi būti įrašyti į radijo FIFO aštuonias lustus vienu metu, vienu metu užkoduojamas ir įrašomas vienas duomenų fragmentas.
5 lentelė. Mančesterio kodavimas
duomenis | Ox12 | 0x34 | baitų | ||
Ox1 | 0x2 | 0x3 | 0x4 | kramtyti | |
1 | 10 | 11 | 100 | dvejetainis | |
lustas | 10101001 | 10100110 | 10100101 | 10011010 | dvejetainis |
FIFO | OxA9 | OxA6 | OxA5 | OX9A | hex |
Kiekvienas perduodamas baitas po vieną baitą perduodamas kodavimo baitų funkcijai. Kodavimo baitų funkcija du kartus iškvies kodavimo baitų funkciją – pirmiausia reikšmingiausiam nibble, o paskui mažiausiai reikšmingam nibble.
Mančesterio kodavimas programinėje įrangoje nėra sudėtingas. Pradedant nuo reikšmingiausio bito, vienas užkoduojamas kaip „01“ lustų seka. Nulis užkoduotas kaip „10“ lustų seka. Tai galima lengvai padaryti naudojant kilpą ir perkeliant du bitus kiekvienam simboliui. Tačiau greičiau kiekvienam įkandimui naudoti paprastą 16 įrašų paieškos lentelę. Kodavimo Manchester nibble funkcija užkoduoja duomenų nibble, tada įrašo juos į FIFO. Lustai apverčiami prieš rašant į FIFO, kad būtų atsižvelgta į apverstos preambulės reikalavimus.
Kai gaunama, kiekvienas FIFO baitas susideda iš aštuonių lustų ir yra dekoduojamas į vieną duomenų gnybtą. Skaitymo bloko funkcija nuskaito po vieną baitą iš FIFO ir iškviečia dekodavimo baitų funkciją. Lustai apverčiami po nuskaitymo iš FIFO, kad būtų atsižvelgta į apverstos preambulės reikalavimus. Kiekvienas Mančesterio užkoduotų lustų baitas yra iššifruojamas į duomenų rinkinį. Dekoduotas nibble įrašomas į RX buferį naudojant įrašymo nibble RX buferio funkciją.
Atkreipkite dėmesį, kad ir užkodavimas, ir dekodavimas yra atliekami po vieną duomenų kaupimą. Kodavimui į buferį reikės papildomo buferio, dvigubai didesnio už nekoduotus duomenis. Kodavimas ir dekodavimas yra daug greitesnis nei greičiausias palaikomas duomenų perdavimo greitis (100 443 lustų per sekundę). Kadangi „Si10x“ palaiko kelių baitų skaitymą ir rašymą į FIFO, naudojant tik vieno baito skaitymą ir rašymą, atsiranda nedidelių išlaidų. 100 užkoduotų lustų pridėtinė kaina yra apie 512 µs. Privalumas – sutaupoma XNUMX baitų RAM.
2. Trys iš šešių kodavimo dekodavimo
EN-13757-4 nurodytas trijų iš šešių kodavimo metodas taip pat įdiegtas MCU programinėje įrangoje. Ši koduotė naudojama didelės spartos (100 k lustų per sekundę) T režimui nuo skaitiklio iki kito. Modelis T užtikrina trumpiausią belaidžio matuoklio perdavimo laiką ir ilgiausią baterijos veikimo laiką.
Kiekvienas perduodamų duomenų baitas yra padalintas į dvi dalis. Svarbiausias įkandimas užkoduojamas ir perduodamas pirmiausia. Vėlgi, tai įgyvendinama naudojant kodavimo baitų funkciją, kuri du kartus iškviečia kodavimo nibble funkciją.
Kiekvienas duomenų gabalas yra užkoduotas šešių lustų simboliu. Šešių lustų simbolių seka turi būti įrašyta į 8 lustų FIFO.
Kodavimo metu du baitai duomenų užkoduojami kaip keturi nibbles. Kiekvienas įkandimas yra 6 žetonų simbolis. Keturi 6 lustų simboliai sujungiami kaip trys baitai.
6 lentelė. Trys iš šešių kodavimo
duomenis | 0x12 | 0x34 | baitų | ||||
Ox1 | 0x2 | 0x3 | 0x4 | kramtyti | |||
lustas | 15 | 16 | 13 | 34 | aštuntainė | ||
1101 | 1110 | 1011 | 11100 | dvejetainis | |||
FIFO | 110100 | 11100010 | 11011100 | dvejetainis | |||
0x34 | OxE2 | OxDC | hex |
Programinėje įrangoje trijų iš šešių kodavimas įgyvendinamas naudojant tris įdėtas funkcijas. Kodavimo baitų funkcija du kartus iškvies kodavimo baitų funkciją. Kodavimo nibble funkcija naudoja šešių lustų simbolio paieškos lentelę ir įrašo simbolį į funkcijas Shift Three of Six. Ši funkcija programinėje įrangoje įdiegia 16 lustų pamainų registrą. Simbolis įrašomas į mažiausiai reikšmingą poslinkio registro baitą. Registras du kartus perkeliamas į kairę. Tai kartojama tris kartus. Kai visas baitas yra viršutiniame poslinkio registro baite, jis apverčiamas ir įrašomas į FIFO.
Kadangi kiekvienas duomenų baitas yra užkoduotas kaip pusantro užkoduoto baito, svarbu iš pradžių išvalyti poslinkių registrą, kad pirmasis užkoduotas baitas būtų teisingas. Jei paketo ilgis yra nelyginis skaičius, užkodavus visus baitus, pamainų registre vis tiek liks vienas nibble. Tai tvarkoma su pašto ženklu, kaip paaiškinta kitame skyriuje.
Trijų iš šešių užkoduotų dekodavimas yra atvirkštinė procedūra. Dekoduojant trys užkoduoti baitai iššifruojami į du duomenų baitus. Programinės įrangos poslinkių registras vėl naudojamas dekoduotų duomenų baitų agregavimui. Dekodavimui naudojama 64 įrašų atvirkštinės paieškos lentelė. Tai sunaudoja mažiau ciklų, bet daugiau kodo atminties. Atitinkamo simbolio paieška 16 įrašų paieškos lentelėje užtrunka daug ilgiau.
Postambulas
„Wireless M-bus“ specifikacijoje nustatyti specialūs reikalavimai pašto dėžutei arba priekabai. Visiems režimams minimalus yra du lustai, o didžiausias - aštuoni lustai. Kadangi minimalus FIFO atominis vienetas yra vienas baitas, režimams S ir režimams R naudojama 8 lustų priekaba. T režimo postambulė yra aštuoni lustai, jei paketo ilgis lygus, arba keturi lustai, jei paketo ilgis nelyginis. Keturių lustų postambulas, skirtas nelyginiam paketo ilgiui, atitinka bent dviejų kintamų lustų reikalavimus.
7 lentelė. Postambulės ilgis
Pašto ilgis (drožlės) | |||||
min | maks | Įgyvendinimas | lustų seka | ||
Režimas S | 2 | 8 | 8 | 1010101 | |
Režimas T | 2 | 8 | 4 | (nelyginis) | 101 |
8 | (netgi) | 1010101 | |||
Režimas R | 2 | 8 | 8 | 1010101 |
Paketų tvarkytuvas
Si443x paketų tvarkytuvas gali būti naudojamas kintamo paketo pločio arba fiksuoto paketo pločio režimu. Kintamo paketo pločio režimui reikalingas paketo ilgio baitas po sinchronizavimo žodžio ir pasirenkami antraštės baitai. Priėmęs radijas naudos ilgio baitą, kad nustatytų galiojančio paketo pabaigą. Perduodamas radijas įterps ilgio lauką po antraštės baitų.
Belaidžio M magistralės protokolo L laukas negali būti naudojamas Si443x ilgio laukui. Pirma, L laukas nėra tikrasis paketo ilgis. Tai nuorodos sluoksnio naudingosios apkrovos baitų skaičius, neįskaitant CRC baitų arba kodavimo. Antra, pats L laukas yra užkoduotas naudojant Mančesterio kodavimą arba Trys iš šešių kodavimą, skirtą T režimo matuokliui.
Diegimas naudoja paketų tvarkyklę fiksuoto paketo pločio režimu tiek siuntimui, tiek priėmimui. Perdavus PHY sluoksnis perskaitys L lauką siuntimo buferyje ir apskaičiuos užkoduotų baitų skaičių, įskaitant postambulą. Bendras perduodamų užkoduotų baitų skaičius įrašomas į Packet Length registrą (0x3E).
Priimant pirmieji du užkoduoti baitai yra iškoduojami, o L laukas įrašomas į priėmimo buferį. L-laukas naudojamas gautinų užkoduotų baitų skaičiui apskaičiuoti. Tada gaunamų užkoduotų baitų skaičius įrašomas į paketo ilgio registrą (0x3E). Pašto ženklas išmestas.
MCU turi iššifruoti L lauką, apskaičiuoti užkoduotų baitų skaičių ir įrašyti reikšmę į Packet Length registrą prieš gaudamas trumpiausią įmanomą paketo ilgį. Trumpiausias leistinas PHY sluoksnio L laukas yra 9, suteikiantis 12 nekoduotų baitų. Tai suteikia 18 užkoduotų baitų modeliui T. Pirmieji du baitai jau iššifruoti. Taigi, paketo ilgio registras turi būti atnaujinamas 16 baitų kartų 100 kbps arba 1.28 milisekundės greičiu. Tai nėra problema 8051, veikiančiam 20 MIPS.
Į gaunamų baitų skaičių neįskaičiuotas pašto ženklas, išskyrus keturių lustų postambulę, naudojamą T režimo paketams, kurių paketo ilgis yra nelyginis. Taigi, imtuvas nereikalauja pašto, išskyrus T modelio nelyginio ilgio paketus. Šis pašto ženklas reikalingas tik norint pateikti sveikąjį užkoduotų baitų skaičių. Pašto antraštės turinys ignoruojamas; taigi, jei postambulė nebus perduota, bus gauti keturi triukšmo lustai ir jie bus ignoruojami. Kadangi bendras užkoduotų baitų skaičius ribojamas iki 255 (0xFF), įgyvendinimas riboja maksimalų skirtingų režimų L lauką.
8 lentelė. Paketo dydžio ribos
užkoduotas | iššifruoti | M-autobusas | ||||
baitų | baitų | L-laukas | ||||
gruod | hex | gruod | hex | gruod | hex | |
Režimas S | 255 | FF | 127 | 7 F | 110 | 6E |
T režimas (skaitiklis-kitas) | 255 | FF | 169 | A9 | 148 | 94 |
Režimas R | 255 | FF | 127 | 7 F | 110 | 6E |
Šios ribos paprastai gerokai viršija įprastą belaidžio skaitiklio naudojimo atvejį. Paketo ilgis turi būti mažas, kad akumuliatorius veiktų kuo ilgiau.
Be to, vartotojas gali nurodyti didžiausią L lauką, kuris turėtų būti gautas (USER_RX_MAX_L_FIELD). Tai nustato reikiamą priėmimo buferio dydį (USER_RX_BUFFER_SIZE).
Norint palaikyti maksimalų 255 L lauką, reikės 290 baitų priėmimo buferio ir ne daugiau kaip 581 Mančesterio koduoto baito. Reikėtų išjungti paketų tvarkyklę ir tokiu atveju negalėtų būti naudojamas paketo ilgio registras. Tai įmanoma, bet jei įmanoma, patogiau naudoti paketų tvarkyklę.
FIFO naudojimas
Si4431 suteikia 64 baitų FIFO siuntimui ir priėmimui. Kadangi užkoduotų baitų skaičius yra 255, visas užkoduotas paketas gali netilpti į 64 baitų buferį.
Užkrato pernešimas
Siuntimo metu apskaičiuojamas bendras užkoduotų baitų skaičius. Jei bendras užkoduotų baitų skaičius, įskaitant postambulę, yra mažesnis nei 64 baitai, visas paketas įrašomas į FIFO ir įjungiamas tik išsiųsto paketo pertraukimas. Dauguma trumpų paketų bus išsiųsti vienu FIFO pervedimu.
Jei užkoduotų baitų skaičius yra didesnis nei 64, paketui išsiųsti reikės kelių FIFO perdavimų. Pirmieji 64 baitai įrašomi į FIFO. Įjungti Packet Sent ir TX FIFO Almost Empty pertraukimai. TX FIFO beveik tuščias slenkstis nustatytas į 16 baitų (25 %). Po kiekvieno IRQ įvykio nuskaitomas 2 būsenos registras. Pirmiausia patikrinamas paketo išsiųstas bitas ir, jei paketas nebuvo visiškai išsiųstas, kiti 48 baitai užkoduotų duomenų įrašomi į FIFO. Tai tęsiasi tol, kol bus parašyti visi užkoduoti baitai ir įvyks siuntimo paketo pertraukimas.
1. Priėmimas
Priimant iš pradžių įjungiamas tik „Sync Word“ pertraukimas. Gavus sinchronizavimo žodį, sinchronizavimo žodžio pertraukimas išjungiamas ir įjungiamas FIFO beveik pilnas pertraukimas. FIFO beveik pilnas slenkstis iš pradžių yra 2 baitai. Pirmasis FIFO beveik pilnas pertraukimas naudojamas žinoti, kada buvo gauti du ilgio baitai. Gavus ilgį, ilgis dekoduojamas ir apskaičiuojamas užkoduotų baitų skaičius. Tada RX FIFO beveik pilnas slenkstis nustatomas į 48 baitus. RX FIFO beveik pilnas ir įjungti galiojantys paketų pertraukimai. Po kito IRQ įvykio nuskaitomas 1 būsenos registras. Pirmiausia patikrinamas galiojantis paketo bitas, o tada – FIFO beveik pilnas bitas. Jei nustatytas tik RX FIFO beveik pilnas bitas, kiti 48 baitai nuskaitomi iš FIFO. Jei nustatytas galiojantis paketo bitas, likusi paketo dalis nuskaitoma iš FIFO. MCU seka, kiek baitų buvo perskaityta, ir nustoja skaityti po paskutinio baito.
Duomenų ryšio sluoksnis
Duomenų ryšio sluoksnio modulis įgyvendina 13757-4:2005 suderinamą ryšio sluoksnį. Duomenų ryšio sluoksnis (LINK) suteikia sąsają tarp fizinio sluoksnio (PHY) ir taikomojo sluoksnio (AL).
Duomenų nuorodos sluoksnis atlieka šias funkcijas:
- Teikia funkcijas, kurios perduoda duomenis tarp PHY ir AL
- Sukuria CRC siunčiamiems pranešimams
- Aptinka CRC klaidas gaunamuose pranešimuose
- Teikia fizinį adresavimą
- Pripažįsta dvikrypčio ryšio režimų perdavimą
- Kadrų duomenų bitai
- Aptinka gaunamų pranešimų kadravimo klaidas
Nuorodų sluoksnio rėmelio formatas
Belaidis M-Bus rėmelio formatas, naudojamas EN 13757-4:2005, yra išvestas iš FT3 (3 rėmo tipo) kadro formato iš IEC60870-5-2. Rėmelį sudaro vienas ar daugiau duomenų blokų. Kiekviename bloke yra 16 bitų CRC laukas. Pirmasis blokas yra fiksuoto ilgio 12 baitų blokas, apimantis L lauką, C lauką, M lauką ir A lauką.
- L-laukas
L laukas yra nuorodos sluoksnio duomenų naudingosios apkrovos ilgis. Tai neapima paties L lauko ar bet kurio CRC baitų. Tai apima L lauką, C lauką, M lauką ir A lauką. Tai yra PHY naudingojo krovinio dalis.
Kadangi užkoduotų baitų skaičius ribojamas iki 255 baitų, maksimali palaikoma M lauko vertė yra 110 baitų Mančesterio koduotiems duomenims ir 148 baitai T režimo trijų iš šešių koduotų duomenų.
Link sluoksnis yra atsakingas už perdavimo L lauko apskaičiavimą. Nuorodų sluoksnis gavimo metu naudos L lauką.
Atminkite, kad L laukas nenurodo PHY naudingosios apkrovos ilgio arba užkoduotų baitų skaičiaus. Perdavus, PHY apskaičiuos PHY naudingosios apkrovos ilgį ir užkoduotų baitų skaičių. Gavęs PHY iššifruos L lauką ir apskaičiuos dekoduotinų baitų skaičių. - C laukas
C laukas yra kadro valdymo laukas. Šis laukas identifikuoja rėmelio tipą ir yra naudojamas duomenų mainų nuorodų paslaugos primityvams. C lauke nurodomas rėmelio tipas – SEND, CONFIRM, REQUEST arba RESPOND. SEND ir REQUEST kadrų atveju C laukas nurodo, ar tikimasi PATVIRTINTI ar ATSAKYTI.
Naudojant pagrindinę Link TX funkciją, galima naudoti bet kurią C reikšmę. Naudojant Link Service primitives, C laukas užpildomas automatiškai pagal EN 13757-4:2005. - M-laukas
M laukas yra gamintojo kodas. Gamintojai gali prašyti trijų raidžių kodo iš toliau nurodytų web adresas: http://www.dlms.com/flag/INDEX.HTM Kiekvienas trijų raidžių kodo simbolis yra užkoduotas kaip penki bitai. 5 bitų kodą galima gauti paėmus ASCII kodą ir atėmus 0x40 („A“). Trys 5 bitų kodai yra sujungti, kad sudarytų 15 bitų. Svarbiausias bitas yra nulis. - A-laukas
Adreso laukas yra unikalus 6 baitų adresas kiekvienam įrenginiui. Unikalus adresas turi būti priskirtas gamintojo. Kiekvienas gamintojas yra atsakingas už tai, kad kiekvienas įrenginys turėtų unikalų 6 baitų adresą. Siųsti ir prašyti rėmelių adresas yra matuoklio ar kito įrenginio adresas. Patvirtinimo ir atsakymo duomenų rėmeliai siunčiami naudojant pradinio įrenginio adresą. - CI laukas
CI laukas yra programos antraštė ir nurodo duomenų tipą programos duomenų naudingojoje apkrovoje. Nors EN13757-4:2005 nurodo ribotą reikšmių skaičių, Link Service primitives leis naudoti bet kokią reikšmę. - CRC
CRC nurodytas EN13757-4:2005.
CRC polinomas yra:
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
Atminkite, kad M-Bus CRC apskaičiuojamas kiekvienam 16 baitų blokui. Rezultatas yra tas, kad kas 16 baitų duomenų reikia perduoti 18 baitų,
Papildoma informacija
Norėdami gauti papildomos informacijos apie nuorodų sluoksnio įgyvendinimą, žr. „AN452: Wireless M-Bus Stack programuotojų vadovas“.
Energijos valdymas
2 paveiksle parodyta skaitiklio, pvz., maitinimo valdymo laiko juostaampnaudojant režimą T1.
MCU turėtų būti pristabdytosios veiksenos režimu, kai tik įmanoma, kad būtų taupoma energija. Šiame buvample, MCU miega, kai veikia RTC, laukiama radijo kristalo paleidimo ir perduodama iš FIFO. MCU atsibus nuo EZRadioPRO IRQ signalo, prijungto prie „Port Match“ pažadinimo.
Kai perduodami pranešimai, ilgesni nei vienas blokas, MCU turi pabusti, kad užpildytų FIFO (remiantis FIFO beveik tuščiu pertraukimu), o tada grįžti į miego režimą.
Skaitant iš ADC, MCU turėtų būti tuščiosios eigos režimu ir veikti iš mažos galios generatoriaus arba serijos režimo osciliatoriaus. ADC reikalingas SAR laikrodis.
Kai nenaudojamas, EZRadioPRO turi būti išjungimo režimu, o SDN kaištis yra aukštai. Tam reikalingas laidinis ryšys su MCU. EZ Radio Pro registrai neišsaugomi išjungimo režimu; taigi, EZRadioPro inicijuojamas kiekvienu RTC intervalu. Radijo inicijavimas trunka mažiau nei 100 µs ir taupo 400 nA. Dėl to sutaupoma 10 µJ energijos, remiantis 10 sekundžių intervalu.
EZRadioPRO kristalas POR užtrunka apie 16 ms. Tai pakankamai ilga, kad būtų galima apskaičiuoti maždaug aštuonių blokų CRC. MCU grįš miegoti, jei užbaigs visus CRC, kol kristalas stabilizuosis. Jei reikalingas šifravimas, jį taip pat galima paleisti, kol laukiama kristalo generatoriaus.
Daugeliui užduočių MCU turėtų veikti 20 MHz dažniu, naudojant mažos galios generatorių. Atliekant užduotis, kurioms reikalingas tikslus skirtasis laikas, vietoj miego režimo turi būti naudojamas tikslus generatorius ir tuščiosios eigos režimas. RTC suteikia pakankamai raiškos daugeliui užduočių. T2 skaitiklio, pvz., galios valdymo laiko juostaampTaikymas parodytas 3 paveiksle.
Siųstuvo-imtuvo įgyvendinimas turėtų būti optimizuotas įprastam atvejui, kai skaitiklis atsibunda ir nėra skaitytuvo. Minimalus / maksimalus ACK skirtasis laikas yra pakankamai ilgas, kad būtų galima naudoti C8051F930 RTC ir įjungti MCU į miego režimą.
Pateikiamos kūrimo parinktys iš maitinimo tinklo arba USB maitinamiems skaitytuvams, kuriems nereikia naudoti miego režimo. Laukimo režimas bus naudojamas vietoj miego režimo, kad USB ir UART gali nutraukti MCU.
Paprastumo studija
Vienu paspaudimu prieiga prie MCU ir belaidžių įrankių, dokumentacijos, programinės įrangos, šaltinio kodo bibliotekų ir kt. Galima naudoti „Windows“,
Mac ir Linux!
![]() |
![]() |
![]() |
![]() |
IoT portfelis www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
Kokybė www.silabs.com/quality |
Palaikymas ir bendruomenė Community.silabs.com |
Atsisakymas
„Silicon Labs“ ketina klientams pateikti naujausią, tikslią ir išsamią visų išorinių įrenginių ir modulių, prieinamų sistemų ir programinės įrangos diegėjams, naudojantiems arba ketinantiems naudoti „Silicon Labs“ produktus, dokumentaciją. Apibūdinimo duomenys, galimi moduliai ir išoriniai įrenginiai, atminties dydžiai ir atminties adresai yra susiję su kiekvienu konkrečiu įrenginiu, o pateikiami „tipiniai“ parametrai įvairiose programose gali skirtis ir skiriasi. Paraiška pvzampčia aprašyti yra tik iliustravimo tikslais. „Silicon Labs“ pasilieka teisę be papildomo įspėjimo keisti gaminio informaciją, specifikacijas ir aprašymus, ir nesuteikia garantijų dėl įtrauktos informacijos tikslumo ar išsamumo. „Silicon Labs“ neprisiima jokios atsakomybės už čia pateiktos informacijos naudojimo pasekmes. Šis dokumentas nenurodo ar neišreiškia autorių teisių licencijų, suteiktų pagal jį projektuoti ar gaminti bet kokius integrinius grandynus. Produktai nėra sukurti arba neleidžiami naudoti jokioje gyvybės palaikymo sistemoje be specialaus rašytinio Silicon Labs sutikimo. „Gyvybės palaikymo sistema“ yra bet koks gaminys arba sistema, skirta gyvybei ir (arba) sveikatai palaikyti arba palaikyti, o jei tai nepavyks, galima pagrįstai tikėtis rimto asmens sužalojimo arba mirties. „Silicon Labs“ produktai nėra sukurti ar patvirtinti kariniams tikslams. Silicon Labs produktai jokiu būdu negali būti naudojami masinio naikinimo ginkluose, įskaitant (bet tuo neapsiribojant) branduolinius, biologinius ar cheminius ginklus arba raketas, galinčias gabenti tokius ginklus.
Prekės ženklo informacija
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® ir Silicon Labs logotipas®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro logotipas ir jų deriniai, „elektroniškiausi pasaulyje mikrovaldikliai“, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® ir kiti yra Silicon Labs prekių ženklai arba registruotieji prekių ženklai. ARM, CORTEX, Cortex-M3 ir thumbs yra ARM Holdings prekių ženklai arba registruotieji prekių ženklai. Keil yra registruotasis ARM Limited prekės ženklas. Visi kiti čia paminėti produktai ar prekių pavadinimai yra atitinkamų jų savininkų prekių ženklai.
„Silicon Laboratories Inc.
400 West Cesar Chavez
Ostinas, TX 78701
JAV
http://www.silabs.com
Dokumentai / Ištekliai
![]() |
SILICON LABS Wireless M-BUS programinės įrangos diegimas AN451 [pdfVartotojo vadovas SILICON LABS, C8051, MCU ir EZRadioPRO, belaidis M-bus, belaidis ryšys, M-BUS, programinė įranga, diegimas, AN451 |