Logo di SILICON LABS

AN451
IMPLEMENTAZIONE DI SOFTWARE WIRELESS M-BUS

Introduzione

Questa nota applicativa descrive l'implementazione di Silicon Labs di Wireless M-Bus utilizendu un MCU Silicon Labs C8051 è EZRadioPRO®. Wireless M-bus hè un Standard Europeu per l'applicazioni di lettura di metri chì utilizanu a banda di frequenza 868 MHz.

Stack Layers

Wireless M-Bus usa u mudellu IEC 3-layer, chì hè un subset di u mudellu OSI 7-layer (vede a Figura 1).

SILICON LABS Wireless M-BUS Software Implementation AN451U stratu fisicu (PHY) hè definitu in EN 13757-4. U stratu fisicu definisce cumu i bit sò codificati è trasmessi, e caratteristiche di u modem RF (tassa di chip, preambolu è parola di sincronizazione), è parametri RF (modulazione, frequenza centrale è deviazione di frequenza).
A capa PHY hè implementata cù una cumminazione di hardware è firmware. L'EZRadioPRO esegue tutte e funzioni RF è modem. L'EZRadioPRO hè utilizatu in modu FIFO cù u gestore di pacchetti. U modulu MbusPhy.c furnisce interfaccia SPI, codificazione / decodificazione, bloccu di lettura / scrittura, è gestione di pacchetti è gestisce i stati transceiver.
U M-Bus Data link layer hè implementatu in u modulu MbusLink.c. L'interfaccia di prugrammazione di l'applicazioni M-Bus hè custituita da funzioni pubbliche chì ponu esse chjamate da a strata di l'applicazione in u filu principale. U modulu MbusLink implementa ancu u Data Link Layer. A strata di ligame di dati formaterà è copiarà e dati da u buffer TX di l'applicazione à u buffer MbusPhy TX, aghjunghjendu l'intestazione è i CRC necessarii.
U stratu Applicazioni stessu ùn hè micca parti di u firmware M-bus. U stratu di l'applicazione definisce cumu una larga varietà di dati deve esse furmatu per a trasmissione. A maiò parte di i metri solu bisognu di trasmette unu o dui tipi di dati. Agghiuncennu una grande quantità di codice per allughjà ogni tipu di dati à u metru aghjunghjenu codice innecessariu è costu à u metru. Puderia esse fattibile implementà una biblioteca o un header file cù una lista exhaustiva di tipi di dati. In ogni casu, a maiò parte di i clienti di misurazione sanu esattamente quale tipu di dati anu bisognu di trasmette è ponu riferite à u standard per i dettagli di furmatu. Un lettore universale o sniffer puderia implementà un inseme cumpletu di tipi di dati di l'applicazione nantu à a GUI di u PC. Per questi mutivi, a strata di l'applicazione hè implementata usendu example applicazioni per un metru è lettore.

Norme richiesti
  1. EN 13757-4
    EN 13757-4
    Sistema di cumunicazione per metri è lettura remota di metri
    Parte 4: Lettura di u metru wireless
    Lettura radiometru per u funziunamentu in a banda SRD da 868 MHz à 870 MHz
  2. EN 13757-3
    Sistema di cumunicazione per metri è lettura remota di metri
    Parte 3: Stratu di applicazione dedicatu
  3. IEC 60870-2-1: 1992
    Apparecchiature è sistemi di telecontrol
    Parte 5: Protocolli di trasmissione
    Sezione 1: Prucedura di trasmissione di u ligame
  4. IEC 60870-1-1: 1990
    Apparecchiature è sistemi di telecontrol
    Parte 5: Protocolli di trasmissione
    Sezione 1: furmati di frame di trasmissione
Definizioni
  • M-Bus -M-Bus hè un standard cablatu per a lettura di metri in Europa.
  • Wireless M-Bus—M-Bus senza fili per applicazioni di lettura di contatori in Europa.
  • PHY- U stratu fisicu definisce cumu i bits è i byte di dati sò codificati è trasmessi.
  • API-Interfaccia di u prugrammatore di l'applicazione.
  • LINK—Data Link Layer definisce cume i blocchi è i frames sò trasmessi.
  • CRC-Verificazione di Redundancy Ciclicu.
  • FSK-Frequency Shift Keying.
  • chip -A più chjuca unità di dati trasmessi. Un bit di dati hè codificatu cum'è più chips.
  • Modulu-AC codice surghjente .c file.

M-Bus PHY Descrizzione Funziunale

Sequenza di Preambulu

A sequenza di Preambulu specificata da a specificazione M-bus hè un numeru interu chì alterna zeri è uni. A unu hè definitu cum'è a frequenza più alta, è un cero hè definitu cum'è a frequenza più bassa.
nx (01)
L'opzioni di Preambulu per u Si443x hè un nùmeru interu di nibbles custituitu da l'alternanza di uni è zeri.
nx (1010)
Un preambulu cù un capu supplementu ùn saria micca un prublema, ma, allora, a parolla di sincronizazione è a carica utile seranu misaligned da un pocu.
A suluzione hè d'invertisce u pacchettu sanu insettendu u bit di u mutore in u registru Modulation Control 2 (0x71). Questu inverterà u preambulu, a parolla di sincronia è e dati TX / RX. In cunsiquenza, i dati duveranu esse invertiti quandu scrive i dati TX o leghje i dati RX. Inoltre, a parolla di sincronizazione hè invertita prima di scrive à i registri Si443x Synchronization Word.

Sincronizazione Word

A parolla di sincronizazione richiesta da EN-13757-4 hè 18 chips per Mode S è Mode R o 10 chips per Model T. A parolla di sincronizazione per u Si443x hè da 1 à 4 bytes. In ogni casu, postu chì a parolla di sincronizazione hè sempre preceduta da u preambulu, l'ultimi sei bits di u preambulu pò esse cunsideratu parte di a parolla di sincronizazione; cusì, a prima parolla di sincronizazione hè imbottita da trè ripetizioni di un cero seguitatu da una. A parolla di sincronizazione hè cumplementata prima di scrive à i registri Si443x.
Table 1. Parola di Sincronizazione per Modu S è Modu R

EN 13757-4 00 01110110 10010110 binariu
00 76 96 hex
pad cù (01) x 3 01010100 01110110 10010110 binariu
54 76 96 hex
cumplementu 10101011 10001001 01101001 binariu
AB 89 69 hex

Table 2. Synchronization Word for Mode T Meter to Other

SYNCH SYNCH SYNCH
PAROLA PAROLA PAROLA
3 2 1
Trasmetti Preambulu Lunghezza

U preambulu minimu hè specificatu per quattru modi operativi diffirenti. Hè accettatu per avè un preambulu più longu ch'è specificatu. A sottrazione di sei chips per u preambulu dà u minimu numeru di chips per u preambulu Si443x. L'implementazione aghjusta dui nibbles extra di preambulu in tutti i modi di preambulu brevi per migliurà a rilevazione di preambulu è l'interoperabilità. U preambulu nantu à u Modu S cù un preambulu longu hè assai longu; dunque, u preambulu minimu hè utilizatu. A lunghezza di preambulu in nibbles hè scritta à u registru Preamble Length (0x34). U registru di a lunghezza di u preambulu determina u preambulu solu nantu à a trasmissione. A specificazione minima è i paràmetri di lunghezza di preambulu sò riassunti in a Tabella 3.
Table 3. Trasmetta Preamble Length

EN-13757-4
minimu
Si443x Preambulu
Set ing
Sincronizza
Parola
Totale extra
nx (01) chips nibbles chips chips chips chips
Mode S brevi preambulu 15 30 8 32 6 38 8
Mode S long préambule 279 558 138 552 6 558 0
Modu T (metru-altru) 19 38 10 40 6 46 8
Modu R 39 78 20 80 6 86 8

U preambulu minimu per a ricezione hè determinatu da u registru di Preamble Detection Control (0x35). À a ricezione, u numeru di bit in a parolla di sincronia deve esse sottrattu da u preambulu minimu specificatu per determinà u preambulu utilizable. U tempu minimu di stabilimentu di u ricevitore hè 16-chips se AFC hè attivatu o 8-chips se AFC hè disattivatu. U tempu di stabilimentu di u ricevitore hè ancu sottrattu da u preambulu utilizable per determinà u paràmetru minimu per u registru di cuntrollu di rilevazione di preambulu.

A probabilità di un preambulu falsu dipende da a paràmetrazione di u registru di cuntrollu di rilevazione di preambulu. Un cortu paràmetru di 8-chips pò esse risultatu in un falsu preambulu rilevatu ogni pocu seconde. L'impostazione consigliata di 20 chips rende a rilevazione di falsi preamboli un avvenimentu improbabile. E lunghezze di preambulu per u Modu R è u Modu SL sò abbastanza lunghe per l'impostazione consigliata per esse usata.
Ci hè assai pocu benefiziu per fà u preambulu detectà più di 20 chips.
L'AFC hè disattivatu per u Model S cù un preambulu curtu è u Model T. Questu reduce u tempu di stabilimentu di u receptore è permette un paràmetru di deteczione di preambulu più longu. Cù l'AFC disattivatu, u Modu T pò aduprà u paràmetru cunsigliatu di 20 chips. Un paràmetru di 4 nibbles o 20 chips hè utilizatu per u Model S cù un brevi preambulu. Questu rende a probabilità di una falsa deteczione di preambulu ligeramente più altu per stu mudellu.
Table 4. Preamble Detection

EN-13757-4
minimu
Sincronizza
Parola
utilizable
preambulu
RX Settlement Detect
min
Si443x Preambulu
Impostazione di Rilevazione
nx (01) chips chips chips chips chips nibbles chips
Mode S brevi preambulu 15 30 6 24 8* 16 4 16
Preambulu longu di u mudellu S 279 558 6 552 16 536 5 20
Mudellu T (metru-altru) 19 38 6 32 8* 24 5 20
Modu R 39 78 6 72 16 56 5 20
* Nota: AFC disattivatu

U ricevitore hè cunfiguratu per interopera cù un trasmettitore utilizendu u preambulu minimu specificatu. Questu assicura chì u ricevitore interoperarà cù qualsiasi trasmettitore conforme à M-bus.
A specificazione Wireless M-Bus richiede un preambulu assai longu per u Modu S1 di almenu 558 chips. Questu hà da piglià circa 17 ms solu per trasmette u preambulu. U Si443x ùn hà micca bisognu di un preambulu cusì longu è ùn beneficia micca di u preambulu longu. Mentre chì u preambulu longu hè nutatu cum'è facultativu per u Modu S2, ùn ci hè nisuna ragione per utilizà un preambulu longu cù u Si443x. Se a cumunicazione unidirezionale hè desiderata, u Modu T1 furnisce un preambulu più breve, una tarifa di dati più altu è una vita di bateria più longa. Se a cumunicazione bidirezionale cù u Modu S2 hè necessaria, un brevi preambulu hè cunsigliatu.
Avvisate chì u limitu di deteczione per u Model S cù un preambulu longu hè più longu cà u numeru di nibbles di preambulu trasmessi per u Model S cun un preambulu curtu. Questu significa chì u ricevitore Mode S di preambolu longu ùn detecterà micca un preambulu da un trasmettitore Mode S di preambolu brevi. Questu hè necessariu se u preambulu longu u receptore Mode S hà da riceve un benefiziu da u preambulu longu.
Nota chì u preambulu brevi Mode S ricevitore detecterà u preambulu è riceve pacchetti da i dui un brevi preambulu Mode S.
trasmettitore è un trasmettitore Mode S à longu preambulu; cusì, in generale, u lettore di metru deve aduprà a cunfigurazione di u ricivutu Modu S di preambulu brevi.

Encoding / Decoding

A specificazione Wireless M-bus richiede dui metudi di codificazione differenti. A codificazione di Manchester hè aduprata per u Modu S è u Modu R. L'encodificazione di Manchester hè ancu utilizata per u ligame di l'altru à u metru in u Model T. U ligame di u metru à l'altru Model T usa 3 di 6 codificazioni.
1. Manchester Encoded / Decoding
A codificazione di Manchester hè cumuna storicamente in i sistemi RF per furnisce una ricuperazione robusta di u clock è u seguimentu utilizendu un modem simplice è pocu costu. In ogni casu, una radiu muderna d'altu rendiment cum'è u Si443x ùn hà micca bisognu di codificazione di Manchester. A codificazione di Manchester hè supportata principarmenti per a cumpatibilità cù i normi esistenti, ma a tarifa di dati per u Si443x hè effettivamente radduppiata quandu ùn si usa micca a codificazione di Manchester.
U Si443x sustene a codificazione è a decodificazione di Manchester di tuttu u pacchettu in hardware. Sfortunatamente, a parolla di sincronizazione ùn hè micca codificata Manchester. Una sequenza Manchester invalida hè stata scelta intenzionalmente per a parolla di sincronizazione. Questu rende a codificazione di Manchester incompatibile cù a maiò parte di e radiu esistenti, cumpresu u Si443x. In cunseguenza, a codificazione è a decodificazione di Manchester deve esse realizata da u MCU. Ogni byte nantu à e dati non codificati hè custituitu da ottu bit di dati. Utilizendu a codificazione di Manchester, ogni bit di dati hè codificatu in un simbulu di dui chip. Siccomu i dati codificati deve esse scritti à a radio FIFO ottu chips à un tempu, un nibble di dati hè codificata è scritta à u FIFO à u mumentu.
Table 5. Manchester Encoding

dati Ox12 0x34 bytes
Ox1 0x2 0x3 0x4 nibbles
1 10 11 100 binariu
chip 10101001 10100110 10100101 10011010 binariu
FIFO OxA9 OxA6 OxA5 Ox9A hex

Ogni byte per esse trasmessu hè passatu un byte à u tempu à a funzione di codifica di byte. A funzione di codifica di byte chjamarà a funzione di codifica nibble duie volte, prima per u nibble più significativu è dopu per u nibble menu significativu.
A codificazione di Manchester in u software ùn hè micca difficiule. Partendu da u bit più significativu, unu hè codificatu cum'è una sequenza di chip "01". Un zero hè codificatu cum'è una sequenza di chip "10". Questu pò esse facilmente realizatu usendu un loop è cambiendu dui bit per ogni simbulu. In ogni casu, hè più veloce di utilizà solu una semplice tabella di ricerca di 16 voci per ogni nibble. A funzione di codifica Manchester nibble codifica un nibble di dati poi scrive à u FIFO. I chips sò invertiti prima di scrive à u FIFO per cuntà i requisiti di preambulu invertitu.
Quandu riceve, ogni byte in u FIFO hè custituitu di ottu chips è hè decodificata in un nibble di dati. A funzione di bloccu di lettura leghje un byte à volta da u FIFO è chjama a funzione di decode byte. I chips sò invertiti dopu avè lettu da u FIFO per cuntà i requisiti di preambulu invertitu. Ogni byte di chips codificati Manchester hè decodificatu in un nibble di dati. U nibble decodificatu hè scrittu à u buffer RX utilizendu a funzione di scrittura nibble RX buffer.
Avvisu chì i dui codificati è decodificazione sò realizati un nibble di dati à u mumentu à a mosca. A codifica in un buffer richiederebbe un buffer supplementu duie volte a dimensione di e dati senza codifica. A codificazione è a decodificazione hè assai più veloce cà a più veloce di dati supportati (100 k chips per seconda). Siccomu u Si443x supporta letture multibyte è scrivite à u FIFO, ci hè una piccula overhead in l'usu di sola lettura è scrittura di un byte. L'overhead hè di circa 10 µs per 100 chips codificati. U benefiziu hè un risparmiu di RAM di 512 bytes.
2. Trè fora di sei decodificazione di codificazione
U metudu di codificazione Three-out-of-Six specificatu in EN-13757-4 hè ancu implementatu in firmware in u MCU. Questa codificazione hè aduprata per l'alta velocità (100 k chips per seconda) Mode T da metru à l'altru. U mudellu T furnisce u tempu di trasmissione più brevi è a vita di a bateria più longa per un metru wireless.
Ogni byte di dati da trasmette hè divisu in dui nibbles. U nibble più significativu hè codificatu è trasmessu prima. In novu, questu hè implementatu cù una funzione di codifica di byte chì chjama a funzione di codifica nibble duie volte.
Ogni nibble di dati hè codificata in un simbulu di sei chip. A sequenza di simbuli di sei chip deve esse scritta à u FIFO 8chip.
Durante a codificazione, dui byte di dati sò codificati cum'è quattru nibbles. Ogni nibble hè un simbulu di 6 chip. Quattru simboli 6chip sò aggregati cum'è trè byte.
Table 6. Three Out of Six Encoding

dati 0x12 0x34 bytes
Ox1 0x2 0x3 0x4 nibbles
chip 15 16 13 34 ottale
1101 1110 1011 11100 binariu
FIFO 110100 11100010 11011100 binariu
0x34 OxE2 OxDC hex

In u software, a codificazione di trè fora di sei hè implementata cù trè funzioni nidificate. A funzione di codifica byte chjamarà a funzione di codifica nibble duie volte. A funzione di codifica nibble usa una tavola di ricerca per u simbulu di sei chip è scrive u simbulu à u Shift Three out of Six funzioni. Questa funzione implementa un registru di shift 16-chip in u software. U simbulu hè scrittu à u byte menu significativu di u registru di shift. U registru hè spustatu a manca duie volte. Questu hè ripetutu trè volte. Quandu un byte cumpletu hè presente in u byte superiore di u registru di shift, hè invertitu è ​​scrittu à u FIFO.
Siccomu ogni byte di dati hè codificatu cum'è un byte codificatu è mezu, hè impurtante di sguassà u registru di shift inizialmente in modu chì u primu byte codificatu hè currettu. Se a lunghezza di u pacchettu hè un numeru imparu, dopu à codificà tutti i byte, ci sarà sempre un nibble lasciatu in u registru di shift. Questu hè trattatu cù u postambulu cum'è spiegatu in a sezione dopu.
Decodificà i trè fora di sei codificati hè a prucedura inversa. Quandu si decodifica, trè byte codificati sò decodificati in dui bytes di dati. U registru di shift software hè novu utilizatu per aggregate bytes di dati decodificati. Una tabella di ricerca inversa di 64 voci hè aduprata per a decodificazione. Questu usa menu cicli ma più memoria di codice. A ricerca in una tavola di ricerca di 16 voci per u simbulu currispundente dura assai più.
Postamble
A specificazione Wireless M-bus hà esigenze specifiche per u postambulu o trailer. Per tutti i modi, u minimu hè dui chips, è u massimu hè ottu chips. Siccomu l'unità atomica minima per u FIFO hè un byte, un trailer di 8-chip hè utilizatu per u Modu S è u Modu R. U Modu T postamble hè ottu chips se a durata di u pacchettu hè pari o quattru chips se a durata di u pacchettu hè strana. U postambulu di quattru chip per una lunghezza di pacchettu strana risponde à i requisiti di avè almenu dui chip alternati.
Table 7. Postamble Length

Lunghezza Postamble (chips)
min max Implementazione sequenza di chip
Modu S 2 8 8 1010101
Modu T 2 8 4 (stranu) 101
8 (ancu) 1010101
Modu R 2 8 8 1010101
Manipulatore di pacchetti

U gestore di pacchetti nantu à u Si443x pò esse usatu in un modu di larghezza di pacchettu variabile o un modu di larghezza di pacchettu fissu. U modu di larghezza di pacchettu variabile richiede un byte di lunghezza di pacchettu dopu a parolla di sincronizazione è byte di header opzionali. À a ricezione, a Radio aduprà u byte di lunghezza per determinà a fine di un pacchettu validu. In a trasmissione, a radiu inserirà u campu di lunghezza dopu à i bytes di l'intestazione.
U campu L per u protocolu M-bus wireless ùn pò micca esse usatu per u campu di lunghezza Si443x. Prima, u campu L ùn hè micca a durata di u pacchettu propiu. Hè u nùmeru di byte di carica di u livellu di ligame chì ùn includenu micca i byte CRC o a codificazione. In siconda, u campu L stessu hè codificatu usendu sia a codificazione di Manchester sia a codificazione di trè fora di sei per u metru Mode T à l'altru.
L'implementazione usa u gestore di pacchetti in modu di larghezza di pacchettu fissu per a trasmissione è a ricezione. Dopu a trasmissione, a capa PHY leghje u campu L in u buffer di trasmissione è calculà u numeru di bytes codificati, cumpresu u postamble. U numeru tutale di bytes codificati per esse trasmessi hè scrittu à u registru di Packet Length (0x3E).
À a ricezione, i primi dui byte codificati sò decodificati, è u campu L hè scrittu à u buffer di ricezione. U campu L hè utilizatu per calculà u numeru di bytes codificati per esse ricevutu. U numeru di byte codificati per esse ricevutu hè scrittu in u registru di Packet Length (0x3E). U postambulu hè scartatu.
U MCU deve decodificà u campu L, calculà u numeru di byte codificati, è scrive u valore in u registru di Packet Length prima chì a lunghezza di pacchettu più corta pussibule hè stata ricevuta. U campu L più curtu permessu per a capa PHY hè 9, chì dà 12 bytes senza codifica. Questu dà 18 bytes codificati per u Model T. I primi dui bytes sò digià decodificati. Cusì, u registru di Lunghezza di u pacchettu deve esse aghjurnatu in 16-byte volte à 100 kbps o 1.28 millisecondi. Questu ùn hè micca prublema per un 8051 chì funziona à 20 MIPS.
U numaru di byte per esse ricivutu ùn include micca u postamble, eccettu per u postamble di quattru chip utilizatu per i pacchetti in Modu T cù una lunghezza di pacchettu strana. Cusì, u ricevitore ùn hà micca bisognu di un postambulu, eccettu per i pacchetti Model T di lunghezza impari. Stu postamble hè necessariu solu per dà un numeru interu di bytes codificati. U cuntenutu di u postambulu hè ignoratu; dunque, se u postambulu ùn hè micca trasmessu, quattru chips di rumore seranu ricevuti è ignorati. Siccomu u numeru tutale di byte codificati hè limitatu à 255 (0xFF), l'implementazione limita u massimu L-campu per i diversi modi.
Table 8. Limiti di dimensione di u pacchettu

codificati decodificati M-Bus
bytes bytes L-campu
dic hex dic hex dic hex
Modu S 255 FF 127 7 F 110 6E
Modu T (metru-altru) 255 FF 169 A9 148 94
Modu R 255 FF 127 7 F 110 6E

Questi limiti sò normalment assai sopra à u casu d'usu tipicu per un metru wireless. A durata di u pacchettu deve esse mantinutu chjuca per ottene a megliu vita di a bateria pussibule.
Inoltre, l'utilizatore pò specificà u campu L massimu chì deve esse ricevutu (USER_RX_MAX_L_FIELD). Questu determina a dimensione necessaria per u buffer di riceve (USER_RX_BUFFER_SIZE).
U sustegnu di un L-field massimu di 255 richiederebbe un buffer di ricezione di 290 byte è un massimu di 581 byte codificati Manchester. U gestore di pacchetti deve esse disattivatu è u registru di Packet Length ùn pò micca esse usatu in questu casu. Questu hè fattibile, ma hè più convenientu di utilizà u pacchettu di pacchettu, se pussibule.

Utilizà FIFO

U Si4431 furnisce un FIFO di 64 byte per trasmette è riceve. Siccomu u nùmeru di byte codificati hè 255, un pacchettu codificatu tutale ùn pò micca intruduce in u buffer di 64 byte.
Trasmissioni
In a trasmissione, u numeru tutale di bytes codificati hè calculatu. Se u numeru tutale di bytes codificati, cumpresu u postamble, hè menu di 64 bytes, u pacchettu tutale hè scrittu à u FIFO è solu u pacchettu mandatu interruzzione hè attivatu. A maiò parte di i pacchetti brevi seranu mandati in un trasferimentu FIFO.
Se u numeru di byte codificati hè più grande di 64, i trasferimenti multipli FIFO seranu necessarii per mandà u pacchettu. I primi 64 bytes sò scritti à u FIFO. L'interruzioni Packet Sent è TX FIFO Almost Empty sò attivate. U sogliu TX FIFO Quasi Viotu hè stabilitu à 16 bytes (25%). À ogni avvenimentu IRQ, u registru di status 2 hè lettu. U bit Packet Sent hè verificatu prima, è, se u pacchettu ùn hè statu mandatu cumplettamente, i prossimi 48 bytes di dati codificati sò scritti à u FIFO. Questu cuntinueghja finu à chì tutti i byte codificati sò stati scritti è l'interruzzione Packet Sent si verifica.
1. Reception
À a ricezione, inizialmente, solu l'interruzzione di Sync Word hè attivata. Dopu avè ricivutu a parolla di sincronia, l'interruzzione di a parolla di sincronia hè disattivata è l'interruzzione FIFO Quasi Full hè attivata. U limitu FIFO quasi pienu hè inizialmente stabilitu à 2 bytes. A prima interruzzione FIFO Quasi Full hè utilizata per sapè quandu i dui byte di lunghezza sò stati ricevuti. Quandu a lunghezza hè stata ricevuta, a durata hè decodificata è u numeru di bytes codificati hè calculatu. U sogliu RX FIFO quasi Full hè allora stabilitu à 48 bytes. U RX FIFO hè quasi pienu è l'interruzioni di Packet Valid sò attivate. À u prossimu avvenimentu IRQ, u registru di status 1 hè lettu. Prima, u bit Valid Packet hè verificatu, è dopu u bit FIFO Almost Full hè verificatu. Se solu u RX FIFO Almost Full bit hè stabilitu, i prossimi 48 bytes sò letti da u FIFO. Se u bit di pacchettu validu hè stabilitu, u restu di u pacchettu hè lettu da u FIFO. U MCU mantene a traccia di quanti byte sò stati letti è ferma a lettura dopu l'ultimu byte.

Livellu di Link di Dati

U modulu di strata di ligame di dati implementa una strata di ligame 13757-4: 2005. U stratu di cunnessione di dati (LINK) furnisce una interfaccia trà u stratu fisicu (PHY) è u stratu di l'applicazione (AL).
U Data Link Layer svolge e seguenti funzioni:

  • Fornisce funzioni chì trasferisce dati trà PHY è AL
  • Genera CRC per i missaghji in uscita
  • Detecta errori CRC in i missaghji entranti
  • Fornisce l'indirizzu fisicu
  • Ricunnosce i trasferimenti per i modi di cumunicazione bidirezionale
  • Frames bit di dati
  • Rileva errori di framing in i missaghji ricevuti
Link Layer Frame Format

U formatu di frame Wireless M-Bus utilizatu in EN 13757-4: 2005 hè derivatu da u formatu di frame FT3 (Frame Type 3) da IEC60870-5-2. U quadru hè custituitu da unu o più blocchi di dati. Ogni bloccu include un campu CRC 16-bit. U primu bock hè un bloccu di lunghezza fissa di 12 bytes chì include u campu L, C-field, M-field è A-Field.

  1. L-campu
    U campu L hè a lunghezza di a carica di dati di a capa di Link. Questu ùn include micca u campu L stessu o alcunu byte CRC. Include l'L-field, C-field, M-field, è A-Field. Quessi sò parti di u PHY payload.
    Perchè u numeru di bytes codificati hè limitatu à 255 bytes, u valore massimu supportatu per u M-field hè 110 bytes per i dati codificati Manchester è 148 bytes per u Modu T Three-Out-of-Six dati codificati.
    A strata Link hè rispunsevule per u calculu di u campu L in a trasmissione. U link-layer utilizerà u campu L in a ricezione.
    Nota chì u campu L ùn indica micca a durata di a carica PHY o u numeru di bytes codificati. Dopu à a trasmissione, u PHY hà da calculà a durata di a carica PHY è u numeru di bytes codificati. À a ricezione, u PHY decodificà u campu L è calculerà u numeru di bytes per decode.
  2. Campu C
    U campu C hè u campu di cuntrollu di quadru. Stu campu identifica u tipu di quadru è hè utilizatu per i primitivi di serviziu di scambiu di dati di ligame. U C-campu indica u tipu di quadru - SEND, CONFIRM, REQUEST, o RESPOND. In u casu di i frames SEND è REQUEST, u C-campu indica se un CONFIRM o RESPOND hè previstu.
    Quandu si usa a funzione Link TX di basa, ogni valore di C pò esse usatu. Quandu s'utilice u Link Service Primitives, u campu C hè populatu automaticamente secondu a EN 13757-4: 2005.
  3. M-Field
    U campu M hè u codice di u fabricatore. I pruduttori ponu dumandà un codice di trè lettere da i seguenti web indirizzu: http://www.dlms.com/flag/INDEX.HTM Ogni caratteru di u codice di trè lettere hè codificata cum'è cinque bit. U codice di 5-bit pò esse acquistatu da piglià u codice ASCII è sottraendu 0x40 ("A"). I trè codici 5-bit sò cuncatenati per fà 15-bits. U bit più significativu hè zero.
  4. A-campu
    U campu di indirizzu hè un indirizzu unicu di 6 byte per ogni dispusitivu. L'indirizzu unicu deve esse assignatu da u fabricatore. Hè a rispunsabilità di ogni fabricatore per assicurà chì ogni dispusitivu hà un indirizzu unicu di 6 byte. L'indirizzu per i frames Send and Request hè l'auto-indirizzu di u metru o un altru dispositivu. I frames di dati di cunfirmazione è risposta sò mandati utilizendu l'indirizzu di u dispusitivu urigginatu.
  5. CI-Field
    U campu CI hè l'intestazione di l'applicazione è specifica u tipu di dati in a carica di dati di l'applicazione. Mentre EN13757-4: 2005 specifica un numeru limitatu di valori, i Primitivi di u Serviziu di Link permetterà ogni valore per esse usatu.
  6. CRC
    U CRC hè specificatu in EN13757-4: 2005.
    U polinomiu CRC hè:
    X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
    Nota chì u M-Bus CRC hè calculatu annantu à ogni bloccu di 16 byte. U risultatu hè chì ogni 16 byte di dati necessitanu 18 bytes per esse trasmessi,
Informazioni supplementari

Per più infurmazione nantu à l'Implementazione di u Link Layer, vede "AN452: Wireless M-Bus Stack Programmers Guide".

Gestione di l'energia

A figura 2 mostra u timeline di gestione di l'energia per un metru example usendu u Mode T1.

U MCU deve esse in modalità Sleep sempre chì hè pussibule per cunservà l'energia. In questu example, u MCU hè dorme quandu u RTC hè in esecuzione, quandu aspittà nantu à u radiu cristallo start-up, è quandu trasmette da u FIFO. U MCU si svegliarà da u signale EZRadioPRO IRQ cunnessu à una sveglia Port Match.
Quandu trasmette missaghji più longu di un bloccu, u MCU deve svegliate per riempie u FIFO (basatu nantu à l'interruzzione quasi viota FIFO) è poi torna à dorme.
U MCU deve esse in modalità Idle chì funziona da l'oscillatore di bassa putenza o l'oscillatore in modalità burst quandu leghje da l'ADC. L'ADC richiede un clock SAR.
Quandu ùn hè micca in usu, l'EZRadioPRO deve esse in modalità Shutdown cù u pin SDN guidatu altu. Questu richiede una cunnessione cablata à u MCU. I registri EZ Radio Pro ùn sò micca cunservati in modu di chjusu; dunque, l'EZRadioPro hè inizializatu in ogni intervallu RTC. L'inizializazione di a Radio richiede menu di 100 µs è cunserva 400 nA. Questu risultatu in un risparmiu energeticu di 10 µJ, basatu annantu à un intervallu di 10 seconde.
U cristallu EZRadioPRO dura circa 16 ms per un POR. Questu hè abbastanza longu per calculà u CRC per circa ottu blocchi. U MCU tornerà à dorme s'ellu compie tutti i CRC prima chì u cristallu hè stabilizatu. Se u criptu hè necessariu, pò ancu esse cuminciatu mentre aspetta l'oscillatore di cristallo.
U MCU duveria eseguisce à 20 MHz utilizendu l'oscillatore di bassa putenza per a maiò parte di i travaglii. I travaglii chì necessitanu un timeout precisu devenu aduprà l'oscillatore di precisione è u modu inattivu invece di u modu di sonnu. L'RTC furnisce una risoluzione abbastanza per a maiò parte di i travaglii. U timeline di gestione di l'energia per u metru T2 exampl'applicazione hè mostrata in Figura 3.

L'implementazione di transceiver deve esse ottimizzata per u casu normale quandu u metru si sveglia è ùn ci hè micca lettore presente. I timeouts ACK minimi / massimi sò abbastanza longu per pudè usà u C8051F930 RTC è mette u MCU in modu di dorme.
L'opzioni di custruzzione sò furnite per i lettori di rete o USB chì ùn anu micca bisognu di usà u modu di sonnu. U modu inattivu serà utilizatu invece di dorme per chì l'USB è UART puderanu interrompe u MCU.

SILICON LABS Wireless M-BUS Software Implementation AN451-1

Simplicity Studio
Accessu cù un clic à MCU è strumenti wireless, documentazione, software, biblioteche di codice fonte è più. Disponibile per Windows,
Mac è Linux!

Portfolio IoT Qualità
Portfolio IoT
www.silabs.com/IoT
SW/HW
www.silabs.com/simplicity
Qualità
www.silabs.com/quality
Supportu è cumunità
community.silabs.com

Disclaimer
Silicon Labs hà l'intenzione di furnisce à i clienti l'ultime documentazioni, precise è approfondite di tutti i periferichi è moduli dispunibuli per l'implementatori di sistemi è software chì utilizanu o intendenu aduprà i prudutti di Silicon Labs. I dati di carattarizazione, i moduli è i periferichi dispunibuli, e dimensioni di memoria è l'indirizzi di memoria si riferiscenu à ogni dispusitivu specificu, è i paràmetri "tipichi" furniti ponu è varianu in diverse applicazioni. Applicazione exampI descritti quì sò solu per scopi illustrativi. Silicon Labs si riserva u dirittu di fà cambiamenti senza più avvisu è limitazione à l'infurmazioni di u produttu, specificazioni è descrizioni quì, è ùn dà micca garanzie in quantu à l'accuratezza o a completezza di l'infurmazioni incluse. Silicon Labs ùn hà micca responsabilità per e cunsequenze di l'usu di l'infurmazioni furnite quì. Stu documentu ùn implica micca o esprime licenze di copyright accordate quì sottu per cuncepisce o fabricà circuiti integrati. I prudutti ùn sò micca pensati o autorizati per esse utilizati in qualsiasi Sistema di Supportu di Vita senza l'accunsentu scrittu specificu di Silicon Labs. Un "Sistema di Supportu di Vita" hè qualsiasi pruduttu o sistema destinatu à sustene o sustene a vita è / o a salute, chì, s'ellu ùn falla, pò esse ragionevolmente previstu di risultà in ferite persunale significativu o morte. I prudutti di Silicon Labs ùn sò micca pensati o autorizati per applicazioni militari. I prudutti di Silicon Labs ùn saranu in nessuna circustanza aduprati in armi di distruzzione di massa cumprese (ma senza limitazione) armi nucleari, biologiche o chimiche, o missili capaci di furnisce tali armi.
L'infurmazione di marca
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs®, è u Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro logo è cumminzioni di elli, "i microcontrollers più amichevuli di l'energia di u mondu", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, u Telegesis Logo®, USBXpress®, è altri sò marchi o marchi registrati di Silicon Labs. ARM, CORTEX, Cortex-M3 è i pollici sò marchi o marchi registrati di ARM Holdings. Keil hè una marca registrata di ARM Limited. Tutti l'altri prudutti o nomi di marca citati quì sò marchi di i so rispettivi titulari.Logo di SILICON LABS

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

Documenti / Risorse

SILICON LABS Wireless M-BUS Software Implementation AN451 [pdfGuida di l'utente
SILICON LABS, C8051, MCU, è, EZRadioPRO, Wireless M-bus, Wireless, M-BUS, Software, Implementazione, AN451

Referenze

Lascia un cumentu

U vostru indirizzu email ùn serà micca publicatu. I campi obbligatori sò marcati *