AN451
SENREDRATA M-BUSA PROGRAMA PROGRAMARO
Enkonduko
Ĉi tiu aplika noto priskribas la realigon de Silicon Labs de Sendrata M-Bus uzante Silicon Labs C8051 MCU kaj EZRadioPRO®. Sendrata M-buso estas eŭropa Normo por mezurilaj aplikoj uzantaj la 868 MHz-frekvencbendon.
Staku Tavolojn
Sendrata M-Bus uzas la 3-tavolan IEC-modelon, kiu estas subaro de la 7-tavola OSI-modelo (vidu Figuro 1).
La Fizika (PHY) tavolo estas difinita en EN 13757-4. La fizika tavolo difinas kiel la bitoj estas ĉifritaj kaj elsenditaj, la RF-modemkarakterizaĵoj (pecetfrekvenco, preambulo, kaj sinkroniga vorto), kaj RF-parametroj (modulado, centra frekvenco, kaj frekvencdevio).
La PHY-tavolo estas efektivigita uzante kombinaĵon de aparataro kaj firmvaro. La EZRadioPRO plenumas ĉiujn RF kaj modemajn funkciojn. La EZRadioPRO estas uzata en FIFO-reĝimo kun la pakaĵtraktilo. La MbusPhy.c-modulo disponigas SPI-interfacon, kodigon/malkodigon, blokan legadon/skriban, kaj pakaĵetan uzadon kaj administras la dissendilstatojn.
La M-Bus Data-ligotavolo estas efektivigita en la MbusLink.c-modulo. La interfaco de M-Bus Apliko-Programado konsistas el publikaj funkcioj kiuj povas esti nomitaj de la aplikaĵotavolo en la ĉeffadeno. La MbusLink-modulo ankaŭ efektivigas la Datuman Ligon-Tavolon. La Datuma ligotavolo formatos kaj kopios datumojn de la aplikaĵa TX-bufro al la MbusPhy TX-bufro, aldonante la postulatajn titolojn kaj CRC-ojn.
La Aplika tavolo mem ne estas parto de la M-busa firmvaro. La aplika tavolo difinas kiel vasta gamo de datumoj estas formatotaj por dissendo. Plej multaj mezuriloj bezonas nur transdoni unu aŭ du tipojn de datumoj. Aldonante grandan kvanton da kodo por alĝustigi ajnan specon de datumoj al la mezurilo aldonus nenecesan kodon kaj koston al la mezurilo. Eble eblas efektivigi bibliotekon aŭ kaplinion file kun ĝisfunda listo de datumtipoj. Tamen, plej multaj mezurklientoj scias precize kiajn datumojn ili bezonas transdoni kaj povas rilati al la normo por formatado de detaloj. Universala leganto aŭ snufisto povus efektivigi kompletan aron de aplikaĵaj datumtipoj sur la komputila GUI. Pro ĉi tiuj kialoj, la aplika tavolo estas efektivigita uzante ekzample aplikoj por mezurilo kaj leganto.
Bezonataj Normoj
- EN 13757-4
EN 13757-4
Komunikada sistemo por mezuriloj kaj fora legado de metroj
Parto 4: Sendrata mezurila legado
Radiometrolegado por operacio en la 868 MHz ĝis 870 MHz SRD-grupo - EN 13757-3
Komunikada sistemo por mezuriloj kaj fora legado de metroj
Parto 3: Dediĉita aplika tavolo - IEC 60870-2-1:1992
Telekontrolaj ekipaĵoj kaj sistemoj
Parto 5: Dissendaj protokoloj
Sekcio 1: Proceduro de transdono de ligo - IEC 60870-1-1:1990
Telekontrolaj ekipaĵoj kaj sistemoj
Parto 5: Dissendaj protokoloj
Sekcio 1: Transsendaj kadroformatoj
Difinoj
- M-Bus—M-Bus estas kablita normo por mezurila legado en Eŭropo.
- Sendrata M-Bus—Sendrata M-Bus por mezurilaj legadoj en Eŭropo.
- PHY—Fizika Tavolo difinas kiel datumbitoj kaj bajtoj estas kodigitaj kaj elsenditaj.
- API—Interfaco de Apliko-Programisto.
- Ligilo—Data Link Layer difinas kiel blokoj kaj kadroj estas elsenditaj.
- CRC—Cikla Redunda Kontrolo.
- FSK—Frekvencŝanĝa klavado.
- Blato—Plej malgranda unuo de transdonitaj datumoj. Unu datenbito estas ĉifrita kiel multoblaj blatoj.
- Modulo—AC-kodo fonto .c file.
M-Bus PHY Funkcia Priskribo
Preambula Sekvenco
La Preambulosekvenco precizigita per la M-busa specifo estas entjera nombro alterna nuloj kaj unoj. Unu estas difinita kiel la pli alta frekvenco, kaj nulo estas difinita kiel la pli malalta frekvenco.
nx (01)
La Preambulaj elektoj por la Si443x estas entjera nombro da mordetoj konsistantaj el alternaj unoj kaj nuloj.
nx (1010)
Preambulo kun ekstra gvido ne estus problemo, sed, tiam, la sinkroniga vorto kaj utila ŝarĝo estus misalignitaj je unu bito.
La solvo estas inversigi la tutan pakaĵon metante la motorbiton en la registro de Modulation Control 2 (0x71). Ĉi tio inversigos la preambulon, sinkronigan vorton kaj TX/RX-datumojn. Sekve, la datumoj devas esti inversigitaj dum vi verkas la TX-datumojn aŭ legante la RX-datumojn. Ankaŭ, la sinkroniga vorto estas inversa antaŭ ol skribi al la registroj de Si443x Synchronization Word.
Sinkroniga Vorto
La sinkroniga vorto postulita de EN-13757-4 estas aŭ 18 fritoj por Mode S kaj Mode R aŭ 10 fritoj por Modelo T. La sinkroniga vorto por la Si443x estas 1 ĝis 4 bajtoj. Tamen, ĉar la sinkroniga vorto ĉiam estas antaŭita de la preambulo, la lastaj ses bitoj de la preambulo povas esti konsideritaj parto de la sinkroniga vorto; do, la unua sinkroniga vorto estas remburita per tri ripetoj de nulo sekvataj de unu. La sinkroniga vorto estas kompletigita antaŭ skribi al la Si443x-registroj.
Tabelo 1. Sinkroniga Vorto por Mode S kaj Mode R
EN 13757-4 | 00 | 01110110 | 10010110 | binara |
00 | 76 | 96 | hex | |
kuseneto kun (01) x 3 | 01010100 | 01110110 | 10010110 | binara |
54 | 76 | 96 | hex | |
komplemento | 10101011 | 10001001 | 01101001 | binara |
AB | 89 | 69 | hex |
Tabelo 2. Sinkroniga Vorto por Mode T Meter to Other
SINKRO | SINKRO | SINKRO |
VORTO | VORTO | VORTO |
3 | 2 | 1 |
Transsendu Preambulon Longo
La minimuma preambulo estas precizigita por kvar malsamaj operaciumoj. Estas akcepteble havi preambulon pli longan ol specifita. Subtrahi ses fritojn por la preambulo donas la minimuman nombron da fritoj por la Si443x-preambulo. La efektivigo aldonas du kromajn manĝetojn de preambulo en ĉiuj mallongaj preambulreĝimoj por plibonigi preambuldetekton kaj kunfunkcieblecon. La preambulo pri Mode S kun longa preambulo estas tre longa; do, la minimuma preambulo estas uzata. La preambullongo en mordetoj estas skribita al la Preamble Length (0x34) registro. La preambullongoregistro determinas la preambulon nur sur dissendo. La minimuma specifo kaj preambula longo-agordoj estas resumitaj en Tabelo 3.
Tabelo 3. Transdona Preambulo Longo
EN-13757-4 minimumo |
Si443x Preambulo Agordu ing |
Sinkronigi Vorto |
Entute | ekstra | |||
nx (01) | blatoj | mordetoj | blatoj | blatoj | blatoj | blatoj | |
Mode S mallonga preambulo | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
Mode S longa preambulo | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
Reĝimo T (metro-alia) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Reĝimo R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
La minimuma preambulo por ricevo estas determinita per la Preamble Detection Control-registro (0x35). Post ricevo, la nombro da bitoj en la sinkroniga vorto devas esti subtrahita de la precizigita minimuma preambulo por determini la uzeblan preambulon. La minimuma fiksa tempo de la ricevilo estas 16-blatoj se AFC estas ebligita aŭ 8-blatoj se AFC estas malŝaltita. La ricevilo-solvtempo ankaŭ estas subtrahita de la uzebla preambulo por determini la minimuman agordon por la Preamble Detection Control-registro.
La probableco de falsa preambulo dependas de la fikso de la Preamble Detection Control-registro. Mallonga agordo de 8-blatoj povas rezultigi falsan preambulon detektita ĉiujn kelkajn sekundojn. La rekomendita agordo de 20blatoj faras malveran preambulan detekton neverŝajna evento. La preambullongoj por Mode R kaj Mode SL estas sufiĉe longaj por ke la rekomendinda agordo estu uzata.
Estas tre malmulte da avantaĝo fari la preambulon detekti pli ol 20 blatojn.
La AFC estas malfunkciigita por Modelo S kun mallonga preambulo kaj Modelo T. Tio reduktas la ricevilo-solvtempon kaj permesas pli longan preambulan detektokonfiguracion. Kun AFC malŝaltita, Mode T povas uzi la rekomenditan agordon de 20 blatoj. Agordo de 4 mordetoj aŭ 20 fritoj estas uzata por Model S kun mallonga preambulo. Tio igas la probablecon de falsa preambula detekto iomete pli alta por tiu modelo.
Tabelo 4. Preambula Detekto
EN-13757-4 minimumo |
Sinkronigi Vorto |
uzebla preambulo |
RX Solvado | Detekti min |
Si443x Preambulo Malkaŝa Agordo |
|||
nx (01) | blatoj | blatoj | blatoj | blatoj | blatoj | mordetoj | blatoj | |
Mode S mallonga preambulo | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Modelo S longa preambulo | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
Modelo T (metro-alia) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Reĝimo R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Noto: AFC malŝaltita |
La ricevilo estas agordita por interfunkciigi kun dissendilo uzanta la minimuman precizigitan preambulon. Ĉi tio certigas, ke la ricevilo interfunkcios kun iu ajn M-bus-konforma dissendilo.
La sendrata M-Bus-specifo postulas tre longan preambulon por Mode S1 de almenaŭ 558 blatoj. Ĉi tio daŭros ĉirkaŭ 17 ms nur por transdoni la preambulon. La Si443x ne postulas tian longan preambulon kaj ne profitas el la longa preambulo. Dum la longa preambulo estas notita kiel laŭvola por Mode S2, ekzistas neniu kialo uzi longan preambulon kun la Si443x. Se unudirekta komunikado estas dezirata, Mode T1 provizos pli mallongan preambulon, pli altan datumrapidecon kaj pli longan baterian vivon. Se dudirekta komunikado uzanta Mode S2 estas postulata, mallonga preambulo estas rekomendita.
Rimarku, ke la detekta sojlo por Modelo S kun longa preambulo estas pli longa ol la nombro da preambuloj elsenditaj por Modelo S kun mallonga preambulo. Tio signifas ke la longa preambula Mode S-ricevilo ne detektos preambulon de mallonga preambula Mode S-dissendilo. Tio estas necesa se la longa preambulo Mode S-ricevilo devas ricevi ajnan profiton de la longa preambulo.
Notu ke la mallonga preambulo Mode S-ricevilo detektos la preambulon kaj ricevos pakaĵetojn de ambaŭ mallonga preambulo Mode S
dissendilo kaj long-preambulo Mode S-dissendilo; do, ĝenerale, la mezurilo leganto devus uzi la mallongan preambulon Mode S ricevilo agordo.
Kodigado/Malkodado
La Sendrata M-busa specifo postulas du malsamajn kodigajn metodojn. Manĉestro-kodigado estas uzita por Mode S kaj Mode R. Manĉestro-kodigado ankaŭ estas uzita por la ali-al-mezurila ligo en Modelo T. La Model T-mezurila ligo uzas 3 el 6 kodigoj.
1. Manchester Kodita/Malkodado
Manĉestra kodigado estas ofta historie en RF-sistemoj por disponigi fortikan horloĝreakiron kaj spuradon uzante simplan kaj nekostan modemon. Tamen, moderna alt-efikeca radio kiel la Si443x ne bezonas Manchester-kodigon. Manĉestra kodigado estas subtenata ĉefe por kongruo kun ekzistantaj normoj, sed la datumrapideco por la Si443x estas efike duobligita kiam ne uzas Manĉestro-kodigon.
La Si443x subtenas Manchester-kodigon kaj malkodigon de la tuta pako en aparataro. Bedaŭrinde, la sinkroniga vorto ne estas Manĉestro kodita. Nevalida Manĉestra sekvenco estis intence elektita por la sinkroniga vorto. Ĉi tio faras Manĉestro-kodigon malkongrua kun la plej multaj ekzistantaj radioj, inkluzive de la Si443x. Sekve, la Manĉestro-kodado kaj malkodado devas esti faritaj de la MCU. Ĉiu bajto sur nekoditaj datenoj konsistas el ok datenbitoj. Uzante Manĉestrokodigon, ĉiu datenbito estas ĉifrita en du-pecetan simbolon. Ĉar la koditaj datenoj devas esti skribitaj al la radio FIFO ok fritojn je fojo, unu mordeto de datenoj estas ĉifrita kaj skribita al la FIFO je fojo.
Tablo 5. Manĉestro-Kodigo
datumoj | Bovo12 | 0x34 | bajtoj | ||
Bovo1 | 0x2 | 0x3 | 0x4 | mordetoj | |
1 | 10 | 11 | 100 | binara | |
blato | 10101001 | 10100110 | 10100101 | 10011010 | binara |
FIFO | OxA9 | OxA6 | OxA5 | Bovo9A | hex |
Ĉiu bajto por esti transdonita estas pasita po unu bajto al la koda bajta funkcio. La kodi bajta funkcio nomos la kodi nibble funkcion dufoje, unue por la plej signifa mordeto kaj poste por la malplej signifa mordeto.
Manĉestro-kodado en programaro ne estas malfacila. Komencante de la plej signifa bito, oni estas ĉifrita kiel "01" pecetsekvenco. Nulo estas ĉifrita kiel "10" pecetsekvenco. Ĉi tio povas esti facile plenumita uzante buklon kaj ŝanĝante du-bitojn por ĉiu simbolo. Tamen, estas pli rapide uzi simplan 16 enigan serĉtabelon por ĉiu manĝeto. La kodi Manĉestro-nibble-funkcio ĉifras mordeton de datenoj tiam skribas ĝin al la FIFO. La fritoj estas inversigitaj antaŭ skribi al la FIFO por respondeci pri la inversaj preambulpostuloj.
Dum ricevado, ĉiu bajto en la FIFO konsistas el ok fritoj kaj estas deĉifrita en unu mordeton de datenoj. La legblokfunkcio legas unu bajton je fojo de la FIFO kaj vokas la malkodan bajtan funkcion. La fritoj estas inversigitaj post legado de la FIFO por respondeci pri la inversaj preambulpostuloj. Ĉiu bajto de Manĉestro-koditaj blatoj estas deĉifrita en mordeton de datumoj. La deĉifrita mordeto estas skribita al la RX-bufro uzante la skrib-rondaĵon RX-bufrfunkcion.
Rimarku, ke ambaŭ koditaj kaj malkodaj estas faritaj po unu datuma mordeto sur la flugo. Kodigado al bufro postulus plian bufron duoble la grandecon de la nekoditaj datenoj. Kodigado kaj malkodado estas multe pli rapida ol la plej rapida subtenata datumrapideco (100 k pecetoj je sekundo). Ĉar la Si443x subtenas plurbajtajn legadojn kaj skribaojn al la FIFO, estas malgranda superkompeco en uzado de nur unubajtaj legadoj kaj skriboj. La supre estas proksimume 10 µs por 100 ĉifritaj fritoj. La avantaĝo estas ŝparado de RAM de 512 bajtoj.
2. Tri El Ses Kodado Malkodado
La kodiga metodo de Tri-el-Ses specifita en EN-13757-4 ankaŭ estas efektivigita en firmvaro sur la MCU. Ĉi tiu kodigo estas uzata por la alta rapido (100 k pecetoj je sekundo) Reĝimo T de metro al alia. Modelo T provizas la plej mallongan dissendtempon kaj la plej longan baterian vivon por sendrata mezurilo.
Ĉiu bajto de datumoj por esti transdonita estas dividita en du mordetojn. La plej signifa mordeto estas kodita kaj elsendita unue. Denove, ĉi tio estas efektivigita uzante kodan bajtan funkcion, kiu vokas la kodan mordetan funkcion dufoje.
Ĉiu manĝeto de datumoj estas ĉifrita en ses-blatan simbolon. La sekvenco de ses-pecetaj simboloj devas esti skribita al la 8-peceta FIFO.
Dum kodado, du bajtoj da datenoj estas ĉifritaj kiel kvar mordetoj. Ĉiu mordeto estas 6-blata simbolo. Kvar 6-ĉip-simboloj estas kunigitaj kiel tri bajtoj.
Tablo 6. Tri El Ses Kodigado
datumoj | 0x12 | 0x34 | bajtoj | ||||
Bovo1 | 0x2 | 0x3 | 0x4 | mordetoj | |||
blato | 15 | 16 | 13 | 34 | oktala | ||
1101 | 1110 | 1011 | 11100 | binara | |||
FIFO | 110100 | 11100010 | 11011100 | binara | |||
0x34 | BovoE2 | OxDC | hex |
En softvaro, la tri-el-ses kodigado estas efektivigita uzante tri nestitajn funkciojn. La kodi bajta funkcio nomos la kodi nibble funkcion dufoje. La kodigi mordantan funkcion uzas serĉtabelon por la ses-blata simbolo kaj skribas la simbolon al la Shift Three el Ses funkcioj. Ĉi tiu funkcio efektivigas 16-blatan ŝanĝregistron en programaro. La simbolo estas skribita al la malplej signifa bajto de la ŝanĝregistro. La registro estas movita maldekstren dufoje. Ĉi tio estas ripetita tri fojojn. Kiam kompleta bajto ĉeestas en la supra bajto de la ŝanĝregistro, ĝi estas inversa kaj skribita al la FIFO.
Ĉar ĉiu bajto da datenoj estas ĉifrita kiel unu-kaj-duono koditaj bajtoj, estas grave malbari la ŝanĝregistron komence tiel ke la unua ĉifrita bajto estas ĝusta. Se la paka longo estas nepara nombro, post kodado de ĉiuj bajtoj, ankoraŭ restos unu mordeto en la ŝanĝregistro. Ĉi tio estas pritraktata per la poŝtambolo kiel klarigite en la sekva sekcio.
Malkodi la tri el ses koditaj estas la inversa proceduro. Dum malkodado, tri koditaj bajtoj estas malkoditaj en du datenbajtojn. La programara ŝanĝregistro denove estas uzata por aldoni bajtojn da deĉifritaj datumoj. 64-enira inversa serĉtabelo estas uzata por malkodado. Ĉi tio uzas malpli da cikloj sed pli da kodmemoro. Serĉi en 16-enira serĉtabelo por la responda simbolo daŭras konsiderinde pli longa.
Postambulo
La Sendrata M-busa specifo havas specifajn postulojn por la poŝtaŭto aŭ antaŭfilmo. Por ĉiuj reĝimoj, la minimumo estas du fritoj, kaj la maksimumo estas ok fritoj. Ĉar la minimuma atomunuo por la FIFO estas unu bajto, 8-peceta antaŭfilmo estas utiligita por Mode S kaj Mode R. La Mode T-poŝtambleo estas ok fritoj se la pakaĵetlongo estas para aŭ kvar fritoj se la pakaĵetlongo estas nepara. La kvar-peceta poŝtaŭto por nepara pakaĵetlongo renkontas la postulojn de havado de almenaŭ du alternaj fritoj.
Tabelo 7. Postambola Longo
Postamblelongo (blatoj) | |||||
min | maks | Efektivigo | sekvenco de blatoj | ||
Reĝimo S | 2 | 8 | 8 | 1010101 | |
Reĝimo T | 2 | 8 | 4 | (stranga) | 101 |
8 | (eĉ) | 1010101 | |||
Reĝimo R | 2 | 8 | 8 | 1010101 |
Paka Pritraktilo
La pakatraktilo sur la Si443x povas esti uzata en ŝanĝiĝema paka larĝreĝimo aŭ fiksa pakaĵlarĝreĝimo. La varia pakaĵetlarĝa reĝimo postulas pakaĵetlongan bajton post la sinkroniga vorto kaj laŭvolajn titolbajtojn. Post ricevo, la Radio uzos la longan bajton por determini la finon de valida pako. Dum transdono, la radio enigos la longokampon post la kapaj bajtoj.
La L-kampo por la sendrata M-busa protokolo ne povas esti uzata por la Si443x-longa kampo. Unue, la L-kampo ne estas la fakta paka longo. Ĝi estas la nombro da ligtavolaj utilŝarĝaj bajtoj ne inkluzive de la CRC-bajtoj aŭ kodigado. Due, la L-kampo mem estas ĉifrita uzante aŭ Manchester-kodigon aŭ Tri el Ses-kodigadon por Mode T-mezurilo al alia.
La efektivigo uzas la pakaĵettraktilon en fikspaka larĝreĝimo por kaj dissendo kaj ricevo. Sur dissendo, la PHY-tavolo legos la L-kampon en la elsenda bufro kaj kalkulos la nombron da koditaj bajtoj, inkluzive de la poŝtambolo. La tutsumo de koditaj bajtoj por esti transdonitaj estas skribita al la Packet Length-registro (0x3E).
Sur ricevo, la unuaj du ĉifritaj bajtoj estas malkoditaj, kaj la L-kampo estas skribita al la ricevbufro. La L-kampo estas uzata por kalkuli la nombron da koditaj bajtoj ricevotaj. La nombro da koditaj bajtoj ricevitaj tiam estas skribita al la Packet Length-registro (0x3E). La poŝtambolo estas forĵetita.
La MCU devas malkodi la L-kampon, kalkuli la nombron da koditaj bajtoj, kaj skribi la valoron al la Packet Length-registro antaŭ ol la plej mallonga ebla pakaĵetlongo estis ricevita. La plej mallonga alleblas L-kampo por la PHY-tavolo estas 9, donante 12 nekodigitajn bajtojn. Ĉi tio donas 18 kodigitajn bajtojn por Modelo T. La unuaj du bajtoj jam estis malkoditaj. Tiel, la paka Longa registro devas esti ĝisdatigita en 16-bajtaj tempoj je 100 kbps aŭ 1.28 milisekundoj. Ĉi tio ne estas problemo por 8051 funkcianta je 20 MIPS.
La nombro da ricevotaj bajtoj ne inkluzivas la poŝtambolon, krom la kvar-blata poŝtambolo uzita por Mode T-pakaĵetoj kun nepara pakaĵetlongo. Tiel, la ricevilo ne postulas poŝtanlon, krom la Model T nepara longo pakaĵetoj. Ĉi tiu poŝtambolo estas bezonata nur por doni entjeran nombron da koditaj bajtoj. La enhavo de la afiŝo estas ignorata; do, se la poŝtambolo ne estas elsendita, kvar blatoj de bruo estos ricevitaj kaj ignoritaj. Ĉar la tutsumo de koditaj bajtoj estas limigita al 255 (0xFF), la efektivigo limigas la maksimuman L-kampon por la malsamaj reĝimoj.
Tabelo 8. Pakaj Grandecaj Limoj
kodita | malkodita | M-Bus | ||||
bajtoj | bajtoj | L-Kampo | ||||
dec | hex | dec | hex | dec | hex | |
Reĝimo S | 255 | FF | 127 | 7 F | 110 | 6E |
Reĝimo T (metro-alia) | 255 | FF | 169 | A9 | 148 | 94 |
Reĝimo R | 255 | FF | 127 | 7 F | 110 | 6E |
Tiuj limoj estas normale multe super la tipa uzokutimo por sendrata mezurilo. La paka longo devas esti malgranda por akiri la plej bonan eblan baterian vivon.
Krome, la uzanto povas specifi la maksimuman L-kampon kiu devus esti ricevita (USER_RX_MAX_L_FIELD). Ĉi tio determinas la bezonatan grandecon por la riceva bufro (USER_RX_BUFFER_SIZE).
Subteni maksimuman L-kampon de 255 postulus ricevan bufron de 290 bajtoj kaj maksimumon de 581 Manĉestro-kodigitaj bajtoj. La pakaĵtraktilo devus esti malŝaltita kaj la Packet Length-registro ne povus esti uzata en tiu kazo. Ĉi tio estas farebla, sed estas pli oportune uzi la pak-traktilon, se eble.
Uzado de FIFO
La Si4431 disponigas 64 bajtan FIFO por elsendado kaj ricevado. Ĉar la nombro da koditaj bajtoj estas 255, tuta kodita pakaĵeto eble ne taŭgas ene de la 64-bajta bufro.
Transdono
Dum transdono, la tutsumo de koditaj bajtoj estas kalkulita. Se la tutsumo de koditaj bajtoj, inkluzive de la poŝtambolo, estas malpli ol 64 bajtoj, la tuta pakaĵeto estas skribita al la FIFO kaj nur la pakaĵeto sendita interrompo estas ebligita. Plej mallongaj pakoj estos senditaj en unu FIFO-translokigo.
Se la nombro da koditaj bajtoj estas pli granda ol 64, multoblaj FIFO-translokigoj estos postulataj por sendi la pakaĵeton. La unuaj 64 bajtoj estas skribitaj al la FIFO. La Paketo Sendita kaj TX FIFO Preskaŭ Malplenaj interrompoj estas ebligitaj. La TX FIFO Preskaŭ Malplena sojlo estas agordita al 16 bajtoj (25%). Sur ĉiu IRQ-okazaĵo, la statuso 2-registro estas legita. La Packet Sent-bito unue estas kontrolita, kaj, se la pakaĵeto ne estis tute sendita, la venontaj 48 bajtoj da koditaj datenoj estas skribitaj al la FIFO. Ĉi tio daŭras ĝis ĉiuj koditaj bajtoj estas skribitaj kaj la Packet Sent-interrompo okazas.
1. Akcepto
Ĉe ricevo, komence, nur la Sync Word-interrompo estas ebligita. Post ricevo de la sinkroniga vorto, la sinkroniga vorto interrompo estas malŝaltita kaj la FIFO Preskaŭ Plena interrompo estas ebligita. La FIFO preskaŭ plena sojlo estas komence fiksita al 2 bajtoj. La unua FIFO Preskaŭ Plena interrompo estas uzata por scii kiam la du longaj bajtoj estis ricevitaj. Post kiam la longo estis ricevita, la longo estas malkodita kaj la nombro da koditaj bajtoj estas kalkulita. La RX FIFO preskaŭ Plena sojlo tiam estas agordita al 48 bajtoj. La RX FIFO estas preskaŭ plena kaj Validaj Pakaj interrompoj estas ebligitaj. Sur la venonta IRQ-okazaĵo, la statuso 1-registro estas legita. Unue, la Valida Paka bito estas kontrolita, kaj tiam la FIFO Preskaŭ Plena bito estas kontrolita. Se nur la RX FIFO Preskaŭ Plena bito estas agordita, la venontaj 48 bajtoj estas legitaj de la FIFO. Se la valida pakaĵetbito estas metita, la resto de la pakaĵeto estas legita de la FIFO. La MCU kontrolas kiom da bajtoj estis legitaj kaj ĉesas legi post la lasta bajto.
Datuma Ligtavolo
La datumliga tavolmodulo efektivigas 13757-4:2005 konforman ligtavolon. La datenliga tavolo (LINK) disponigas interfacon inter la fizika tavolo (PHY) kaj la aplikaĵtavolo (AL).
La Datumliga Tavolo plenumas la sekvajn funkciojn:
- Disponigas funkciojn kiuj transdonas datumojn inter PHY kaj AL
- Generas CRC-ojn por eksiĝintaj mesaĝoj
- Detektas CRC-erarojn en envenantaj mesaĝoj
- Provizas fizikan adresadon
- Agnoskas translokigojn por dudirektaj komunikaj reĝimoj
- Kadroj datumbitoj
- Detektas erarojn de enkadrigo en envenantaj mesaĝoj
Ligo Tavolo Kadro Formato
La sendrata M-Bus framformato uzita en EN 13757-4:2005 estas derivita de la FT3 (Frame Type 3) framformato de IEC60870-5-2. La kadro konsistas el unu aŭ pluraj blokoj de datumoj. Ĉiu bloko inkluzivas 16-bitan CRC-kampon. La unua bock estas fikslonga bloko de 12 bajtoj kiu inkluzivas la L-kampon, C-kampon, M-kampon kaj A-kampon.
- L-Kampo
La L-kampo estas la longo de la Linktavola datumutila ŝarĝo. Ĉi tio ne inkluzivas la L-kampon mem aŭ iujn el la CRC-bajtoj. Ĝi inkluzivas la L-kampon, C-kampon, M-kampon kaj A-kampon. Ĉi tiuj estas parto de la utila ŝarĝo de PHY.
Ĉar la nombro da koditaj bajtoj estas limigita al 255 bajtoj, la maksimuma subtenata valoro por la M-kampo estas 110 bajtoj por Manĉestro koditaj datenoj kaj 148 bajtoj por Mode T Three-Out-of-Six koditaj datenoj.
La Link-tavolo respondecas pri kalkulado de la L-kampo sur dissendo. La ligtavolo uzos la L-kampon ĉe ricevo.
Notu ke la L-kampo ne indikas la PHY-utilan ŝarĝan longon aŭ la nombron da koditaj bajtoj. Sur dissendo, la PHY kalkulos la PHY-utilan ŝarĝan longon kaj la nombron da koditaj bajtoj. Post ricevo, la PHY malkodos la L-kampon kaj kalkulos la nombron da bajtoj por malkodi. - C-Kampo
La C-kampo estas la kadro-kontrolkampo. Ĉi tiu kampo identigas la kadrospecon kaj estas uzata por la primitivaj servo de ligo-datuminterŝanĝo. La C-kampo indikas la kadrospecon - SENDU, KONFIRMI, PETI aŭ RESPONDI. En la kazo de SEND kaj REQUEST kadroj, la C-kampo indikas ĉu KONFIRMO aŭ RESPONDI estas atendita.
Kiam vi uzas la bazan funkcion Link TX, ajna valoro de C povas esti uzata. Kiam vi uzas la Ligi-Servajn Primivojn, la kampo C estas aŭtomate plenigita laŭ EN 13757-4:2005. - M-Kampo
La M-kampo estas la kodo de la fabrikanto. Fabrikistoj povas peti tri-leteran kodon de la sekvaj web adreso: http://www.dlms.com/flag/INDEX.HTM Ĉiu signo de la tri-letera kodo estas ĉifrita kiel kvin bitoj. La 5-bita kodo povas esti akirita prenante la ASCII-kodon kaj subtrahante 0x40 ("A"). La tri 5-bitaj kodoj estas kunligitaj por fari 15-bitojn. La plej signifa bito estas nulo. - A-Kampo
La adreskampo estas unika 6-bajta adreso por ĉiu aparato. La unika adreso devus esti asignita de la fabrikanto. Estas la respondeco de ĉiu fabrikanto certigi, ke ĉiu aparato havas unikan 6-bajtan adreson. La adreso por Sendi kaj Peti kadrojn estas la mem-adreso de la mezurilo aŭ alia aparato. La konfirmaj kaj respondaj datenkadroj estas senditaj uzante la adreson de la origina aparato. - CI-Kampo
La CI-kampo estas la aplikaĵa kaplinio kaj specifas la tipon de datumoj en la aplikaĵa datumutila ŝarĝo. Dum EN13757-4:2005 specifas limigitan nombron da valoroj, la Ligo-Servo-Primivoj permesos iun ajn valoron esti uzata. - CRC
La CRC estas precizigita en EN13757-4:2005.
La CRC Polinomo estas:
X16 + x13 + x12 + x11 + x10 + x8 +x6 + x5 +x2 + 1
Notu ke la M-Bus CRC estas kalkulita super ĉiu 16-bajta bloko. La rezulto estas ke ĉiu 16 bajtoj da datenoj postulas 18 bajtojn por esti elsenditaj,
Pliaj Informoj
Por pliaj informoj pri la Ligtavolo-Efektivigo, vidu "AN452: Sendrata M-Bus Stack Programers Guide".
Potenca Administrado
Figuro 2 montras la templinion de potenco-administrado por metro ekzample uzante la Mode T1.
La MCU devus esti en Dorma reĝimo kiam ajn eblas por konservi energion. En ĉi tiu ekzample, la MCU dormas kiam la RTC funkcias, kiam oni atendas la ekfunkciigon de la radiokristalo, kaj kiam oni elsendas de la FIFO. La MCU vekiĝos de la EZRadioPRO IRQ-signalo konektita al Port Match-vekiĝo.
Dum elsendado de mesaĝoj pli longaj ol unu bloko, la MCU devas vekiĝi por plenigi la FIFO (surbaze de la FIFO preskaŭ malplena interrompo) kaj tiam redormi.
La MCU devus esti en Neaktiva reĝimo kurante de la malalta potenco oscilatoro aŭ eksplod-reĝimo oscilatoro kiam legante de la ADC. La ADC postulas SAR-horloĝon.
Kiam ne estas uzata, la EZRadioPRO devus esti en Malŝalta reĝimo kun la SDN-stifto movita alte. Ĉi tio postulas fiksitan konekton al la MCU. La registroj de EZ Radio Pro ne estas konservitaj en malŝalta reĝimo; do, la EZRadioPro estas pravigita sur ĉiu RTC-intervalo. Iniciatigi la Radion bezonas malpli ol 100 µs kaj konservas 400 nA. Ĉi tio rezultigas 10 µJ energiŝparojn, surbaze de 10-sekunda intervalo.
La EZRadioPRO-kristalo prenas ĉirkaŭ 16 ms por POR. Ĉi tio estas sufiĉe longa por kalkuli la CRC por ĉirkaŭ ok blokoj. La MCU redormos se ĝi kompletigas ĉiujn CRC-ojn antaŭ ol la kristalo stabiliĝis. Se ĉifrado estas postulata, ĝi ankaŭ povas esti komencita atendante sur la kristala oscilatoro.
La MCU devus funkcii ĉe 20 MHz uzante la malalt-potencan oscilatoron por plej multaj taskoj. Taskoj, kiuj postulas precizan tempon, devas uzi la precizecan oscilatoron kaj neaktivan reĝimon anstataŭ dormreĝimon. La RTC disponigas sufiĉe da rezolucio por la plej multaj taskoj. La templinio de potenco-administrado por la T2-mezurilo ekzampla aplikaĵo estas montrita en Figuro 3.
La transceil-efektivigo devus esti optimumigita por la normala kazo kiam la metro vekiĝas kaj ekzistas neniu leganto ĉeestanta. La minimumaj/maksimumaj ACK-tempotempoj estas sufiĉe longaj por ke eblas uzi la C8051F930 RTC kaj meti la MCU en dormreĝimon.
Konstruaj opcioj estas provizitaj por regado aŭ USB-funkciigitaj legantoj, kiuj ne bezonas uzi dormreĝimon. La neaktiva reĝimo estos uzata anstataŭ dormo, por ke la USB kaj UART interrompu la MCU.
Simpleco Studio
Unuklaka aliro al MCU kaj sendrataj iloj, dokumentaro, programaro, fontkodaj bibliotekoj kaj pli. Havebla por Vindozo,
Mac kaj Linukso!
![]() |
![]() |
![]() |
![]() |
IoT Portfolio www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
Kvalito www.silabs.com/quality |
Subteno kaj Komunumo community.silabs.com |
Malgarantio
Silicon Labs intencas provizi klientojn per la plej nova, preciza kaj profunda dokumentado de ĉiuj ekstercentraj kaj moduloj disponeblaj por sistemoj kaj programaroj uzantaj aŭ intencantaj uzi la produktojn de Silicon Labs. Karakterizaj datumoj, disponeblaj moduloj kaj ekstercentraj, memorgrandecoj kaj memoradresoj rilatas al ĉiu specifa aparato, kaj "Tipaj" parametroj provizitaj povas kaj varias en malsamaj aplikoj. Apliko ekzampla ĉi tie priskribitaj estas nur por ilustraj celoj. Silicon Labs rezervas la rajton fari ŝanĝojn sen plia avizo kaj limigo al produktaj informoj, specifoj kaj priskriboj ĉi tie, kaj ne donas garantiojn pri la ĝusteco aŭ kompleteco de la inkluzivita informo. Silicon Labs ne havas respondecon pri la sekvoj de uzo de la informoj ĉi tie provizitaj. Ĉi tiu dokumento ne implicas aŭ esprimas kopirajtajn licencojn donitajn ĉi-sube por desegni aŭ fabriki iujn ajn integrajn cirkvitojn. La produktoj ne estas dezajnitaj aŭ rajtigitaj por esti uzataj en iu ajn Vivsubtena Sistemo sen la specifa skriba konsento de Silicon Labs. "Vivsubtena Sistemo" estas ajna produkto aŭ sistemo intencita por subteni aŭ subteni vivon kaj/aŭ sanon, kiu, se ĝi malsukcesas, povas esti racie atendita rezultigi gravan personan vundon aŭ morton. Silicon Labs-produktoj ne estas dezajnitaj aŭ rajtigitaj por militaj aplikoj. Silicon Labs-produktoj ne devas esti uzataj en amasdetruaj armiloj inkluzive de (sed ne limigitaj al) nukleaj, biologiaj aŭ kemiaj armiloj, aŭ misiloj kapablaj liveri tiajn armilojn.
Varmarkinformo
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs®, kaj la Silicon Labs logo®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro-emblemo kaj kombinaĵoj de tio, "la plej energi-amikaj mikroregiloj de la mondo", Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, la Telegesis Logo®, USBXpress® kaj aliaj estas varmarkoj aŭ registritaj varmarkoj de Silicon Labs. ARM, CORTEX, Cortex-M3 kaj dikfingroj estas varmarkoj aŭ registritaj varmarkoj de ARM Holdings. Keil estas registrita varmarko de ARM Limited. Ĉiuj aliaj produktoj aŭ markonomoj ĉi tie menciitaj estas varmarkoj de siaj respektivaj posedantoj.
Silicon Laboratories Inc.
400 Okcidenta Cesar Chavez
Aŭstino, TX 78701
Usono
http://www.silabs.com
Dokumentoj/Rimedoj
![]() |
SILICON LABS Sendrata M-BUS Programaro Efektivigo AN451 [pdf] Uzantogvidilo SILICON LABS, C8051, MCU, kaj, EZRadioPRO, Sendrata M-buso, Sendrata, M-BUS, Programaro, Efektivigo, AN451 |