AN451
IMPLEMENTACIÓ DE PROGRAMARI M-BUS SIN FIL
Introducció
Aquesta nota d'aplicació descriu la implementació de Silicon Labs de Wireless M-Bus mitjançant un MCU Silicon Labs C8051 i EZRadioPRO®. Wireless M-bus és un estàndard europeu per a aplicacions de lectura de comptadors que utilitzen la banda de freqüència de 868 MHz.
Apilar capes
Wireless M-Bus utilitza el model IEC de 3 capes, que és un subconjunt del model OSI de 7 capes (vegeu la figura 1).
La capa física (PHY) es defineix a la norma EN 13757-4. La capa física defineix com es codifiquen i transmeten els bits, les característiques del mòdem de RF (taxa de xip, preàmbul i paraula de sincronització) i els paràmetres de RF (modulació, freqüència central i desviació de freqüència).
La capa PHY s'implementa mitjançant una combinació de maquinari i microprogramari. L'EZRadioPRO realitza totes les funcions de RF i mòdem. L'EZRadioPRO s'utilitza en mode FIFO amb el controlador de paquets. El mòdul MbusPhy.c proporciona interfície SPI, codificació/descodificació, lectura/escriptura de blocs i gestió de paquets i gestiona els estats del transceptor.
La capa d'enllaç de dades M-Bus s'implementa al mòdul MbusLink.c. La interfície de programació d'aplicacions de M-Bus consta de funcions públiques que es poden cridar des de la capa d'aplicació del fil principal. El mòdul MbusLink també implementa la capa d'enllaç de dades. La capa d'enllaç de dades formatearà i copiarà les dades de la memòria intermèdia de l'aplicació a la memòria intermèdia MbusPhy TX, afegint les capçaleres i els CRC necessaris.
La capa d'aplicació en si no forma part del microprogramari M-bus. La capa d'aplicació defineix com s'ha de formatar una gran varietat de dades per a la transmissió. La majoria dels comptadors només necessiten transmetre un o dos tipus de dades. Afegir una gran quantitat de codi per acomodar qualsevol tipus de dades al comptador afegiria codi i cost innecessaris al comptador. Podria ser factible implementar una biblioteca o una capçalera file amb una llista exhaustiva de tipus de dades. Tanmateix, la majoria dels clients de mesurament saben exactament quin tipus de dades necessiten transmetre i poden consultar l'estàndard per obtenir els detalls del format. Un lector o sniffer universal pot implementar un conjunt complet de tipus de dades d'aplicació a la GUI de l'ordinador. Per aquests motius, la capa d'aplicació s'implementa utilitzant example aplicacions per a un comptador i lector.
Normes requerides
- EN 13757-4
EN 13757-4
Sistema de comunicació per a comptadors i lectura remota de comptadors
Part 4: lectura del comptador sense fil
Lectura del radiòmetre per al funcionament en la banda SRD de 868 MHz a 870 MHz - EN 13757-3
Sistema de comunicació per a comptadors i lectura remota de comptadors
Part 3: capa d'aplicació dedicada - IEC 60870-2-1:1992
Equips i sistemes de telecontrol
Part 5: Protocols de transmissió
Secció 1: Procediment de transmissió d'enllaços - IEC 60870-1-1:1990
Equips i sistemes de telecontrol
Part 5: Protocols de transmissió
Secció 1: Formats de trama de transmissió
Definicions
- M-Bus—M-Bus és un estàndard per cable per a la lectura de comptadors a Europa.
- M-Bus sense fil—M-Bus sense fil per a aplicacions de lectura de comptadors a Europa.
- PHY—La capa física defineix com es codifiquen i transmeten els bits i els bytes de dades.
- API—Interfície del programador d'aplicacions.
- ENLLAÇ-La capa d'enllaç de dades defineix com es transmeten els blocs i els fotogrames.
- CRC—Comprovació de redundància cíclica.
- FSK—Tecla de canvi de freqüència.
- Xip—Unitat més petita de dades transmeses. Un bit de dades es codifica com a múltiples xips.
- Mòdul—codi font de CA .c file.
Descripció funcional de M-Bus PHY
Seqüència de preàmbuls
La seqüència de preàmbuls especificada per l'especificació M-bus és un nombre enter que alterna zeros i uns. Un es defineix com la freqüència més alta i un zero es defineix com la freqüència més baixa.
nx (01)
Les opcions de preàmbul per al Si443x és un nombre enter de mordis que consisteix en uns i zeros alternats.
nx (1010)
Un preàmbul amb un d'inici addicional no seria un problema, però, aleshores, la paraula de sincronització i la càrrega útil estarien desalineats en un bit.
La solució és invertir tot el paquet configurant el bit del motor al registre Modulation Control 2 (0x71). Això invertirà el preàmbul, la paraula de sincronització i les dades TX/RX. Com a conseqüència, les dades s'han d'invertir en escriure les dades TX o llegir les dades RX. A més, la paraula de sincronització s'inverteix abans d'escriure als registres de la paraula de sincronització Si443x.
Paraula de sincronització
La paraula de sincronització requerida per EN-13757-4 és de 18 xips per al Mode S i el Mode R o de 10 xips per al Model T. La paraula de sincronització per al Si443x és d'1 a 4 bytes. Tanmateix, com que la paraula de sincronització sempre va precedida pel preàmbul, els darrers sis bits del preàmbul es poden considerar part de la paraula de sincronització; per tant, la primera paraula de sincronització s'emplena amb tres repeticions d'un zero seguides d'un un. La paraula de sincronització es complementa abans d'escriure als registres Si443x.
Taula 1. Paraula de sincronització per al mode S i el mode R
EN 13757-4 | 00 | 01110110 | 10010110 | binari |
00 | 76 | 96 | hexadecimal | |
coixinet amb (01) x 3 | 01010100 | 01110110 | 10010110 | binari |
54 | 76 | 96 | hexadecimal | |
complement | 10101011 | 10001001 | 01101001 | binari |
AB | 89 | 69 | hexadecimal |
Taula 2. Paraula de sincronització del mesurador Mode T amb un altre
SINCRONITZACIÓ | SINCRONITZACIÓ | SINCRONITZACIÓ |
PARAULA | PARAULA | PARAULA |
3 | 2 | 1 |
Transmet la longitud del preàmbul
El preàmbul mínim s'especifica per a quatre modes de funcionament diferents. És acceptable tenir un preàmbul més llarg del que s'especifica. En restar sis fitxes per al preàmbul, s'obté el nombre mínim de fitxes per al preàmbul Si443x. La implementació afegeix dos fragments addicionals de preàmbul en tots els modes de preàmbuls curts per millorar la detecció i la interoperabilitat de preàmbuls. El preàmbul del Mode S amb un preàmbul llarg és molt llarg; per tant, s'utilitza el preàmbul mínim. La longitud del preàmbul en mordis s'escriu al registre Longitud del preàmbul (0x34). El registre de longitud del preàmbul determina el preàmbul només a la transmissió. L'especificació mínima i la configuració de la longitud del preàmbul es resumeixen a la taula 3.
Taula 3. Longitud del preàmbul de transmissió
EN-13757-4 mínim |
Si443x Preàmbul Configuració |
Sincronització Paraula |
Total | extra | |||
nx (01) | xips | picades | xips | xips | xips | xips | |
Preàmbul breu Mode S | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
Preàmbul llarg Mode S | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
Mode T (metre-altre) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Mode R. | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
El preàmbul mínim per a la recepció el determina el registre de control de detecció de preàmbuls (0x35). A la recepció, el nombre de bits de la paraula de sincronització s'ha de restar del preàmbul mínim especificat per determinar el preàmbul utilitzable. El temps mínim d'assentament del receptor és de 16 xips si l'AFC està activat o de 8 xips si l'AFC està desactivat. El temps d'assentament del receptor també es resta del preàmbul utilitzable per determinar la configuració mínima del registre de control de detecció de preàmbuls.
La probabilitat d'un preàmbul fals depèn de la configuració del registre de control de detecció de preàmbuls. Una configuració curta de 8 xips pot provocar que es detecti un preàmbul fals cada pocs segons. La configuració recomanada de 20 xips fa que la detecció de preàmbuls falsos sigui un esdeveniment poc probable. Les longituds del preàmbul per al Mode R i el Mode SL són prou llargues per utilitzar la configuració recomanada.
Hi ha molt pocs beneficis per fer que el preàmbul detecti més de 20 fitxes.
L'AFC està desactivat per al Model S amb un preàmbul curt i el Model T. Això redueix el temps d'assentament del receptor i permet una configuració de detecció de preàmbuls més llarga. Amb l'AFC desactivat, el mode T pot utilitzar la configuració recomanada de 20 fitxes. Per al Model S s'utilitza una configuració de 4 mordis o 20 xips amb un preàmbul breu. Això fa que la probabilitat d'una detecció de preàmbuls fals sigui lleugerament més alta per a aquest model.
Taula 4. Detecció de preàmbuls
EN-13757-4 mínim |
Sincronització Paraula |
utilitzable preàmbul |
Solució RX | Detectar min |
Si443x Preàmbul Configuració de la detecció |
|||
nx (01) | xips | xips | xips | xips | xips | picades | xips | |
Preàmbul breu Mode S | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Preàmbul llarg del model S | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
Model T (metre-altre) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Mode R. | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Nota: AFC desactivat |
El receptor està configurat per interoperar amb un transmissor mitjançant el preàmbul mínim especificat. Això garanteix que el receptor interoperarà amb qualsevol transmissor compatible amb M-bus.
L'especificació Wireless M-Bus requereix un preàmbul molt llarg per al Mode S1 d'almenys 558 xips. Això trigarà uns 17 ms només a transmetre el preàmbul. El Si443x no requereix un preàmbul tan llarg i no es beneficia del preàmbul llarg. Tot i que el preàmbul llarg es considera opcional per al mode S2, no hi ha cap raó per utilitzar un preàmbul llarg amb el Si443x. Si es desitja una comunicació unidireccional, el mode T1 proporcionarà un preàmbul més curt, una velocitat de dades més alta i una durada de la bateria més llarga. Si es requereix una comunicació bidireccional amb el Mode S2, es recomana un preàmbul breu.
Tingueu en compte que el llindar de detecció per al Model S amb un preàmbul llarg és més llarg que el nombre de picades de preàmbul transmeses per al Model S amb un preàmbul curt. Això vol dir que el receptor Mode S de preàmbul llarg no detectarà cap preàmbul d'un transmissor Mode S de preàmbul curt. Això és necessari si el receptor Mode S de preàmbul llarg ha de rebre algun benefici del preàmbul llarg.
Tingueu en compte que el receptor Mode S de preàmbul curt detectarà el preàmbul i rebrà paquets tant d'un preàmbul curt Mode S
transmissor i un transmissor Mode S de preàmbul llarg; per tant, en general, el lector de comptador hauria d'utilitzar la configuració del receptor Mode S de preàmbul breu.
Codificació/descodificació
L'especificació Wireless M-bus requereix dos mètodes de codificació diferents. La codificació de Manchester s'utilitza per al Mode S i el Mode R. La codificació de Manchester també s'utilitza per a l'enllaç d'altre a metre al Model T. L'enllaç de metre a un altre del Model T utilitza 3 de 6 codificacions.
1. Manchester codificada/descodificada
La codificació de Manchester és habitual històricament als sistemes de RF per proporcionar una recuperació i un seguiment del rellotge sòlids mitjançant un mòdem senzill i econòmic. Tanmateix, una ràdio moderna d'alt rendiment com la Si443x no necessita codificació de Manchester. La codificació de Manchester s'admet principalment per a la compatibilitat amb els estàndards existents, però la velocitat de dades del Si443x es duplica efectivament quan no s'utilitza la codificació de Manchester.
El Si443x admet la codificació i descodificació de Manchester de tot el paquet al maquinari. Malauradament, la paraula de sincronització no està codificada per Manchester. S'ha escollit intencionadament una seqüència de Manchester no vàlida per a la paraula de sincronització. Això fa que la codificació de Manchester sigui incompatible amb la majoria de ràdios existents, inclosa la Si443x. Com a conseqüència, la codificació i descodificació de Manchester ha de ser realitzada per l'MCU. Cada byte de dades no codificades consta de vuit bits de dades. Mitjançant la codificació de Manchester, cada bit de dades es codifica en un símbol de dos xips. Com que les dades codificades s'han d'escriure al FIFO de ràdio vuit xips alhora, es codifica una mica de dades i s'escriu al FIFO alhora.
Taula 5. Codificació de Manchester
dades | Bou12 | 0 x 34 | bytes | ||
Bou1 | 0 x 2 | 0 x 3 | 0 x 4 | picades | |
1 | 10 | 11 | 100 | binari | |
xip | 10101001 | 10100110 | 10100101 | 10011010 | binari |
FIFO | OxA9 | OxA6 | OxA5 | Ox9A | hexadecimal |
Cada byte a transmetre es passa un byte alhora a la funció de codificació de bytes. La funció de codificació de bytes cridarà dues vegades a la funció de codificar nibble, primer per al mordisco més significatiu i després per al mordisco menys significatiu.
La codificació de Manchester al programari no és difícil. A partir del bit més significatiu, un es codifica com una seqüència de xip "01". Un zero es codifica com una seqüència de xips "10". Això es pot aconseguir fàcilment utilitzant un bucle i canviant dos bits per a cada símbol. Tanmateix, és més ràpid utilitzar només una taula de cerca de 16 entrades per a cada picada. La funció de codificar Manchester nibble codifica una mica de dades i després l'escriu al FIFO. Els xips s'inverteixen abans d'escriure al FIFO per tenir en compte els requisits del preàmbul invertit.
Quan es rep, cada byte del FIFO consta de vuit xips i es descodifica en un mossec de dades. La funció de bloc de lectura llegeix un byte alhora del FIFO i crida a la funció de descodificació de bytes. Els xips s'inverteixen després de llegir el FIFO per tenir en compte els requisits del preàmbul invertit. Cada byte de xips codificats de Manchester es descodifica en un mossec de dades. El nibble descodificat s'escriu a la memòria intermèdia RX mitjançant la funció d'escriptura de la memòria intermèdia RX.
Tingueu en compte que tant la codificació com la descodificació es realitzen d'un cop a l'altre sobre la marxa. La codificació en una memòria intermèdia requeriria una memòria intermèdia addicional el doble de la mida de les dades no codificades. La codificació i la descodificació són molt més ràpides que la velocitat de dades admesa més ràpida (100 k xips per segon). Com que el Si443x admet lectures i escriptures de diversos bytes al FIFO, hi ha una petita sobrecàrrega en utilitzar només lectures i escriptures d'un sol byte. La sobrecàrrega és d'uns 10 µs per a 100 xips codificats. El benefici és un estalvi de RAM de 512 bytes.
2. Tres de sis codificació descodificació
El mètode de codificació de tres de sis especificat a EN-13757-4 també s'implementa al firmware de l'MCU. Aquesta codificació s'utilitza per al mode T d'alta velocitat (100 k xips per segon) d'un comptador a un altre. El model T ofereix el temps de transmissió més curt i la durada de la bateria més llarga per a un mesurador sense fil.
Cada byte de dades a transmetre es divideix en dos nibbles. Primer es codifica i es transmet el mordis més significatiu. De nou, això s'implementa mitjançant una funció de codificació de bytes que crida dues vegades a la funció de codificació.
Cada mossegada de dades es codifica en un símbol de sis xips. La seqüència de símbols de sis xips s'ha d'escriure al FIFO de 8 xips.
Durant la codificació, dos bytes de dades es codifiquen com a quatre nibbles. Cada mossegada és un símbol de 6 fitxes. Quatre símbols de 6 xips s'agreguen en tres bytes.
Taula 6. Tres de sis codificacions
dades | 0 x 12 | 0 x 34 | bytes | ||||
Bou1 | 0 x 2 | 0 x 3 | 0 x 4 | picades | |||
xip | 15 | 16 | 13 | 34 | octal | ||
1101 | 1110 | 1011 | 11100 | binari | |||
FIFO | 110100 | 11100010 | 11011100 | binari | |||
0 x 34 | OxE2 | OxDC | hexadecimal |
Al programari, la codificació de tres de sis s'implementa mitjançant tres funcions imbricades. La funció de codificació de bytes cridarà dues vegades a la funció de codificació. La funció de codificar nibble utilitza una taula de cerca per al símbol de sis xips i escriu el símbol a les funcions Shift Three of Six. Aquesta funció implementa un registre de desplaçament de 16 xips al programari. El símbol s'escriu al byte menys significatiu del registre de desplaçament. El registre es mou a l'esquerra dues vegades. Això es repeteix tres vegades. Quan hi ha un byte complet al byte superior del registre de desplaçament, s'inverteix i s'escriu al FIFO.
Com que cada byte de dades està codificat com a byte i mig codificat, és important esborrar el registre de desplaçament inicialment perquè el primer byte codificat sigui correcte. Si la longitud del paquet és un nombre senar, després de codificar tots els bytes, encara quedarà un mossegat al registre de desplaçament. Això es gestiona amb el postàmbol, tal com s'explica a la secció següent.
Descodificar el tres de sis codificats és el procediment invers. Quan es descodifiquen, tres bytes codificats es descodifiquen en dos bytes de dades. El registre de canvi de programari es torna a utilitzar per agregar bytes de dades descodificades. Per a la descodificació s'utilitza una taula de cerca inversa de 64 entrades. Això utilitza menys cicles però més memòria de codi. Cercar el símbol corresponent en una taula de cerca de 16 entrades triga molt més.
Postàmbul
L'especificació Wireless M-bus té requisits específics per al correu postal o el tràiler. Per a totes les modalitats, el mínim és de dues fitxes i el màxim és de vuit fitxes. Com que la unitat atòmica mínima per al FIFO és d'un byte, s'utilitza un tràiler de 8 xips per al Mode S i el Mode R. El postàmbol del Mode T és de vuit fitxes si la longitud del paquet és parell o de quatre xips si la longitud del paquet és senar. El postàmbul de quatre xips per a una longitud de paquet estranya compleix els requisits de tenir almenys dos xips alterns.
Taula 7. Longitud del postàmbul
Longitud del postàmbul (xips) | |||||
min | màx | Implementació | seqüència de xips | ||
Mode S | 2 | 8 | 8 | 1010101 | |
Modalitat T | 2 | 8 | 4 | (estrany) | 101 |
8 | (fins i tot) | 1010101 | |||
Mode R. | 2 | 8 | 8 | 1010101 |
Manipulador de paquets
El gestor de paquets del Si443x es pot utilitzar en un mode d'amplada de paquet variable o en un mode d'amplada de paquet fix. El mode d'amplada de paquet variable requereix un byte de longitud de paquet després de la paraula de sincronització i bytes de capçalera opcionals. En rebre'l, la ràdio utilitzarà el byte de longitud per determinar el final d'un paquet vàlid. En transmissió, la ràdio inserirà el camp de longitud després dels bytes de capçalera.
El camp L per al protocol M-bus sense fil no es pot utilitzar per al camp de longitud Si443x. En primer lloc, el camp L no és la longitud real del paquet. És el nombre de bytes de càrrega útil de la capa d'enllaç sense incloure els bytes o la codificació CRC. En segon lloc, el propi camp L es codifica mitjançant la codificació Manchester o la codificació Tres de Sis per al mesurador Mode T a un altre.
La implementació utilitza el gestor de paquets en mode d'amplada de paquet fixa tant per a la transmissió com per a la recepció. Després de la transmissió, la capa PHY llegirà el camp L a la memòria intermèdia de transmissió i calcularà el nombre de bytes codificats, inclòs el postàmbol. El nombre total de bytes codificats que s'han de transmetre s'escriu al registre de longitud de paquet (0x3E).
Després de la recepció, es descodifiquen els dos primers bytes codificats i el camp L s'escriu a la memòria intermèdia de recepció. El camp L s'utilitza per calcular el nombre de bytes codificats a rebre. A continuació, s'escriu el nombre de bytes codificats que s'han de rebre al registre de longitud de paquet (0x3E). Es descarta el postal.
L'MCU ha de descodificar el camp L, calcular el nombre de bytes codificats i escriure el valor al registre de longitud de paquet abans que s'hagi rebut la longitud de paquet més curta possible. El camp L més curt permès per a la capa PHY és 9, donant 12 bytes sense codificar. Això dóna 18 bytes codificats per al Model T. Els dos primers bytes ja s'han descodificat. Així, el registre de longitud del paquet s'ha d'actualitzar en 16 bytes a 100 kbps o 1.28 mil·lisegons. Això no és cap problema per a un 8051 que funciona a 20 MIPS.
El nombre de bytes que s'han de rebre no inclou el postal, excepte el postal de quatre xips utilitzat per als paquets Mode T amb una longitud de paquet senar. Per tant, el receptor no requereix un correu postal, excepte per als paquets de longitud imparell Model T. Aquest postal només es necessita per donar un nombre enter de bytes codificats. El contingut del postal s'ignora; per tant, si no es transmet el postal, es rebran quatre xips de soroll i es ignoraran. Com que el nombre total de bytes codificats està limitat a 255 (0xFF), la implementació limita el camp L màxim per als diferents modes.
Taula 8. Límits de mida del paquet
codificat | descodificat | M-Bus | ||||
bytes | bytes | Camp L | ||||
des | hexadecimal | des | hexadecimal | des | hexadecimal | |
Mode S | 255 | FF | 127 | 7 F | 110 | 6E |
Mode T (metre-altre) | 255 | FF | 169 | A9 | 148 | 94 |
Mode R. | 255 | FF | 127 | 7 F | 110 | 6E |
Aquests límits solen estar molt per sobre del cas d'ús típic d'un mesurador sense fil. La longitud del paquet s'ha de mantenir petita per obtenir la millor durada possible de la bateria.
A més, l'usuari pot especificar el camp L màxim que s'ha de rebre (USER_RX_MAX_L_FIELD). Això determina la mida necessària per al buffer de recepció (USER_RX_BUFFER_SIZE).
El suport d'un camp L màxim de 255 requeriria un buffer de recepció de 290 bytes i un màxim de 581 bytes codificats de Manchester. El controlador de paquets hauria d'estar desactivat i el registre de longitud de paquets no es podria utilitzar en aquest cas. Això és factible, però és més convenient utilitzar el gestor de paquets, si és possible.
Ús de FIFO
El Si4431 proporciona un FIFO de 64 bytes per transmetre i rebre. Com que el nombre de bytes codificats és de 255, és possible que un paquet codificat sencer no cabi dins del buffer de 64 bytes.
Transmissió
En la transmissió, es calcula el nombre total de bytes codificats. Si el nombre total de bytes codificats, inclòs el postal, és inferior a 64 bytes, el paquet sencer s'escriu al FIFO i només s'habilita la interrupció del paquet enviat. La majoria dels paquets curts s'enviaran en una transferència FIFO.
Si el nombre de bytes codificats és superior a 64, es requeriran múltiples transferències FIFO per enviar el paquet. Els primers 64 bytes s'escriuen al FIFO. Les interrupcions Paquet enviat i TX FIFO gairebé buides estan habilitades. El llindar TX FIFO gairebé buit s'estableix en 16 bytes (25%). A cada esdeveniment IRQ, es llegeix el registre d'estat 2. Primer es verifica el bit Paquet enviat i, si el paquet no s'ha enviat completament, els següents 48 bytes de dades codificades s'escriuen al FIFO. Això continua fins que s'han escrit tots els bytes codificats i es produeix la interrupció del paquet enviat.
1. Recepció
A la recepció, inicialment, només s'habilita la interrupció de Sync Word. Després de rebre la paraula de sincronització, la interrupció de la paraula de sincronització està desactivada i s'habilita la interrupció FIFO gairebé completa. El llindar FIFO gairebé complet s'estableix inicialment en 2 bytes. La primera interrupció FIFO gairebé completa s'utilitza per saber quan s'han rebut els dos bytes de longitud. Un cop rebuda la longitud, es descodifica la longitud i es calcula el nombre de bytes codificats. Aleshores, el llindar RX FIFO gairebé complet s'estableix en 48 bytes. El RX FIFO està gairebé ple i les interrupcions de paquets vàlids estan habilitades. En el següent esdeveniment IRQ, es llegeix el registre d'estat 1. En primer lloc, es comprova el bit Paquet vàlid i, a continuació, es comprova el bit gairebé complet FIFO. Si només s'estableix el bit RX FIFO gairebé complet, els següents 48 bytes es llegeixen del FIFO. Si s'estableix el bit de paquet vàlid, la resta del paquet es llegeix des del FIFO. L'MCU fa un seguiment de quants bytes s'han llegit i deixa de llegir després de l'últim byte.
Capa d'enllaç de dades
El mòdul de capa d'enllaç de dades implementa una capa d'enllaç compatible amb 13757-4:2005. La capa d'enllaç de dades (LINK) proporciona una interfície entre la capa física (PHY) i la capa d'aplicació (AL).
La capa d'enllaç de dades realitza les funcions següents:
- Proporciona funcions que transfereixen dades entre PHY i AL
- Genera CRC per als missatges de sortida
- Detecta errors CRC als missatges entrants
- Proporciona adreçament físic
- Reconeix les transferències per als modes de comunicació bidireccionals
- Trames bits de dades
- Detecta errors d'enquadrament als missatges entrants
Format de marc de capa d'enllaç
El format de trama M-Bus sense fil utilitzat a EN 13757-4:2005 es deriva del format de trama FT3 (Frame Type 3) de IEC60870-5-2. El marc consta d'un o més blocs de dades. Cada bloc inclou un camp CRC de 16 bits. El primer bloc és un bloc de longitud fixa de 12 bytes que inclou el camp L, el camp C, el camp M i el camp A.
- Camp L
El camp L és la longitud de la càrrega útil de dades de la capa d'enllaç. Això no inclou el propi camp L ni cap dels bytes CRC. Inclou el camp L, el camp C, el camp M i el camp A. Aquests formen part de la càrrega útil PHY.
Com que el nombre de bytes codificats està limitat a 255 bytes, el valor màxim admès per al camp M és de 110 bytes per a les dades codificades de Manchester i de 148 bytes per a les dades codificades en mode T Tres de sis.
La capa d'enllaç s'encarrega de calcular el camp L a la transmissió. La capa d'enllaç utilitzarà el camp L a la recepció.
Tingueu en compte que el camp L no indica la longitud de la càrrega útil PHY ni el nombre de bytes codificats. Després de la transmissió, el PHY calcularà la longitud de la càrrega útil del PHY i el nombre de bytes codificats. En rebre'l, el PHY descodificarà el camp L i calcularà el nombre de bytes a descodificar. - Camp C
El camp C és el camp de control de trama. Aquest camp identifica el tipus de trama i s'utilitza per a les primitives del servei d'intercanvi de dades d'enllaç. El camp C indica el tipus de trama: ENVIAR, CONFIRMAR, SOL·LICITAR o RESPONDER. En el cas de trames SEND i REQUEST, el camp C indica si s'espera un CONFIRM o RESPOND.
Quan s'utilitza la funció bàsica Link TX, es pot utilitzar qualsevol valor de C. Quan s'utilitzen les Primitives del servei d'enllaç, el camp C s'omple automàticament segons EN 13757-4:2005. - Camp M
El camp M és el codi del fabricant. Els fabricants poden sol·licitar un codi de tres lletres entre els següents web adreça: http://www.dlms.com/flag/INDEX.HTM Cada caràcter del codi de tres lletres està codificat com a cinc bits. El codi de 5 bits es pot obtenir agafant el codi ASCII i restant 0x40 ("A"). Els tres codis de 5 bits estan concatenats per fer 15 bits. El bit més significatiu és zero. - Camp A
El camp d'adreça és una adreça única de 6 bytes per a cada dispositiu. L'adreça única l'ha d'assignar el fabricant. És responsabilitat de cada fabricant assegurar-se que cada dispositiu té una adreça única de 6 bytes. L'adreça de trames d'enviament i sol·licitud és l'adreça pròpia del mesurador o d'un altre dispositiu. Les trames de dades de confirmació i resposta s'envien mitjançant l'adreça del dispositiu d'origen. - Camp CI
El camp CI és la capçalera de l'aplicació i especifica el tipus de dades a la càrrega útil de dades de l'aplicació. Tot i que EN13757-4:2005 especifica un nombre limitat de valors, els Link Service Primitives permetran utilitzar qualsevol valor. - CRC
El CRC s'especifica a EN13757-4:2005.
El polinomi CRC és:
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
Tingueu en compte que el M-Bus CRC es calcula per a cada bloc de 16 bytes. El resultat és que cada 16 bytes de dades requereixen que es transmetin 18 bytes,
Informació addicional
Per obtenir informació addicional sobre la implementació de la capa d'enllaç, consulteu "AN452: Guia de programadors de pila M-Bus sense fil".
Gestió d'energia
La figura 2 mostra la línia de temps de gestió de l'energia per a un comptador, example utilitzant el mode T1.
L'MCU hauria d'estar en mode de repòs sempre que sigui possible per estalviar energia. En aquest example, l'MCU està dormint quan el RTC està en funcionament, quan s'espera a l'inici del cristall de ràdio i quan transmet des del FIFO. L'MCU es despertarà des del senyal EZRadioPRO IRQ connectat a un despertador Port Match.
Quan es transmeten missatges de més d'un bloc, l'MCU s'ha de despertar per omplir el FIFO (basat en la interrupció gairebé buida del FIFO) i després tornar a dormir.
L'MCU hauria d'estar en mode inactiu funcionant des de l'oscil·lador de baixa potència o de l'oscil·lador en mode ràfega quan es llegeix des de l'ADC. L'ADC requereix un rellotge SAR.
Quan no s'utilitzi, l'EZRadioPRO hauria d'estar en mode d'apagat amb el pin SDN impulsat alt. Això requereix una connexió per cable a l'MCU. Els registres EZ Radio Pro no es conserven en mode d'apagada; per tant, l'EZRadioPro s'inicializa a cada interval RTC. Inicialitzar la ràdio triga menys de 100 µs i es conserven 400 nA. Això es tradueix en un estalvi d'energia de 10 µJ, basat en un interval de 10 segons.
El cristall EZRadioPRO triga uns 16 ms per a un POR. Això és prou llarg per calcular el CRC d'uns vuit blocs. L'MCU tornarà a dormir si completa tots els CRC abans que el cristall s'hagi estabilitzat. Si es requereix xifratge, també es pot iniciar mentre s'espera a l'oscil·lador de cristall.
L'MCU hauria de funcionar a 20 MHz utilitzant l'oscil·lador de baixa potència per a la majoria de tasques. Les tasques que requereixen un temps d'espera precís han d'utilitzar l'oscil·lador de precisió i el mode inactiu en lloc del mode de repòs. L'RTC proporciona una resolució suficient per a la majoria de tasques. L'horari de gestió de l'energia per al comptador T2 exampL'aplicació es mostra a la figura 3.
La implementació del transceptor s'ha d'optimitzar per al cas normal quan el mesurador es desperta i no hi ha cap lector present. Els temps d'espera d'ACK mínim/màxim són prou llargs perquè sigui possible utilitzar el C8051F930 RTC i posar l'MCU en mode de repòs.
Es proporcionen opcions de compilació per a lectors de xarxa o USB que no necessiten utilitzar el mode de repòs. El mode d'inactivitat s'utilitzarà en lloc de la repòs, de manera que l'USB i l'UART poden interrompre l'MCU.
Estudi de la simplicitat
Accés amb un sol clic a MCU i eines sense fil, documentació, programari, biblioteques de codi font i molt més. Disponible per a Windows,
Mac i Linux!
![]() |
![]() |
![]() |
![]() |
Cartera IoT www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
Qualitat www.silabs.com/quality |
Suport i comunitat community.silabs.com |
Exempció de responsabilitat
Silicon Labs té la intenció de proporcionar als clients la documentació més recent, precisa i detallada de tots els perifèrics i mòduls disponibles per als implementadors de sistemes i programari que utilitzin o tinguin la intenció d'utilitzar els productes de Silicon Labs. Les dades de caracterització, els mòduls i perifèrics disponibles, la mida de la memòria i les adreces de memòria fan referència a cada dispositiu específic, i els paràmetres "típics" proporcionats poden variar en diferents aplicacions. Aplicació exampLes aquí descrites només tenen finalitats il·lustratives. Silicon Labs es reserva el dret de fer canvis sense avís addicional i limitació a la informació del producte, especificacions i descripcions aquí, i no ofereix garanties sobre l'exactitud o la integritat de la informació inclosa. Silicon Labs no serà responsable de les conseqüències de l'ús de la informació que s'ofereix aquí. Aquest document no implica ni expressa llicències de drets d'autor concedides per aquest document per dissenyar o fabricar cap circuit integrat. Els productes no estan dissenyats ni autoritzats per utilitzar-se dins de cap sistema de suport vital sense el consentiment específic per escrit de Silicon Labs. Un "Sistema de suport vital" és qualsevol producte o sistema destinat a mantenir o mantenir la vida i/o la salut, que, si falla, es pot esperar raonablement que provoqui lesions personals importants o la mort. Els productes de Silicon Labs no estan dissenyats ni autoritzats per a aplicacions militars. Els productes de Silicon Labs no s'utilitzaran en cap cas en armes de destrucció massiva incloses (però no limitades a) armes nuclears, biològiques o químiques, o míssils capaços de llançar aquestes armes.
Informació sobre marques comercials
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® i el logotip de Silicon Labs®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, logotip d'Energy Micro i les seves combinacions, "els microcontroladors més ecològics del món", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, el Telegesis Logo®, USBXpress® i altres són marques comercials o marques comercials registrades de Silicon Labs. ARM, CORTEX, Cortex-M3 i els polzes són marques comercials o marques comercials registrades d'ARM Holdings. Keil és una marca comercial registrada d'ARM Limited. Tots els altres productes o marques esmentades aquí són marques comercials dels seus respectius titulars.
Silicon Laboratories Inc.
400 West César Chávez
Austin, TX 78701
EUA
http://www.silabs.com
Documents/Recursos
![]() |
Implementació del programari M-BUS sense fil de SILICON LABS AN451 [pdfGuia de l'usuari SILICON LABS, C8051, MCU i, EZRadioPRO, Wireless M-bus, Wireless, M-BUS, Programari, Implementació, AN451 |