SILICON LABSi logo

AN451
juhtmevaba M-BUSi TARKVARA RAKENDAMINE

Sissejuhatus

See rakenduse märkus kirjeldab juhtmevaba M-Busi Silicon Labsi rakendamist, kasutades Silicon Labs C8051 MCU ja EZRadioPRO®. Juhtmeta M-bus on Euroopa standard 868 MHz sagedusriba kasutavatele arvestilugemisrakendustele.

Virna kihid

Juhtmevaba M-Bus kasutab 3-kihilist IEC-mudelit, mis on 7-kihilise OSI-mudeli alamhulk (vt joonis 1).

SILICON LABS Wireless M-BUS tarkvara juurutamine AN451Füüsiline (PHY) kiht on määratletud standardis EN 13757-4. Füüsiline kiht määratleb bittide kodeerimise ja edastamise, RF-modemi omadused (kiibi kiirus, preambula ja sünkroniseerimissõna) ja RF-parameetrid (modulatsioon, kesksagedus ja sageduse kõrvalekalle).
PHY kiht rakendatakse riistvara ja püsivara kombinatsiooni abil. EZRadioPRO täidab kõiki RF ja modemi funktsioone. EZRadioPRO-d kasutatakse FIFO-režiimis koos paketikäsitlejaga. Moodul MbusPhy.c pakub SPI liidest, kodeerimist/dekodeerimist, plokkide lugemist/kirjutamist ja pakettide haldamist ning haldab transiiveri olekuid.
M-Bus Data linkikiht on realiseeritud moodulis MbusLink.c. M-Busi rakenduste programmeerimise liides koosneb avalikest funktsioonidest, mida saab põhilõime rakendusekihist välja kutsuda. MbusLink moodul rakendab ka andmelingikihti. Andmelingi kiht vormindab ja kopeerib andmed rakenduse TX puhvrist MbusPhy TX puhvrisse, lisades vajalikud päised ja CRC-d.
Rakenduskiht ise ei ole M-busi püsivara osa. Rakenduskiht määrab, kuidas edastamiseks tuleb vormindada mitmesuguseid andmeid. Enamik arvestitest peab edastama ainult ühte või kahte tüüpi andmeid. Suure hulga koodide lisamine mis tahes andmete mahutamiseks arvestile lisaks arvestile tarbetut koodi ja kuluks. Võib-olla on võimalik rakendada raamatukogu või päist file andmetüüpide ammendava loendiga. Kuid enamik mõõtekliente teab täpselt, milliseid andmeid nad peavad edastama, ja oskavad vormindamise üksikasjade osas viidata standardile. Universaalne lugeja või nuusutaja võib arvuti GUI-s rakendada täielikku rakenduse andmetüüpide komplekti. Nendel põhjustel rakendatakse rakenduskihti example rakendused arvesti ja lugeja jaoks.

Nõutavad standardid
  1. EN 13757-4
    EN 13757-4
    Arvestite sidesüsteem ja arvestite kauglugemine
    4. osa: Traadita arvesti näit
    Radiomeetri näit töötamiseks sagedusalas 868 MHz kuni 870 MHz SRD
  2. EN 13757-3
    Arvestite sidesüsteem ja arvestite kauglugemine
    Osa 3: Spetsiaalne rakenduskiht
  3. IEC 60870-2-1:1992
    Kaugjuhtimisseadmed ja -süsteemid
    5. osa: Edastusprotokollid
    1. jaotis: lingi edastamise protseduur
  4. IEC 60870-1-1:1990
    Kaugjuhtimisseadmed ja -süsteemid
    5. osa: Edastusprotokollid
    1. jaotis: Edastuskaadri vormingud
Definitsioonid
  • M-buss –M-Bus on juhtmega standard arvestite lugemiseks Euroopas.
  • Juhtmeta M-Bus-Traadita M-Bus arvestite lugemiseks Euroopas.
  • PHY— Physical Layer määrab, kuidas andmebitte ja baite kodeeritakse ja edastatakse.
  • API-Rakenduse programmeerija liides.
  • LINK-Andmelingi kiht määrab, kuidas plokke ja kaadreid edastatakse.
  • CRC-Tsüklilise koondamise kontroll.
  • FSK-Sageduse nihutamine.
  • kiip –Väikseim edastatud andmete ühik. Üks andmebitt on kodeeritud mitme kiibina.
  • moodul -AC koodi allikas .c file.

M-Bus PHY Funktsionaalne kirjeldus

Preambula järjestus

M-busi spetsifikatsiooniga määratud preambuli jada on nullid ja ühed vahelduvad täisarv. Üks on defineeritud kui kõrgem sagedus ja null on määratletud kui madalam sagedus.
nx (01)
Si443x preambuli valikud on täisarv näksimist, mis koosneb vahelduvatest ühtedest ja nullidest.
nx (1010)
Täiendava eessõnaga preambul ei oleks probleem, kuid siis oleks sünkroonimissõna ja kasulik koormus ühe biti võrra valesti joondatud.
Lahenduseks on kogu paketi inverteerimine, määrates Modulation Control 2 registris mootoribiti (0x71). See inverteerib preambuli, sünkroonimissõna ja TX/RX-andmed. Seetõttu tuleks TX-andmete kirjutamisel või RX-andmete lugemisel andmed ümber pöörata. Samuti pööratakse sünkroonimissõna enne Si443x sünkroonimissõna registritesse kirjutamist ümber.

Sünkroonimissõna

Standardis EN-13757-4 nõutav sünkroonimissõna on režiimi S ja režiimi R jaoks 18 kiipi või mudeli T jaoks 10 kiipi. Si443x sünkroonimissõna on 1 kuni 4 baiti. Kuna aga sünkroniseerimissõnale eelneb alati preambula, võib preambuli kuut viimast bitti lugeda sünkroniseerimissõna osaks; seega on esimene sünkroonimissõna polsterdatud kolme nulli kordusega, millele järgneb üks. Sünkroonimissõna täiendatakse enne Si443x registritesse kirjutamist.
Tabel 1. Režiimi S ja režiimi R sünkroonimissõna

EN 13757-4 00 01110110 10010110 binaarne
00 76 96 hex
padi (01) x 3 01010100 01110110 10010110 binaarne
54 76 96 hex
täiendada 10101011 10001001 01101001 binaarne
AB 89 69 hex

Tabel 2. Režiimi T arvesti sünkroonimissõna muuga

SYNCH SYNCH SYNCH
SÕNA SÕNA SÕNA
3 2 1
Edastamise preambuli pikkus

Minimaalne preambul on määratud nelja erineva töörežiimi jaoks. On vastuvõetav, kui preambul on ettenähtust pikem. Kuue preambula kiibi lahutamine annab Si443x preambuli jaoks minimaalse kiipide arvu. Rakendus lisab kõigis lühikeste preambuli režiimides kaks täiendavat preambuli, et parandada preambula tuvastamist ja koostalitlusvõimet. Pika preambuliga režiimi S preambul on väga pikk; seega kasutatakse minimaalset preambulit. Preambula pikkus nibbles kirjutatakse registrisse Preamble Length (0x34). Preambula pikkuse register määrab preambuli ainult edastamisel. Minimaalsed spetsifikatsioonid ja preambuli pikkuse sätted on kokku võetud tabelis 3.
Tabel 3. Edastuse preambuli pikkus

EN-13757-4
miinimum
Si443x Preambul
Set ing
Sünkroonimine
Sõna
Kokku ekstra
nx (01) laastud näksib laastud laastud laastud laastud
Mode S lühike preambul 15 30 8 32 6 38 8
Mode S pikk preambul 279 558 138 552 6 558 0
Režiim T (meeter-muu) 19 38 10 40 6 46 8
Režiim R 39 78 20 80 6 86 8

Vastuvõtmise minimaalne preambul on määratud preambuli tuvastamise kontrolli registriga (0x35). Vastuvõtmisel tuleb kasutatava preambuli määramiseks lahutada määratud minimaalsest preambulist sünkroonimissõna bittide arv. Vastuvõtja minimaalne settimisaeg on 16 kiipi, kui AFC on lubatud, või 8 kiipi, kui AFC on keelatud. Kasutatavast preambulast lahutatakse ka vastuvõtja settimisaeg, et määrata preambula tuvastamise kontrolli registri minimaalne säte.

Vale preambula tõenäosus sõltub preambuli tuvastamise kontrolli registri seadistusest. Lühike 8-kiibi seadistus võib põhjustada vale preambula, mis tuvastatakse iga paari sekundi järel. Soovitatav seadistus 20 kiipi muudab vale preambula tuvastamise ebatõenäoliseks sündmuseks. Mode R ja Mode SL preambuli pikkused on piisavalt pikad, et kasutada soovitatud sätet.
Pikemate kui 20 kiibi preambuli tuvastamisest on väga vähe kasu.
Lühikese preambuliga mudeli S ja mudeli T puhul on AFC keelatud. See vähendab vastuvõtja settimisaega ja võimaldab pikemat preambuli tuvastamise seadistust. Kui AFC on keelatud, saab režiim T kasutada soovitatud 20 kiibi seadistust. Lühikese preambuliga Model S puhul kasutatakse seadistust 4 nibble või 20 chipi. See muudab vale preambula tuvastamise tõenäosuse selle mudeli puhul pisut suuremaks.
Tabel 4. Preambula tuvastamine

EN-13757-4
miinimum
Sünkroonimine
Sõna
kasutatav
preambula
RX-i lahendamine Tuvasta
min
Si443x Preambul
Tuvastusseade
nx (01) laastud laastud laastud laastud laastud näksib laastud
Mode S lühike preambul 15 30 6 24 8* 16 4 16
Model S pikk preambul 279 558 6 552 16 536 5 20
Mudel T (meeter-muu) 19 38 6 32 8* 24 5 20
Režiim R 39 78 6 72 16 56 5 20
*Märkus: AFC on keelatud

Vastuvõtja on konfigureeritud koos saatjaga, kasutades minimaalset etteantud preambulat. See tagab, et vastuvõtja töötab koos kõigi M-busiga ühilduvate saatjatega.
Juhtmeta M-Busi spetsifikatsioon nõuab režiimi S1 väga pikka preambulit, mis on vähemalt 558 kiibist. Ainuüksi preambula edastamiseks kulub umbes 17 ms. Si443x ei vaja nii pikka preambulit ja pikast preambulist ei ole kasu. Kuigi pikka preambulit märgitakse režiimi S2 puhul valikulisena, ei ole põhjust kasutada Si443x puhul pikka preambulit. Kui soovitakse ühesuunalist sidet, tagab režiim T1 lühema preambula, suurema andmeedastuskiiruse ja pikema aku tööea. Kui on vajalik kahesuunaline side režiimi S2 abil, on soovitatav lühike sissejuhatus.
Pange tähele, et pika preambuliga mudeli S tuvastuslävi on pikem kui lühikese preambuliga mudeli S puhul edastatud preambuli närimiste arv. See tähendab, et pika preambula režiimi S vastuvõtja ei tuvasta lühikese preambula režiimi S saatja preambulit. See on vajalik, kui pika preambula režiimi S vastuvõtja saab pikast preambulist mingit kasu.
Pange tähele, et lühikese preambula režiimi S vastuvõtja tuvastab preambula ja võtab vastu pakette mõlemast lühikesest preambulast Mode S
saatja ja pika preambula Mode S saatja; nii et üldiselt peaks arvesti lugeja kasutama lühikest preambulit Mode S vastuvõtja konfiguratsiooni.

Kodeerimine/dekodeerimine

Wireless M-busi spetsifikatsioon nõuab kahte erinevat kodeerimismeetodit. Manchesteri kodeeringut kasutatakse režiimi S ja režiimi R jaoks. Manchesteri kodeeringut kasutatakse ka mudeli T muu-meetri lingi jaoks. Mudeli T meeter-teine ​​link kasutab 3 kodeeringut 6-st.
1. Manchesteri kodeering/dekodeerimine
Manchesteri kodeering on RF-süsteemides ajalooliselt levinud, et pakkuda lihtsat ja odavat modemit kasutades kindlat kella taastamist ja jälgimist. Kaasaegne suure jõudlusega raadio nagu Si443x ei vaja aga Manchesteri kodeeringut. Manchesteri kodeeringut toetatakse peamiselt olemasolevate standarditega ühilduvuse tagamiseks, kuid Si443x andmeedastuskiirus kahekordistub, kui Manchesteri kodeeringut ei kasutata.
Si443x toetab kogu riistvaralise paketi Manchesteri kodeerimist ja dekodeerimist. Kahjuks pole sünkroonimissõna Manchesteri kodeeritud. Sünkroonimissõna jaoks valiti tahtlikult kehtetu Manchesteri jada. See muudab Manchesteri kodeeringu enamiku olemasolevate raadiotega, sealhulgas Si443x-ga, ühildumatuks. Sellest tulenevalt peab Manchesteri kodeerimise ja dekodeerimise teostama MCU. Iga kodeerimata andmete bait koosneb kaheksast andmebitist. Manchesteri kodeeringut kasutades kodeeritakse iga andmebitt kahekiibiliseks sümboliks. Kuna kodeeritud andmed tuleb kirjutada raadio FIFO-sse korraga kaheksa kiipi, kodeeritakse ja kirjutatakse FIFO-sse korraga üks näpp andmeid.
Tabel 5. Manchesteri kodeering

andmeid Härg 12 0x34 baiti
Härg 1 0x2 0x3 0x4 näksib
1 10 11 100 binaarne
kiip 10101001 10100110 10100101 10011010 binaarne
FIFO OxA9 OxA6 OxA5 Ox9A hex

Iga edastatav bait edastatakse üks bait korraga kodeerimisbaiti funktsioonile. Kodeerimisbaidi funktsioon kutsub kodeerimisfunktsiooni kaks korda, esmalt kõige olulisema ja seejärel vähima tähtsusega nibble jaoks.
Manchesteri kodeerimine tarkvaras pole keeruline. Alates kõige olulisemast bitist kodeeritakse üks kiibi jadana "01". Null on kodeeritud "10" kiibi jadana. Seda saab hõlpsasti saavutada, kasutades silmust ja nihutades iga sümboli jaoks kahte bitti. Siiski on kiirem kasutada iga näksimise jaoks lihtsalt 16 sisestusega otsingutabelit. Kodeeri Manchesteri nibble funktsioon kodeerib andmete näksimise ja kirjutab selle seejärel FIFO-sse. Kiibid pööratakse enne FIFO-le kirjutamist ümber, et võtta arvesse ümberpööratud preambula nõudeid.
Vastuvõtmisel koosneb iga bait FIFO-s kaheksast kiibist ja dekodeeritakse üheks andmenäksuks. Lugemisploki funktsioon loeb FIFO-st üks bait korraga ja kutsub välja dekodeerimisbaidi funktsiooni. Kiibid pööratakse pärast FIFO-st lugemist ümber, et võtta arvesse ümberpööratud preambula nõudeid. Manchesteri kodeeritud kiipide iga bait dekodeeritakse andmete näksimiseks. Dekodeeritud nibble kirjutatakse RX-puhvrisse, kasutades kirjutusnäpu RX-puhvri funktsiooni.
Pange tähele, et nii kodeeritud kui ka dekodeerimine sooritatakse käigupealt ühe andmelõikena. Puhvri kodeerimiseks oleks vaja täiendavat puhvrit, mis on kaks korda suurem kodeerimata andmetest. Kodeerimine ja dekodeerimine on palju kiirem kui kiireim toetatud andmeedastuskiirus (100 k kiipi sekundis). Kuna Si443x toetab mitmebaidist lugemist ja FIFO-le kirjutamist, on ainult ühebaidise lugemise ja kirjutamise kasutamine väike. Üldkulu on 10 kodeeritud kiibi puhul umbes 100 µs. Selle eeliseks on 512 baiti RAM-i kokkuhoid.
2. Kolm kuuest kodeeringu dekodeerimine
Standardis EN-13757-4 määratletud kolm-kuuest kodeerimismeetodit rakendatakse ka MCU püsivaras. Seda kodeeringut kasutatakse kiire (100 k kiipi sekundis) režiimi T jaoks arvestist teise. Mudel T tagab juhtmevaba arvesti lühima edastusaja ja pikima aku tööea.
Iga edastatav andmebait jagatakse kaheks nibliks. Kõige olulisem näksimine kodeeritakse ja edastatakse esimesena. Jällegi kasutatakse seda kodeerimisbaitfunktsiooni abil, mis kutsub kodeerimisfunktsiooni kaks korda.
Iga andmekiip kodeeritakse kuue kiibi sümboliks. Kuue kiibi sümbolite jada tuleb kirjutada 8-kiibi FIFO-sse.
Kodeerimise ajal kodeeritakse kaks baiti andmeid nelja närimisena. Iga näksimine on 6-žetooniline sümbol. Neli 6-kiibi sümbolit koondatakse kolmeks baidiks.
Tabel 6. Kolm kuuest kodeeringust

andmeid 0x12 0x34 baiti
Härg 1 0x2 0x3 0x4 näksib
kiip 15 16 13 34 kaheksand
1101 1110 1011 11100 binaarne
FIFO 110100 11100010 11011100 binaarne
0x34 OxE2 OxDC hex

Tarkvaras rakendatakse kolmest kuuest kodeeringut kolme pesastatud funktsiooni abil. Funktsioon Kodeeri bait kutsub kodeerimise nibble funktsiooni kaks korda. Kodeerimisfunktsioon kasutab kuue kiibiga sümboli jaoks otsingutabelit ja kirjutab sümboli Shift Three of Six funktsioonile. See funktsioon rakendab tarkvaras 16-kiibist nihkeregistrit. Sümbol kirjutatakse nihkeregistri vähima tähtsusega baidi juurde. Registrit nihutatakse kaks korda vasakule. Seda korratakse kolm korda. Kui nihkeregistri ülemises baidis on täielik bait, pööratakse see ümber ja kirjutatakse FIFO-sse.
Kuna iga andmebait on kodeeritud pooleteise kodeeritud baidina, on oluline algselt tühjendada nihkeregister, et esimene kodeeritud bait oleks õige. Kui paketi pikkus on paaritu arv, siis pärast kõigi baitide kodeerimist jääb nihkeregistrisse ikkagi üks näksimine. Seda käsitletakse postitempliga, nagu on selgitatud järgmises jaotises.
Kolme kuuest kodeeritud dekodeerimine on vastupidine protseduur. Dekodeerimisel dekodeeritakse kolm kodeeritud baiti kaheks andmebaidiks. Tarkvara nihkeregistrit kasutatakse taas dekodeeritud andmete baitide koondamiseks. Dekodeerimiseks kasutatakse 64-kirjest pöördotsingu tabelit. See kasutab vähem tsükleid, kuid rohkem koodimälu. 16 kirjega otsingutabelist vastava sümboli otsimine võtab tunduvalt kauem aega.
Postambel
Juhtmeta M-busi spetsifikatsioonil on postitabelile või haagisele spetsiifilised nõuded. Kõigi režiimide puhul on miinimum kaks kiipi ja maksimaalne kaheksa kiipi. Kuna FIFO minimaalne aatomühik on üks bait, kasutatakse režiimi S ja režiimi R jaoks 8-kiibist treilerit. Režiimi T postamble on kaheksa kiipi, kui paketi pikkus on paaris, või neli kiipi, kui paketi pikkus on paaritu. Neljakiibiline postambel paaritu pikkusega paketi jaoks vastab vähemalt kahe vahelduva kiibi olemasolule.
Tabel 7. Postambli pikkus

Postambli pikkus (kiibid)
min max Rakendamine kiibi järjestus
Režiim S 2 8 8 1010101
Režiim T 2 8 4 (kummaline) 101
8 (isegi) 1010101
Režiim R 2 8 8 1010101
Paketihaldur

Si443x paketikäsitlejat saab kasutada muutuva paketilaiusega režiimis või fikseeritud paketilaiusega režiimis. Muutuva paketilaiusega režiim nõuab sünkroonimissõna järel paketi pikkuse baiti ja valikulisi päisebaite. Vastuvõtmisel kasutab raadio pikkuse baiti kehtiva paketi lõpu määramiseks. Edastamise ajal lisab raadio päisebaitide järele pikkuse välja.
Traadita M-busi protokolli välja L ei saa kasutada Si443x pikkuse välja jaoks. Esiteks ei ole väli L tegelik paketi pikkus. See on lingikihi kasuliku koormuse baitide arv, mis ei sisalda CRC baite ega kodeeringut. Teiseks kodeeritakse L-väli ise, kasutades kas Manchesteri kodeeringut või kolme kuuest kodeeringut, mis on mõeldud Mode T-mõõturi jaoks teistele.
Rakendus kasutab paketikäsitlejat nii edastamiseks kui ka vastuvõtmiseks fikseeritud paketilaiusega režiimis. Edastamisel loeb PHY kiht edastuspuhvris olevat välja L ja arvutab kodeeritud baitide arvu, sealhulgas postamble. Edastatavate kodeeritud baitide koguarv kirjutatakse paketi pikkuse registrisse (0x3E).
Vastuvõtmisel dekodeeritakse kaks esimest kodeeritud baiti ja L-väli kirjutatakse vastuvõtupuhvrisse. L-välja kasutatakse vastuvõetavate kodeeritud baitide arvu arvutamiseks. Seejärel kirjutatakse vastuvõetavate kodeeritud baitide arv paketi pikkuse registrisse (0x3E). Postitabel visatakse ära.
MCU peab dekodeerima L-välja, arvutama kodeeritud baitide arvu ja kirjutama väärtuse registrisse Packet Length enne, kui paketi pikkus on võimalikult lühike. PHY kihi lühim lubatud L-väli on 9, mis annab 12 kodeerimata baiti. See annab mudeli T jaoks 18 kodeeritud baiti. Esimesed kaks baiti on juba dekodeeritud. Seega tuleb paketi pikkuse registrit uuendada 16-baidiseid kordi kiirusel 100 kbps või 1.28 millisekundit. See pole probleem 8051 puhul, mis töötab 20 MIPS-iga.
Vastuvõetavate baitide arv ei sisalda postamblit, välja arvatud neljakiibiline postamble, mida kasutatakse paaritu paketi pikkusega T-režiimi pakettide jaoks. Seega ei vaja vastuvõtja postamblit, välja arvatud Model T paaritu pikkusega paketid. See postamble on vajalik ainult kodeeritud baitide täisarvu andmiseks. Postambli sisu ignoreeritakse; seega, kui postamblit ei edastata, võetakse vastu neli mürakiipi ja neid ignoreeritakse. Kuna kodeeritud baitide koguarv on piiratud 255-ga (0xFF), piirab rakendamine erinevate režiimide maksimaalset L-välja.
Tabel 8. Paketi suuruse piirangud

kodeeritud dekodeeritud M-buss
baiti baiti L-väli
dets hex dets hex dets hex
Režiim S 255 FF 127 7 XNUMX F 110 6E
Režiim T (meeter-muu) 255 FF 169 A9 148 94
Režiim R 255 FF 127 7 XNUMX F 110 6E

Need piirid on tavaliselt tunduvalt kõrgemad juhtmevaba arvesti tüüpilisest kasutusjuhtumist. Paketi pikkus peaks olema väike, et aku oleks võimalikult pikk.
Lisaks võib kasutaja määrata maksimaalse vastuvõetava L-välja (USER_RX_MAX_L_FIELD). See määrab vastuvõtupuhvri vajaliku suuruse (USER_RX_BUFFER_SIZE).
Maksimaalse 255 L-välja toetamiseks on vaja 290-baidist vastuvõtupuhvrit ja maksimaalselt 581 Manchesteri kodeeritud baiti. Paketikäsitleja tuleks keelata ja paketi pikkuse registrit ei saa sel juhul kasutada. See on teostatav, kuid võimalusel on mugavam kasutada paketikäsitlejat.

FIFO kasutamine

Si4431 pakub edastamiseks ja vastuvõtmiseks 64-baidist FIFO-d. Kuna kodeeritud baitide arv on 255, ei pruugi terve kodeeritud pakett 64-baidisesse puhvrisse mahtuda.
Edasikandumine
Edastamise ajal arvutatakse kodeeritud baitide koguarv. Kui kodeeritud baitide koguarv, sealhulgas postamble, on väiksem kui 64 baiti, kirjutatakse kogu pakett FIFO-sse ja ainult paketi saadetud katkestus on lubatud. Enamik lühikesi pakette saadetakse ühe FIFO ülekandega.
Kui kodeeritud baitide arv on suurem kui 64, on paketi saatmiseks vaja mitut FIFO-edastust. Esimesed 64 baiti kirjutatakse FIFO-sse. Pakett saadetud ja TX FIFO peaaegu tühjad katkestused on lubatud. TX FIFO peaaegu tühi lävi on seatud 16 baiti (25%). Iga IRQ sündmuse korral loetakse oleku 2 register. Esmalt kontrollitakse saadetud paketi bitti ja kui pakett ei ole täielikult saadetud, kirjutatakse järgmised 48 baiti kodeeritud andmeid FIFO-sse. See jätkub seni, kuni kõik kodeeritud baidid on kirjutatud ja tekib paketi saadetud katkestus.
1. Vastuvõtt
Vastuvõtmisel on algselt lubatud ainult Sync Wordi katkestus. Pärast sünkroonimissõna saamist on sünkroonimissõna katkestus keelatud ja FIFO peaaegu täis katkestus on lubatud. FIFO peaaegu täis lävi on algselt seatud 2 baiti. Esimest FIFO peaaegu täis katkestust kasutatakse selleks, et teada saada, millal kaks pikkusbaiti on vastu võetud. Kui pikkus on vastu võetud, dekodeeritakse pikkus ja arvutatakse kodeeritud baitide arv. Seejärel määratakse RX FIFO peaaegu täis lävi väärtuseks 48 baiti. RX FIFO on peaaegu täis ja kehtivad pakettkatkestused on lubatud. Järgmisel IRQ-sündmusel loetakse oleku 1 register. Kõigepealt kontrollitakse Valid Packet bitti ja seejärel FIFO peaaegu täis bitti. Kui on seatud ainult RX FIFO peaaegu täis bitt, loetakse FIFO-st järgmised 48 baiti. Kui kehtiv paketibitt on seatud, loetakse FIFO-st ülejäänud pakett. MCU jälgib, mitu baiti on loetud, ja lõpetab lugemise pärast viimast baiti.

Andmelingi kiht

Andmelingikihi moodul rakendab standardiga 13757-4:2005 ühilduvat lingikihti. Andmeside kiht (LINK) pakub liidest füüsilise kihi (PHY) ja rakenduskihi (AL) vahel.
Andmelingi kiht täidab järgmisi funktsioone:

  • Pakub funktsioone, mis edastavad andmeid PHY ja AL vahel
  • Loob väljaminevate sõnumite jaoks CRC-d
  • Tuvastab sissetulevates sõnumites CRC vead
  • Pakub füüsilist adresseerimist
  • Kinnitab kahesuunaliste siderežiimide ülekandeid
  • Raamid andmebitid
  • Tuvastab sissetulevates sõnumites kadreerimisvead
Linkikihi raami vorming

Standardis EN 13757-4:2005 kasutatav traadita M-Busi kaadrivorming on tuletatud standardi IEC3-3-60870 FT5 (Frame Type 2) kaadrivormingust. Raam koosneb ühest või mitmest andmeplokist. Iga plokk sisaldab 16-bitist CRC-välja. Esimene blokk on fikseeritud pikkusega 12-baidine plokk, mis sisaldab L-välja, C-välja, M-välja ja A-välja.

  1. L-väli
    L-väli on lingikihi andmekoormuse pikkus. See ei hõlma L-välja ennast ega ühtegi CRC baiti. See hõlmab L-välja, C-välja, M-välja ja A-välja. Need on osa PHY kasulikust koormusest.
    Kuna kodeeritud baitide arv on piiratud 255 baidiga, on M-välja maksimaalne toetatud väärtus Manchesteri kodeeritud andmete puhul 110 baiti ja režiimi T kolm-kuuest kodeeritud andmete puhul 148 baiti.
    Linki kiht vastutab edastamisel L-välja arvutamise eest. Link-kiht kasutab vastuvõtul L-välja.
    Pange tähele, et L-väli ei näita PHY kasuliku koormuse pikkust ega kodeeritud baitide arvu. Edastamise ajal arvutab PHY PHY kasuliku koormuse pikkuse ja kodeeritud baitide arvu. Vastuvõtmisel dekodeerib PHY L-välja ja arvutab dekodeerimiseks vajalike baitide arvu.
  2. C-väli
    C-väli on kaadri juhtimisväli. See väli identifitseerib kaadri tüübi ja seda kasutatakse lingi andmevahetusteenuse primitiivide jaoks. C-väli näitab kaadri tüüpi – SAADA, KINNITA, TAOTLE või VASTA. SEND ja REQUEST kaadrite puhul näitab C-väli, kas oodata on CONFIRM või RESPOND.
    Põhifunktsiooni Link TX kasutamisel saab kasutada mis tahes C väärtust. Link Service Primitives kasutamisel täidetakse välja C automaatselt vastavalt standardile EN 13757-4:2005.
  3. M-väli
    M-väli on tootja kood. Tootjad saavad taotleda kolmetähelist koodi järgmiselt web aadress: http://www.dlms.com/flag/INDEX.HTM Kolmetähelise koodi iga märk on kodeeritud viie bitina. 5-bitise koodi saab hankida, võttes ASCII-koodi ja lahutades 0x40 (“A”). Kolm 5-bitist koodi on ühendatud 15-bitiseks. Kõige olulisem bitt on null.
  4. A-väli
    Aadressiväli on iga seadme kordumatu 6-baidine aadress. Ainulaadse aadressi peaks määrama tootja. Iga tootja vastutab selle eest, et igal seadmel oleks kordumatu 6-baidine aadress. Saatmise ja päringu raamide aadress on arvesti või muu seadme enda aadress. Kinnitus- ja vastuseandmeraamid saadetakse lähteseadme aadressi kasutades.
  5. CI-väli
    CI-väli on rakenduse päis ja täpsustab rakenduse andmekoormuses olevate andmete tüüpi. Kuigi standard EN13757-4:2005 määrab piiratud arvu väärtusi, lubavad Link Service Primitives kasutada mis tahes väärtust.
  6. CRC
    CRC on määratletud standardis EN13757-4:2005.
    CRC polünoom on:
    X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
    Pange tähele, et M-Bus CRC arvutatakse iga 16-baidise ploki kohta. Tulemuseks on see, et iga 16 baiti andmete edastamiseks on vaja 18 baiti,
Lisainfo

Lisateavet lingikihi rakendamise kohta leiate jaotisest „AN452: Wireless M-Bus Stack Programmers Guide“.

Toitehaldus

Joonisel 2 on näidatud toitehalduse ajaskaala arvesti ntample kasutades režiimi T1.

Energia säästmiseks peaks MCU võimaluse korral olema puhkerežiimis. Selles eksample, MCU magab, kui RTC töötab, kui ootab raadiokristalli käivitamist ja edastab FIFO-st. MCU ärkab EZRadioPRO IRQ signaalist, mis on ühendatud Port Matchi äratusega.
Kui edastada sõnumeid, mis on pikemad kui üks plokk, peab MCU ärkama, et täita FIFO (FIFO peaaegu tühja katkestuse alusel) ja seejärel uinuda.
MCU peaks ADC-st lugemisel olema jõuderežiimis ja töötama väikese võimsusega ostsillaatorist või sarivõtterežiimi ostsillaatorist. ADC vajab SAR-kella.
Kui seda ei kasutata, peaks EZRadioPRO olema väljalülitusrežiimis ja SDN-viik on kõrgel. See nõuab juhtmega ühendust MCU-ga. EZ Radio Pro registreid väljalülitusrežiimis ei säilitata; seega initsialiseeritakse EZRadioPro igal RTC intervallil. Raadio lähtestamine võtab vähem kui 100 µs ja säästab 400 nA. Selle tulemuseks on 10-sekundilise intervalli alusel 10 µJ energiasääst.
EZRadioPRO kristall võtab POR-i jaoks umbes 16 ms. See on piisavalt pikk, et arvutada CRC umbes kaheksa ploki kohta. MCU läheb tagasi magama, kui see lõpetab kõik CRC-d enne, kui kristall on stabiliseerunud. Kui krüpteerimine on vajalik, saab seda ka kristallostsillaatoril oodates käivitada.
MCU peaks töötama 20 MHz sagedusel, kasutades enamiku toimingute jaoks väikese võimsusega ostsillaatorit. Täpset ajalõppu nõudvate ülesannete puhul tuleb puhkerežiimi asemel kasutada täppisostsillaatorit ja jõuderežiimi. RTC pakub enamiku ülesannete jaoks piisavat eraldusvõimet. Toitehalduse ajaskaala T2 arvesti jaoks, ntamprakendus on näidatud joonisel 3.

Transiiveri teostus tuleks optimeerida tavapäraseks juhuks, kui arvesti ärkab ja lugejat pole. Minimaalsed/maksimaalsed ACK-i ajalõpud on piisavalt pikad, et oleks võimalik kasutada C8051F930 RTC-d ja lülitada MCU puhkerežiimi.
Toitevõrgu või USB-toitega lugejate jaoks, mis ei pea kasutama puhkerežiimi, on saadaval ehitusvalikud. Unerežiimi asemel kasutatakse ooterežiimi, nii et USB ja UART võivad MCU katkestada.

SILICON LABS Wireless M-BUS tarkvara juurutamine AN451-1

Lihtsuse stuudio
Ühe klõpsuga juurdepääs MCU-le ja juhtmevabadele tööriistadele, dokumentatsioonile, tarkvarale, lähtekooditeekidele ja muule. Saadaval Windowsi jaoks,
Mac ja Linux!

IoT portfell Kvaliteet
IoT portfell
www.silabs.com/IoT
SW/HW
www.silabs.com/simplicity
Kvaliteet
www.silabs.com/quality
Tugi ja kogukond
Community.silabs.com

Vastutusest loobumine
Silicon Labs kavatseb pakkuda klientidele uusimat, täpset ja põhjalikku dokumentatsiooni kõigi Silicon Labsi tooteid kasutavate või kasutada kavatsevate süsteemi- ja tarkvararakendajate jaoks saadaolevate välisseadmete ja moodulite kohta. Iseloomustusandmed, saadaolevad moodulid ja välisseadmed, mälumahud ja mäluaadressid viitavad igale konkreetsele seadmele ning pakutavad "tüüpilised" parameetrid võivad erinevates rakendustes erineda. Rakendus ntampsiin kirjeldatud on ainult illustratiivsel eesmärgil. Silicon Labs jätab endale õiguse teha siin esitatud tooteteabe, spetsifikatsioonide ja kirjelduste muudatusi ilma täiendava etteteatamiseta ja piiranguteta ning ei anna garantiid lisatud teabe täpsuse või täielikkuse kohta. Silicon Labs ei vastuta siin esitatud teabe kasutamise tagajärgede eest. See dokument ei viita ega väljenda siinkohal antud autoriõiguse litsentse mis tahes integraallülituste kavandamiseks või valmistamiseks. Tooted ei ole ette nähtud ega lubatud kasutamiseks üheski Life Support Systemis ilma Silicon Labsi konkreetse kirjaliku nõusolekuta. "Elu toetav süsteem" on mis tahes toode või süsteem, mis on ette nähtud elu ja/või tervise toetamiseks või säilitamiseks, mille ebaõnnestumise korral võib mõistlikult eeldada, et see põhjustab olulisi kehavigastusi või surma. Silicon Labsi tooted ei ole loodud ega lubatud sõjaliseks kasutamiseks. Silicon Labsi tooteid ei tohi mitte mingil juhul kasutada massihävitusrelvades, sealhulgas (kuid mitte ainult) tuuma-, bioloogilistes või keemiarelvades ega rakettides, mis on võimelised selliseid relvi kohale toimetama.
Kaubamärgi teave
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® ja Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro logo ja nende kombinatsioonid, "maailma kõige energiasäästlikumad mikrokontrollerid", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, Telegesis Logo®, USBXpress® ja teised on Silicon Labsi kaubamärgid või registreeritud kaubamärgid. ARM, CORTEX, Cortex-M3 ja pöidlad on ettevõtte ARM Holdings kaubamärgid või registreeritud kaubamärgid. Keil on ettevõtte ARM Limited registreeritud kaubamärk. Kõik muud siin mainitud tooted või kaubamärgid on nende vastavate omanike kaubamärgid.SILICON LABSi logo

Silicon Laboratories Inc.
400 West Cesar Chavez
Austin, TX 78701
USA
http://www.silabs.com

Dokumendid / Ressursid

SILICON LABS Wireless M-BUS tarkvara juurutamine AN451 [pdfKasutusjuhend
SILICON LABS, C8051, MCU ja, EZRadioPRO, juhtmevaba M-bus, juhtmevaba, M-BUS, tarkvara, juurutamine, AN451

Viited

Jäta kommentaar

Teie e-posti aadressi ei avaldata. Kohustuslikud väljad on märgitud *