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).
U 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
- 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 - EN 13757-3
Sistema di cumunicazione per metri è lettura remota di metri
Parte 3: Stratu di applicazione dedicatu - IEC 60870-2-1: 1992
Apparecchiature è sistemi di telecontrol
Parte 5: Protocolli di trasmissione
Sezione 1: Prucedura di trasmissione di u ligame - 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.
- 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. - 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. - 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. - 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. - 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. - 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.
Simplicity Studio
Accessu cù un clic à MCU è strumenti wireless, documentazione, software, biblioteche di codice fonte è più. Disponibile per Windows,
Mac è Linux!
![]() |
![]() |
![]() |
![]() |
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.
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 |