AN451
ВНЕДРЕНИЕ НА БЕЗЖИЧНО СОФТУЕРНО M-BUS
Въведение
Тази бележка за приложението описва реализацията на Silicon Labs на Wireless M-Bus с помощта на Silicon Labs C8051 MCU и EZRadioPRO®. Безжичната M-bus е европейски стандарт за приложения за отчитане на измервателни уреди, използващи честотната лента 868 MHz.
Стек слоеве
Безжичната M-Bus използва 3-слойния IEC модел, който е подмножество на 7-слойния OSI модел (виж Фигура 1).
Физическият (PHY) слой е дефиниран в EN 13757-4. Физическият слой определя как се кодират и предават битовете, характеристиките на RF модема (скорост на чип, преамбюл и синхронизираща дума) и RF параметри (модулация, централна честота и честотно отклонение).
PHY слоят се реализира с помощта на комбинация от хардуер и фърмуер. EZRadioPRO изпълнява всички RF и модемни функции. EZRadioPRO се използва в режим FIFO с манипулатора на пакети. Модулът MbusPhy.c осигурява SPI интерфейс, кодиране/декодиране, четене/запис на блокове и обработка на пакети и управлява състоянията на трансивъра.
Връзковият слой за данни M-Bus е реализиран в модула MbusLink.c. Интерфейсът за програмиране на приложения M-Bus се състои от публични функции, които могат да бъдат извикани от слоя на приложението в основната нишка. Модулът MbusLink също така реализира слоя за връзка с данни. Слоят на връзката за данни ще форматира и копира данни от TX буфера на приложението в буфера MbusPhy TX, добавяйки необходимите заглавки и CRC.
Самият слой на приложението не е част от фърмуера на M-bus. Приложният слой определя как голямо разнообразие от данни трябва да бъдат форматирани за предаване. Повечето измервателни уреди трябва да предават само един или два вида данни. Добавянето на голямо количество код за приемане на всякакъв вид данни към измервателния уред би добавило ненужен код и цена към измервателния уред. Може да е възможно да се внедри библиотека или заглавка file с изчерпателен списък от типове данни. Въпреки това, повечето клиенти на измерване знаят точно какъв вид данни трябва да предадат и могат да се позоват на стандарта за подробности за форматиране. Универсален четец или снифер може да реализира пълен набор от типове данни на приложението в графичния интерфейс на компютъра. Поради тези причини приложният слой се реализира с помощта на example приложения за измервателен уред и четец.
Задължителни стандарти
- EN 13757-4
EN 13757-4
Комуникационна система за измервателни уреди и дистанционно отчитане на измервателни уреди
Част 4: Отчитане на безжичния глюкомер
Отчитане на радиометъра за работа в SRD обхват от 868 MHz до 870 MHz - EN 13757-3
Комуникационна система за измервателни уреди и дистанционно отчитане на измервателни уреди
Част 3: Специален приложен слой - IEC 60870-2-1:1992
Оборудване и системи за телеуправление
Част 5: Протоколи за предаване
Раздел 1: Процедура за предаване на връзка - IEC 60870-1-1:1990
Оборудване и системи за телеуправление
Част 5: Протоколи за предаване
Раздел 1: Формати на рамката за предаване
Дефиниции
- M-Bus—M-Bus е кабелен стандарт за отчитане на измервателни уреди в Европа.
- Безжична M-Bus—Безжична M-Bus за приложения за отчитане на измервателни уреди в Европа.
- PHY— Физическият слой дефинира как битовете и байтовете от данни се кодират и предават.
- API-Интерфейс за програмиране на приложения.
- ВРЪЗКА—Слоят за връзка с данни определя как се предават блоковете и кадрите.
- CRC—Проверка на цикличността.
- FSK—Честотно преместване.
- чип-Най-малката единица предавани данни. Един бит за данни е кодиран като множество чипове.
- модул-AC код източник .c file.
Функционално описание на M-Bus PHY
Последователност на преамбюла
Последователността на преамбюла, определена от спецификацията на M-bus, е цяло число, редуващо се нули и единици. Единица се определя като по-висока честота, а нула се дефинира като по-ниска честота.
nx (01)
Опциите за преамбюла за Si443x са цял брой хапки, състоящи се от редуващи се единици и нули.
nx (1010)
Преамбюл с допълнителен водещ няма да е проблем, но тогава синхронизиращата дума и полезният товар ще бъдат неподравнени с един бит.
Решението е да обърнете целия пакет, като зададете бит на двигателя в регистъра Modulation Control 2 (0x71). Това ще обърне преамбюла, синхронизиращата дума и TX/RX данните. В резултат на това данните трябва да бъдат обърнати при запис на TX данни или четене на RX данни. Също така, синхронизиращата дума се инвертира преди запис в регистрите на Si443x Synchronization Word.
Word за синхронизация
Синхронизиращата дума, изисквана от EN-13757-4, е или 18 чипа за режим S и режим R или 10 чипа за модел T. Синхронизиращата дума за Si443x е от 1 до 4 байта. Въпреки това, тъй като синхронизиращата дума винаги се предхожда от преамбюла, последните шест бита от преамбюла могат да се считат за част от синхронизиращата дума; така, първата синхронизираща дума е допълнена с три повторения на нула, последвана от единица. Синхронизиращата дума се допълва преди запис в регистрите Si443x.
Таблица 1. Синхронизираща дума за режим S и режим R
EN 13757-4 | 00 | 01110110 | 10010110 | двоичен |
00 | 76 | 96 | магия | |
подложка с (01) x 3 | 01010100 | 01110110 | 10010110 | двоичен |
54 | 76 | 96 | магия | |
допълвам | 10101011 | 10001001 | 01101001 | двоичен |
AB | 89 | 69 | магия |
Таблица 2. Синхронизираща дума за измерване в режим T към друг
СИНХР | СИНХР | СИНХР |
ДУМА | ДУМА | ДУМА |
3 | 2 | 1 |
Дължина на преамбюла на предаване
Минималният преамбюл е посочен за четири различни режима на работа. Приемливо е преамбюлът да е по-дълъг от посоченото. Изваждането на шест чипа за преамбюла дава минималния брой чипове за преамбюла на Si443x. Реализацията добавя две допълнителни части от преамбюла във всички режими на кратки преамбюли, за да подобри откриването и оперативната съвместимост на преамбюла. Преамбюлът на Mode S с дълъг преамбюл е много дълъг; така че се използва минималният преамбюл. Дължината на преамбюла в хапки се записва в регистъра за дължина на преамбюла (0x34). Регистърът на дължината на преамбюла определя преамбюла само при предаване. Минималните настройки за спецификация и дължина на преамбюла са обобщени в таблица 3.
Таблица 3. Дължина на преамбюла на предаване
EN-13757-4 минимум |
Si443x Преамбюл Настройка ing |
Синхр Слово |
Общо | екстра | |||
nx (01) | чипове | хапки | чипове | чипове | чипове | чипове | |
Кратък преамбюл на режим S | 15 | 30 | 8 | 32 | 6 | 38 | 8 |
Дълъг преамбюл на режим S | 279 | 558 | 138 | 552 | 6 | 558 | 0 |
Режим T (метър-друг) | 19 | 38 | 10 | 40 | 6 | 46 | 8 |
Режим R | 39 | 78 | 20 | 80 | 6 | 86 | 8 |
Минималният преамбюл за приемане се определя от регистъра за контрол на преамбюла (0x35). При приемане броят на битовете в синхронизиращата дума трябва да бъде изваден от посочения минимален преамбюл, за да се определи използваемият преамбюл. Минималното време за установяване на приемника е 16 чипа, ако AFC е активиран, или 8 чипа, ако AFC е изключен. Времето за установяване на приемника също се изважда от използваемия преамбюл, за да се определи минималната настройка за регистъра за контрол на преамбюла.
Вероятността за фалшива преамбюла зависи от настройката на регистъра за контрол на преамбюла. Кратка настройка на 8-чипа може да доведе до откриване на фалшива преамбюла на всеки няколко секунди. Препоръчителната настройка от 20 чипа прави откриването на фалшива преамбюла малко вероятно събитие. Дължините на преамбюла за режим R и режим SL са достатъчно дълги, за да се използва препоръчителната настройка.
Има много малка полза от това преамбюлът да открива по-дълъг от 20 чипа.
AFC е деактивиран за модел S с кратък преамбюл и модел T. Това намалява времето за установяване на приемника и позволява по-дълга настройка за откриване на преамбюла. При деактивиран AFC режим T може да използва препоръчителната настройка от 20 чипа. За модел S с кратък преамбюл се използва настройка от 4 хапки или 20 чипа. Това прави вероятността от откриване на фалшива преамбюла малко по-висока за този модел.
Таблица 4. Откриване на преамбюла
EN-13757-4 минимум |
Синхр Слово |
използваем преамбюл |
RX уреждане | Откриване мин |
Si443x Преамбюл Настройка за откриване |
|||
nx (01) | чипове | чипове | чипове | чипове | чипове | хапки | чипове | |
Кратък преамбюл на режим S | 15 | 30 | 6 | 24 | 8* | 16 | 4 | 16 |
Дълъг преамбюл на модел S | 279 | 558 | 6 | 552 | 16 | 536 | 5 | 20 |
Модел T (метър-друг) | 19 | 38 | 6 | 32 | 8* | 24 | 5 | 20 |
Режим R | 39 | 78 | 6 | 72 | 16 | 56 | 5 | 20 |
*Забележка: AFC е деактивиран |
Приемникът е конфигуриран да взаимодейства с предавател, използвайки минимално посочения преамбюл. Това гарантира, че приемникът ще взаимодейства с всеки предавател, съвместим с M-bus.
Спецификацията за безжична M-Bus изисква много дълъг преамбюл за режим S1 от най-малко 558 чипа. Това ще отнеме около 17 ms само за предаване на преамбюла. Si443x не изисква толкова дълъг преамбюл и не се възползва от дългия преамбюл. Докато дългият преамбюл е отбелязан като незадължителен за режим S2, няма причина да се използва дълъг преамбюл със Si443x. Ако е желана еднопосочна комуникация, режим T1 ще осигури по-кратък преамбюл, по-висока скорост на данни и по-дълъг живот на батерията. Ако е необходима двупосочна комуникация, използваща режим S2, се препоръчва кратък преамбюл.
Забележете, че прагът на откриване за модел S с дълъг преамбюл е по-дълъг от броя на преамбюлните хапки, предадени за модел S с кратък преамбюл. Това означава, че приемникът на режим S с дълга преамбюла няма да открие преамбюл от предавател на режим S с кратък преамбюл. Това е необходимо, ако приемникът на режим S с дълга преамбюла трябва да получи някаква полза от дългата преамбюла.
Имайте предвид, че приемникът в режим S с кратък преамбюл ще открие преамбюла и ще получи пакети от двата кратки преамбюла в режим S
предавател и предавател на режим S с дълга преамбюла; така че като цяло четецът на измервателния уред трябва да използва кратката преамбюла на конфигурацията на приемника в режим S.
Кодиране/декодиране
Спецификацията на Wireless M-bus изисква два различни метода за кодиране. Манчестърското кодиране се използва за режим S и режим R. Манчестърското кодиране се използва и за връзката друг към метър в модел T. Връзката между метър и друг модел T използва 3 от 6 кодировки.
1. Манчестър кодиран/декодиран
Манчестърското кодиране е обичайно исторически в RF системите, за да осигури стабилно възстановяване и проследяване на часовника с помощта на прост и евтин модем. Въпреки това, модерно високопроизводително радио като Si443x не се нуждае от кодиране на Манчестър. Манчестърското кодиране се поддържа основно за съвместимост със съществуващите стандарти, но скоростта на данни за Si443x ефективно се удвоява, когато не се използва кодиране на Манчестър.
Si443x поддържа Manchester кодиране и декодиране на целия пакет в хардуера. За съжаление, думата за синхронизация не е кодирана от Манчестър. Умишлено е избрана невалидна манчестърска последователност за думата за синхронизация. Това прави кодирането на Манчестър несъвместимо с повечето съществуващи радиостанции, включително Si443x. В резултат на това кодирането и декодирането на Манчестър трябва да се извършват от MCU. Всеки байт на некодирани данни се състои от осем бита данни. Използвайки кодиране от Манчестър, всеки бит от данни се кодира в символ с два чипа. Тъй като кодираните данни трябва да бъдат записани в радиото FIFO осем чипа наведнъж, една хапка данни се кодира и записва във FIFO в даден момент.
Таблица 5. Манчестърско кодиране
данни | Ох12 | 0x34 | байтове | ||
Ох1 | 0x2 | 0x3 | 0x4 | хапки | |
1 | 10 | 11 | 100 | двоичен | |
чип | 10101001 | 10100110 | 10100101 | 10011010 | двоичен |
FIFO | OxA9 | OxA6 | OxA5 | Ox9A | магия |
Всеки байт за предаване се предава един по байт на функцията за кодиране на байт. Функцията за кодиране на байт ще извика функцията за байт за кодиране два пъти, първо за най-значимото хапване и след това за най-малко значимото хапване.
Манчестърското кодиране в софтуера не е трудно. Започвайки от най-значимия бит, единият се кодира като последователност от чип "01". Нула се кодира като последователност от чипове „10“. Това може лесно да се постигне с помощта на цикъл и изместване на два бита за всеки символ. Въпреки това, по-бързо е просто да използвате проста таблица за търсене с 16 входа за всяка хапка. Функцията encode Manchester gribble кодира хапка от данни, след което я записва във FIFO. Чиповете се обръщат, преди да се запишат във FIFO, за да се отчетат изискванията за обърнатия преамбюл.
При получаване всеки байт във FIFO се състои от осем чипа и се декодира в една хапка от данни. Функцията на блок за четене чете един байт наведнъж от FIFO и извиква функцията за декодиране на байта. Чиповете се обръщат след четене от FIFO, за да се отчетат изискванията за обърнатия преамбюл. Всеки байт от кодирани от Манчестър чипове се декодира в хапка данни. Декодираното хапване се записва в RX буфера с помощта на функцията за RX буфер за запис.
Забележете, че както кодирането, така и декодирането се извършват по едно хапване на данни в движение. Кодирането към буфер ще изисква допълнителен буфер, два пъти по-голям от размера на некодираните данни. Кодирането и декодирането е много по-бързо от най-бързата поддържана скорост на данни (100 k чипа в секунда). Тъй като Si443x поддържа многобайтово четене и запис във FIFO, има малко излишни разходи при използването само на еднобайтови четения и записвания. Издръжката е около 10 µs за 100 кодирани чипа. Предимството е спестяване на RAM от 512 байта.
2. Три от шест кодиращи декодиране
Методът за кодиране три от шест, посочен в EN-13757-4, също се прилага във фърмуера на MCU. Това кодиране се използва за високоскоростен (100 k чипа в секунда) режим T от метър към друг. Модел T осигурява най-краткото време за предаване и най-дълъг живот на батерията за безжичен измервателен уред.
Всеки байт данни, които трябва да се предават, се разделя на две хапки. Най-значимата хапка се кодира и предава първа. Отново, това се реализира с помощта на функция за кодиране на байт, която извиква функцията за кълцане на кодиране два пъти.
Всяка хапка данни се кодира в символ с шест чипа. Последователността от шест чипови символи трябва да бъде записана в 8-чиповия FIFO.
По време на кодирането два байта данни се кодират като четири хапки. Всяка хапка е символ с 6 чипа. Четири 6-чипови символа са обобщени като три байта.
Таблица 6. Три от шест кодиране
данни | 0x12 | 0x34 | байтове | ||||
Ох1 | 0x2 | 0x3 | 0x4 | хапки | |||
чип | 15 | 16 | 13 | 34 | осмичен | ||
1101 | 1110 | 1011 | 11100 | двоичен | |||
FIFO | 110100 | 11100010 | 11011100 | двоичен | |||
0x34 | OxE2 | OxDC | магия |
В софтуера кодирането три от шест се реализира с помощта на три вложени функции. Функцията за кодиране на байт ще извика функцията за ядене на кодиране два пъти. Функцията за кодиране на хапване използва таблица за търсене за символа с шест чипа и записва символа във функциите Shift Three of Six. Тази функция внедрява 16-чипов регистър за изместване в софтуера. Символът се записва в най-малкия байт на регистъра за смяна. Регистърът се измества два пъти наляво. Това се повтаря три пъти. Когато в горния байт на преместващия регистър присъства пълен байт, той се обръща и се записва във FIFO.
Тъй като всеки байт данни е кодиран като един и половина кодирани байта, важно е първоначално да изчистите регистъра за смяна, така че първият кодиран байт да е правилен. Ако дължината на пакета е нечетно число, след кодиране на всички байтове, в регистъра за смяна ще остане едно хапване. Това се обработва с поща, както е обяснено в следващия раздел.
Декодирането на трите от шестте кодирани е обратната процедура. При декодиране три кодирани байта се декодират в два байта данни. Регистърът за изместване на софтуера отново се използва за агрегиране на байтове декодирани данни. За декодиране се използва таблица за обратна справка с 64 записа. Това използва по-малко цикли, но повече кодова памет. Търсенето в таблица за търсене с 16 записа за съответния символ отнема значително повече време.
Поставяне
Спецификацията за безжична M-bus има специфични изисквания за пощенската кутия или ремаркето. За всички режими минимумът е два чипа, а максимумът е осем чипа. Тъй като минималната атомна единица за FIFO е един байт, за Mode S и Mode R се използва трейлър с 8 чипа. Постановката в Mode T е осем чипа, ако дължината на пакета е четна, или четири чипа, ако дължината на пакета е нечетна. Четиричиповата поща за нечетна дължина на пакета отговаря на изискванията за наличие на поне два редуващи се чипа.
Таблица 7. Пощенска дължина
Дължина на поща (чипове) | |||||
мин | макс | Внедряване | чип последователност | ||
Режим S | 2 | 8 | 8 | 1010101 | |
Режим Т | 2 | 8 | 4 | (странно) | 101 |
8 | (дори) | 1010101 | |||
Режим R | 2 | 8 | 8 | 1010101 |
Манипулатор на пакети
Манипулаторът на пакети на Si443x може да се използва в режим с променлива ширина на пакета или режим с фиксирана ширина на пакета. Режимът с променлива ширина на пакета изисква байт с дължина на пакета след синхронизиращата дума и незадължителни заглавни байтове. При приемане радиото ще използва дължината на байта, за да определи края на валиден пакет. При предаване радиото ще вмъкне полето за дължина след заглавните байтове.
Полето L за безжичния протокол M-bus не може да се използва за полето за дължина Si443x. Първо, полето L не е действителната дължина на пакета. Това е броят на полезните байтове на слоя на връзката, без да включва CRC байтовете или кодирането. На второ място, самото L-поле се кодира с помощта на кодиране от Манчестър или кодиране Три от шест за измерване на режим T към други.
Реализацията използва манипулатора на пакети в режим с фиксирана ширина на пакети както за предаване, така и за приемане. При предаване, PHY слоят ще прочете полето L в предавателния буфер и ще изчисли броя на кодираните байтове, включително пощамбула. Общият брой кодирани байтове за предаване се записва в регистъра за дължина на пакета (0x3E).
При приемане първите два кодирани байта се декодират и L-полето се записва в буфера за приемане. L-полето се използва за изчисляване на броя на кодираните байтове, които трябва да бъдат получени. След това броят на кодираните байтове, които трябва да бъдат получени, се записва в регистъра за дължина на пакета (0x3E). Пощенската емблема се изхвърля.
MCU трябва да декодира L-полето, да изчисли броя на кодираните байтове и да запише стойността в регистъра за дължина на пакета, преди да бъде получена възможно най-кратката дължина на пакета. Най-краткото допустимо L-поле за PHY слоя е 9, което дава 12 некодирани байта. Това дава 18 кодирани байта за модел T. Първите два байта вече са декодирани. По този начин регистърът на дължината на пакета трябва да се актуализира за 16 байта при 100 kbps или 1.28 милисекунди. Това не е проблем за 8051, работещ при 20 MIPS.
Броят на байтовете, които трябва да бъдат получени, не включва пощамбула, с изключение на четиричипа, използван за пакети в режим T с нечетна дължина на пакета. По този начин приемникът не изисква пощенска емблема, с изключение на пакетите с нечетна дължина Model T. Тази поща е необходима само за да даде цял брой кодирани байтове. Съдържанието на пощата се игнорира; така че, ако пощенската записка не бъде предадена, четири чипа шум ще бъдат получени и игнорирани. Тъй като общият брой кодирани байтове е ограничен до 255 (0xFF), реализацията ограничава максималното L-поле за различните режими.
Таблица 8. Ограничения за размера на пакета
кодиран | декодиран | M-Bus | ||||
байтове | байтове | L-поле | ||||
дек | магия | дек | магия | дек | магия | |
Режим S | 255 | FF | 127 | 7 F | 110 | 6E |
Режим T (метър-друг) | 255 | FF | 169 | A9 | 148 | 94 |
Режим R | 255 | FF | 127 | 7 F | 110 | 6E |
Тези граници обикновено са доста над типичния случай на употреба за безжичен измервателен уред. Дължината на пакета трябва да бъде малка, за да получите възможно най-добрия живот на батерията.
В допълнение, потребителят може да посочи максималното L-поле, което трябва да бъде получено (USER_RX_MAX_L_FIELD). Това определя необходимия размер за буфера за получаване (USER_RX_BUFFER_SIZE).
Поддържането на максимално L-поле от 255 ще изисква буфер за получаване от 290 байта и максимум 581 байта, кодирани от Манчестър. Манипулаторът на пакети ще трябва да бъде деактивиран и регистърът за дължина на пакета не може да се използва в този случай. Това е възможно, но е по-удобно да използвате манипулатора на пакети, ако е възможно.
Използване на FIFO
Si4431 осигурява 64 байтов FIFO за предаване и приемане. Тъй като броят на кодираните байтове е 255, целият кодиран пакет може да не се побере в 64-байтовия буфер.
Предаване
При предаване се изчислява общият брой кодирани байтове. Ако общият брой на кодираните байтове, включително пощамбула, е по-малък от 64 байта, целият пакет се записва във FIFO и се разрешава само прекъсването на изпратения пакет. Повечето кратки пакети ще бъдат изпратени в един FIFO трансфер.
Ако броят на кодираните байтове е по-голям от 64, ще са необходими множество FIFO трансфери за изпращане на пакета. Първите 64 байта се записват във FIFO. Изпратените пакети и TX FIFO Почти празни прекъсвания са разрешени. Прагът за почти празен TX FIFO е настроен на 16 байта (25%). При всяко IRQ събитие регистърът на статус 2 се чете. Битът за изпратен пакет се проверява първо и, ако пакетът не е изпратен напълно, следващите 48 байта кодирани данни се записват във FIFO. Това продължава, докато не бъдат записани всички кодирани байтове и се случи прекъсването на изпращане на пакет.
1. Рецепция
При приемане първоначално е разрешено само прекъсването на Sync Word. След получаване на синхронизиращата дума прекъсването на синхронизиращата дума е забранено и прекъсването FIFO почти пълно е разрешено. FIFO почти пълен праг първоначално е настроен на 2 байта. Първото FIFO почти пълно прекъсване се използва, за да се знае кога са получени двата байта с дължина. След като дължината е получена, дължината се декодира и се изчислява броят на кодираните байтове. След това прагът за почти пълен RX FIFO се настройва на 48 байта. RX FIFO е почти пълен и прекъсванията на валиден пакет са разрешени. При следващото IRQ събитие регистърът на статус 1 се чете. Първо се проверява битът за валиден пакет и след това се проверява битът FIFO Почти пълен. Ако е зададен само RX FIFO почти пълен бит, следващите 48 байта се четат от FIFO. Ако е зададен валидният пакетен бит, останалата част от пакета се чете от FIFO. MCU следи колко байта са прочетени и спира да чете след последния байт.
Слой за връзка към данни
Модулът на слоя за връзка за данни реализира съвместим с 13757-4:2005 слой на връзката. Слоят на връзката за данни (LINK) осигурява интерфейс между физическия слой (PHY) и слоя на приложението (AL).
Слоят на връзката за данни изпълнява следните функции:
- Предоставя функции, които прехвърлят данни между PHY и AL
- Генерира CRC за изходящи съобщения
- Открива CRC грешки във входящите съобщения
- Осигурява физическо адресиране
- Потвърждава трансфери за двупосочни комуникационни режими
- Рамки битове данни
- Открива грешки в рамкиране във входящите съобщения
Формат на рамката на слоя с връзки
Форматът на рамката за безжична M-Bus, използван в EN 13757-4:2005, е извлечен от рамковия формат FT3 (Frame Type 3) от IEC60870-5-2. Рамката се състои от един или повече блокове данни. Всеки блок включва 16-битово CRC поле. Първият блок е блок с фиксирана дължина от 12 байта, който включва L-поле, C-поле, M-поле и A-поле.
- L-поле
L-полето е дължината на полезния товар от данни на слоя на връзката. Това не включва самото L-поле или някой от CRC байтовете. Тя включва L-поле, C-поле, M-поле и A-поле. Те са част от полезния товар PHY.
Тъй като броят на кодираните байтове е ограничен до 255 байта, максималната поддържана стойност за M-полето е 110 байта за кодирани данни от Манчестър и 148 байта за кодирани данни в режим T Three-Out-of-Six.
Link слоят е отговорен за изчисляването на L-полето при предаване. Слоят на връзката ще използва L-полето при приемане.
Обърнете внимание, че L-полето не показва дължината на полезен товар PHY или броя на кодираните байтове. При предаване, PHY ще изчисли дължината на полезния товар на PHY и броя на кодираните байтове. При получаване, PHY ще декодира L-полето и ще изчисли броя на байтовете за декодиране. - C-поле
C-полето е полето за управление на рамката. Това поле идентифицира типа на рамката и се използва за примитиви на услугата за обмен на данни за връзка. C-полето показва типа на рамката – ИЗПРАЩАНЕ, ПОТВЪРЖДАНЕ, ЗАЯВКА или ОТГОВОР. В случай на кадри ИЗПРАЩАНЕ и ЗАЯВКА, полето C показва дали се очаква ПОТВЪРЖДАВАНЕ или ОТГОВОР.
Когато използвате основната функция Link TX, може да се използва всяка стойност на C. Когато използвате Link Service Primitives, полето C се попълва автоматично съгласно EN 13757-4:2005. - М-Поле
M-полето е кодът на производителя. Производителите могат да поискат трибуквен код от следните web адрес: http://www.dlms.com/flag/INDEX.HTM Всеки знак от трибуквения код е кодиран като пет бита. 5-битовият код може да бъде получен, като се вземе ASCII код и се извади 0x40 („A“). Трите 5-битови кода са свързани, за да се получат 15-битови. Най-значимият бит е нула. - A-поле
Адресното поле е уникален 6-байтов адрес за всяко устройство. Уникалният адрес трябва да бъде зададен от производителя. Отговорност на всеки производител е да гарантира, че всяко устройство има уникален 6-байтов адрес. Адресът за рамки за изпращане и запитване е собственият адрес на уреда или друго устройство. Рамките с данни за потвърждение и отговор се изпращат с помощта на адреса на изходното устройство. - CI-поле
CI-полето е заглавката на приложението и определя типа данни в полезния товар на данните на приложението. Докато EN13757-4:2005 определя ограничен брой стойности, примитивите на услугата за връзка ще позволят всяка стойност да бъде използвана. - CRC
CRC е определен в EN13757-4:2005.
CRC полиномът е:
X16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1
Имайте предвид, че M-Bus CRC се изчислява за всеки 16-байтов блок. Резултатът е, че всеки 16 байта данни изискват 18 байта за предаване,
Допълнителна информация
За допълнителна информация относно внедряването на Link Layer, вижте „AN452: Ръководство за програмисти за безжичен M-Bus стек“.
Управление на мощността
Фигура 2 показва времевата линия за управление на мощността за измервателен уред напрampизползвайте режим T1.
MCU трябва да бъде в режим на заспиване, когато е възможно, за да пести енергия. В този прampMCU спи, когато RTC работи, когато изчаква стартиране на радиокристала и когато предава от FIFO. MCU ще се събуди от EZRadioPRO IRQ сигнал, свързан към събуждане на Port Match.
Когато предава съобщения, по-дълги от един блок, MCU трябва да се събуди, за да запълни FIFO (въз основа на почти празното прекъсване на FIFO) и след това да се върне в заспиване.
MCU трябва да е в режим на празен ход, работещ от осцилатор с ниска мощност или осцилатор в пакетен режим, когато чете от ADC. ADC изисква SAR часовник.
Когато не се използва, EZRadioPRO трябва да е в режим на изключване, като SDN щифтът е задвижван високо. Това изисква кабелна връзка с MCU. Регистрите на EZ Radio Pro не се запазват в режим на изключване; така, EZRadioPro се инициализира на всеки RTC интервал. Инициализирането на радиото отнема по-малко от 100 µs и спестява 400 nA. Това води до икономия на енергия от 10 µJ на базата на 10-секунден интервал.
Кристалът EZRadioPRO отнема около 16 ms за POR. Това е достатъчно дълго, за да се изчисли CRC за около осем блока. MCU ще се върне в заспиване, ако завърши всички CRC, преди кристалът да се стабилизира. Ако е необходимо криптиране, то също може да бъде стартирано, докато чакате на кристалния осцилатор.
MCU трябва да работи на 20 MHz, използвайки осцилатор с ниска мощност за повечето задачи. Задачите, които изискват точно изчакване, трябва да използват прецизния осцилатор и режим на празен ход вместо режим на заспиване. RTC осигурява достатъчно разделителна способност за повечето задачи. Времевата линия за управление на захранването за измервателния уред T2 exampприложението le е показано на фигура 3.
Изпълнението на трансивъра трябва да бъде оптимизирано за нормалния случай, когато измервателният уред се събужда и няма четец. Минималните/максималните изчаквания за ACK са достатъчно дълги, за да е възможно да се използва C8051F930 RTC и да се постави MCU в режим на заспиване.
Предоставени са опции за изграждане за четци, захранвани от мрежата или USB, които не трябва да използват режим на заспиване. Режимът на готовност ще се използва вместо спящ режим, така че USB и UART могат да прекъснат MCU.
Студио за простота
Достъп с едно щракване до MCU и безжични инструменти, документация, софтуер, библиотеки с изходен код и други. Предлага се за Windows,
Mac и Linux!
![]() |
![]() |
![]() |
![]() |
IoT портфолио www.silabs.com/IoT |
SW/HW www.silabs.com/simplicity |
качество www.silabs.com/качество |
Поддръжка и общност community.silabs.com |
Отказ от отговорност
Silicon Labs възнамерява да предостави на клиентите най-новата, точна и задълбочена документация за всички периферни устройства и модули, налични за системни и софтуерни внедрители, използващи или възнамеряващи да използват продуктите на Silicon Labs. Данните за характеристиките, наличните модули и периферни устройства, размерите на паметта и адресите на паметта се отнасят за всяко конкретно устройство, а предоставените „типични“ параметри могат и варират в различните приложения. Приложение прampописаните тук са само за илюстративни цели. Silicon Labs си запазва правото да прави промени без допълнително предупреждение и ограничение на информацията за продукта, спецификациите и описанията тук, и не дава гаранции за точността или пълнотата на включената информация. Silicon Labs не носи отговорност за последиците от използването на предоставената тук информация. Този документ не предполага и не изразява лицензи за авторски права, предоставени по силата на настоящото споразумение, за проектиране или производство на интегрални схеми. Продуктите не са проектирани или разрешени да се използват в която и да е система за поддържане на живота без специалното писмено съгласие на Silicon Labs. „Система за поддържане на живота“ е всеки продукт или система, предназначена да поддържа или поддържа живота и/или здравето, което, ако не успее, може да се очаква да доведе до значителни телесни наранявания или смърт. Продуктите на Silicon Labs не са проектирани или разрешени за военни приложения. Продуктите на Silicon Labs при никакви обстоятелства не трябва да се използват в оръжия за масово унищожение, включително (но не само) ядрени, биологични или химически оръжия, или ракети, способни да доставят такива оръжия.
Информация за търговската марка
Silicon Laboratories Inc.®, Silicon Laboratories®, Silicon Labs®, SiLabs® и логото на Silicon Labs®, Bluegiga®, Bluegiga Logo®, Clockbuilder®, CMEMS®, DSPLL®, EFM®, EFM32®, EFR, Ember® , Energy Micro, Energy Micro лого и комбинации от тях, „най-енергийно чистите микроконтролери в света“, Ember®, EZLink®, EZRadio®, EZRadioPRO®, Gecko®, ISOmodem®, Precision32®, ProSLIC®, Simplicity Studio®, SiPHY® , Telegesis, логото Telegesis®, USBXpress® и други са търговски марки или регистрирани търговски марки на Silicon Labs. ARM, CORTEX, Cortex-M3 и thumbs са търговски марки или регистрирани търговски марки на ARM Holdings. Keil е регистрирана търговска марка на ARM Limited. Всички други продукти или марки, споменати тук, са търговски марки на съответните им притежатели.
Silicon Laboratories Inc.
400 Запад Сезар Чавес
Остин, Тексас 78701
САЩ
http://www.silabs.com
Документи / Ресурси
![]() |
SILICON LABS Безжична M-BUS софтуерна реализация AN451 [pdf] Ръководство за потребителя SILICON LABS, C8051, MCU и, EZRadioPRO, безжична M-bus, безжична, M-BUS, софтуер, внедряване, AN451 |