AN451
РЕАЛІЗАЦІЯ ПРОГРАМНОГО ЗАБЕЗПЕЧЕННЯ БЕЗДРОТОВОГО M-BUS
вступ
Ця примітка щодо програми описує реалізацію Wireless M-Bus Silicon Labs за допомогою мікроконтролера Silicon Labs C8051 і EZRadioPRO®. Wireless M-bus є європейським стандартом для додатків для зчитування лічильників, що використовують діапазон частот 868 МГц.
Стек шарів
Wireless M-Bus використовує 3-шарову модель IEC, яка є підмножиною 7-рівневої моделі OSI (див. малюнок 1).
Фізичний рівень (PHY) визначено в EN 13757-4. Фізичний рівень визначає, як кодуються і передаються біти, характеристики РЧ-модему (швидкість чіпа, преамбула і слово синхронізації) і РЧ-параметри (модуляція, центральна частота і відхилення частоти).
Рівень PHY реалізується за допомогою комбінації апаратного та мікропрограмного забезпечення. EZRadioPRO виконує всі функції РЧ і модему. 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 МГц до 870 МГц - 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 для застосування зчитування лічильників у Європі.
- ФІЗ—Фізичний рівень визначає спосіб кодування та передачі бітів і байтів даних.
- API—Інтерфейс прикладного програміста.
- ПОСИЛАННЯ—Канальний рівень даних визначає спосіб передачі блоків і кадрів.
- CRC—Циклічна перевірка резервування.
- FSK—Частотний зсув.
- чіп—Найменша одиниця переданих даних. Один біт даних кодується як кілька мікросхем.
- модуль—Джерело коду змінного струму .c file.
Функціональний опис M-Bus PHY
Послідовність преамбули
Послідовність преамбули, визначена специфікацією M-bus, є цілим числом, що чергується нулями та одиницями. Одиниця визначається як вища частота, а нуль визначається як нижча частота.
nx (01)
Параметри преамбули для Si443x — це ціла кількість блоків, що складається з одиниць і нулів, що чергуються.
nx (1010)
Преамбула з додатковим провідним не буде проблемою, але тоді слово синхронізації та корисне навантаження будуть зміщені на один біт.
Рішення полягає в тому, щоб інвертувати весь пакет, встановивши біт двигуна в регістрі Modulation Control 2 (0x71). Це інвертує преамбулу, слово синхронізації та дані TX/RX. Як наслідок, дані повинні бути інвертовані під час запису даних TX або читання даних RX. Крім того, слово синхронізації інвертується перед записом в регістри слова синхронізації Si443x.
Синхронізаційне слово
Слово синхронізації, яке вимагає 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. Реалізація додає два додаткові фрагменти преамбули у всі режими короткої преамбули, щоб покращити виявлення преамбули та сумісність. Преамбула режиму S з довгою преамбулою дуже довга; тому використовується мінімальна преамбула. Довжина преамбули в блоках записується в регістр Preamble Length (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 мікросхем робить виявлення помилкової преамбули малоймовірною подією. Довжина преамбули для Mode R і Mode 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.
Специфікація Wireless M-Bus вимагає дуже довгої преамбули для режиму S1 з принаймні 558 мікросхем. Це займе близько 17 мс лише для передачі преамбули. Si443x не вимагає такої довгої преамбули і не отримує вигоди від довгої преамбули. Хоча довга преамбула зазначена як необов’язкова для режиму S2, немає причин використовувати довгу преамбулу з Si443x. Якщо потрібен односторонній зв’язок, режим T1 забезпечить коротшу преамбулу, вищу швидкість передачі даних і довший термін служби акумулятора. Якщо потрібен двосторонній зв’язок у режимі S2, рекомендується коротка преамбула.
Зверніть увагу, що поріг виявлення для Model S з довгою преамбулою довший, ніж кількість блоків преамбули, переданих для Model S з короткою преамбулою. Це означає, що приймач режиму S із довгою преамбулою не виявить преамбулу від короткої преамбули передавач режиму S. Це необхідно, якщо приймач режиму S із довгою преамбулою має отримати будь-які переваги від довгої преамбули.
Зауважте, що приймач режиму S короткої преамбули виявить преамбулу та отримає пакети як з короткої преамбули Mode S
передавач і передавач режиму S з довгою преамбулою; тому, загалом, зчитувач лічильника повинен використовувати коротку преамбулу конфігурації приймача Mode S.
Кодування/декодування
Специфікація Wireless M-bus вимагає двох різних методів кодування. Манчестерське кодування використовується для режимів S та режимів R. Манчестерське кодування також використовується для зв’язку «інший-метр» у моделі T. Зв’язок «метр-інший» моделі T використовує 3 із 6 кодувань.
1. Манчестерське кодування/декодування
Манчестерське кодування історично поширене в радіочастотних системах для забезпечення надійного відновлення годинника та відстеження за допомогою простого та недорогого модему. Однак сучасна високопродуктивна радіостанція, як-от Si443x, не потребує манчестерського кодування. Манчестерське кодування підтримується переважно для сумісності з існуючими стандартами, але швидкість передачі даних для Si443x фактично подвоюється, якщо не використовується манчестерське кодування.
Si443x підтримує манчестерське кодування та декодування всього пакету апаратно. На жаль, слово синхронізації не закодовано в Манчестері. Для слова синхронізації навмисно вибрано недійсну манчестерську послідовність. Це робить манчестерське кодування несумісним з більшістю існуючих радіоприймачів, включаючи 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 nibble кодує фрагмент даних, а потім записує його до FIFO. Мікросхеми інвертуються перед записом у FIFO, щоб врахувати вимоги до інвертованої преамбули.
При прийомі кожен байт у FIFO складається з восьми мікросхем і декодується в один фрагмент даних. Функція блоку читання зчитує по одному байту з FIFO і викликає функцію байта декодування. Мікросхеми інвертуються після зчитування з FIFO для врахування вимог інвертованої преамбули. Кожен байт мікросхем, закодованих у Манчестері, декодується у шматок даних. Декодований фрагмент записується в буфер RX за допомогою функції буфера RX для запису.
Зверніть увагу, що як кодування, так і декодування виконуються по одному фрагменту даних за раз на льоту. Для кодування в буфер знадобиться додатковий буфер, подвійний розмір незакодованих даних. Кодування та декодування набагато швидше, ніж найшвидша підтримувана швидкість передачі даних (100 тисяч мікросхем в секунду). Оскільки Si443x підтримує багатобайтове читання та запис у FIFO, є невеликі накладні витрати на використання лише однобайтового читання та запису. Накладні витрати становлять приблизно 10 мкс для 100 закодованих мікросхем. Перевагою є економія оперативної пам'яті на 512 байт.
2. Три з шести кодування декодування
Метод кодування «три з шести», зазначений у EN-13757-4, також реалізовано у мікропрограмі на MCU. Це кодування використовується для високошвидкісного (100 тис мікросхем в секунду) режиму 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 записів займає значно більше часу.
Поштамбл
Специфікація Wireless M-bus має особливі вимоги до причепа або причепа. Для всіх режимів мінімум – дві мікросхеми, а максимум – вісім мікросхем. Оскільки мінімальна атомна одиниця для FIFO становить один байт, для режимів S і R використовується 8-чіповий трейлер. Поштамбула режиму 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-поле, обчислити кількість закодованих байтів і записати значення в регістр Packet Length до отримання найкоротшої можливої довжини пакета. Найкоротше допустиме L-поле для рівня PHY становить 9, що дає 12 незакодованих байтів. Це дає 18 закодованих байтів для моделі T. Перші два байти вже декодовані. Таким чином, регістр довжини пакету повинен оновлюватися за 16 байт зі швидкістю 100 кбіт/с або 1.28 мілісекунд. Це не проблема для 8051, що працює на швидкості 20 MIPS.
Кількість байтів, які будуть отримані, не включає поштову емблему, за винятком 255-чипової емблеми, яка використовується для пакетів режиму T з непарною довжиною пакета. Таким чином, приймач не потребує поштового запису, за винятком пакетів непарної довжини Model T. Ця поштамбула потрібна лише для надання цілого числа закодованих байтів. Зміст постамбули ігнорується; отже, якщо поштамбула не буде передана, чотири мікросхеми шуму будуть прийняті та ігноровані. Оскільки загальна кількість закодованих байтів обмежена 0 (XNUMXxFF), реалізація обмежує максимальне L-поле для різних режимів.
Таблиця 8. Обмеження розміру пакета
закодований | розшифровано | M-Bus | ||||
байтів | байтів | L-поле | ||||
дек | гекса | дек | гекса | дек | гекса | |
Режим S | 255 | FF | 127 | 7 Ф | 110 | 6E |
Режим T (метр-інший) | 255 | FF | 169 | A9 | 148 | 94 |
Режим R | 255 | FF | 127 | 7 Ф | 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 Almost Empty встановлено на 16 байт (25%). Після кожної події IRQ зчитується регістр статусу 2. Першим перевіряється біт Packet Sent, і, якщо пакет був відправлений не повністю, наступні 48 байтів закодованих даних записуються до FIFO. Це продовжується до тих пір, поки не будуть записані всі закодовані байти і не відбудеться переривання Packet Sent.
1. Рецепція
Під час прийому спочатку ввімкнено лише переривання Sync Word. Після отримання синхронізуючого слова переривання синхронізованого слова вимкнено, а переривання FIFO Almost Full включено. Майже повний поріг FIFO спочатку встановлюється на 2 байти. Перше переривання FIFO Almost Full використовується, щоб дізнатися, коли отримано два байти довжини. Після отримання довжини довжина декодується і обчислюється кількість закодованих байтів. Порогове значення RX FIFO майже повністю встановлюється на 48 байт. RX FIFO майже заповнений, а переривання дійсних пакетів увімкнено. Після наступної події IRQ зчитується регістр статусу 1. Спочатку перевіряється біт дійсний пакет, а потім перевіряється біт FIFO Almost Full. Якщо встановлено лише біт RX FIFO Almost Full, наступні 48 байтів зчитуються з FIFO. Якщо встановлений дійсний біт пакета, залишок пакета зчитується з FIFO. MCU відстежує, скільки байтів було прочитано, і припиняє читання після останнього байту.
Шар зв'язку даних
Модуль канального рівня реалізує канальний рівень, сумісний з 13757-4:2005. Канальний рівень даних (LINK) забезпечує інтерфейс між фізичним рівнем (PHY) і прикладним рівнем (AL).
Канальний рівень даних виконує такі функції:
- Надає функції для передачі даних між PHY і AL
- Генерує CRC для вихідних повідомлень
- Виявляє помилки CRC у вхідних повідомленнях
- Забезпечує фізичну адресацію
- Підтверджує передачу для режимів двостороннього зв’язку
- Фреймує біти даних
- Виявляє помилки кадрування у вхідних повідомленнях
Формат кадру посилального шару
Формат кадру бездротової M-Bus, який використовується в EN 13757-4:2005, походить від формату кадру FT3 (тип кадру 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.
Канальний рівень відповідає за обчислення L-поля при передачі. Канальний рівень буде використовувати L-поле під час прийому.
Зверніть увагу, що L-поле не вказує довжину корисного навантаження PHY або кількість закодованих байтів. Після передачі PHY обчислить довжину корисного навантаження PHY і кількість закодованих байтів. Після отримання PHY декодує L-поле та обчислює кількість байтів для декодування. - С-поле
C-поле — це поле керування кадром. Це поле визначає тип кадру і використовується для примітивів служби обміну даними каналу. Поле C вказує тип кадру – НАДІСЛАТИ, ПІДТВЕРДИТИ, ЗАПИТИ або ВІДПОВІДАТИ. У випадку кадрів НАДІЛАННЯ та ЗАПИТУ, поле C вказує, чи очікується ПІДТВЕРДЖЕННЯ чи ВІДПОВІДЬ.
При використанні базової функції Link TX можна використовувати будь-яке значення C. При використанні Link Service Primitives поле C заповнюється автоматично відповідно до EN 13757-4:2005. - М-Поле
М-поле – це код виробника. Виробники можуть запросити трибуквенний код із наведеного нижче web адреса: http://www.dlms.com/flag/INDEX.HTM Кожен символ трибуквенного коду кодується як п'ять біт. 5-бітовий код можна отримати, взявши код ASCII і віднявши 0x40 («A»). Три 5-бітові коди об'єднані, щоб отримати 15-бітові. Найзначніший біт дорівнює нулю. - А-Поле
Поле адреси є унікальною 6-байтовою адресою для кожного пристрою. Унікальна адреса повинна бути призначена виробником. Кожен виробник несе відповідальність за те, щоб кожен пристрій мав унікальну 6-байтну адресу. Адреса для кадрів надсилання та запиту є власною адресою лічильника чи іншого пристрою. Кадри даних підтвердження та відповіді надсилаються з використанням адреси вихідного пристрою. - CI-поле
Поле CI є заголовком програми і визначає тип даних у корисному навантаженні даних програми. Хоча EN13757-4:2005 визначає обмежену кількість значень, примітиви служби посилання дозволять використовувати будь-яке значення. - CRC
CRC зазначено в EN13757-4:2005.
Поліном CRC:
X16 + x13 + x12 + x11 + x10 + x8 + x6 + x5 + x2 + 1
Зверніть увагу, що CRC M-Bus обчислюється для кожного 16-байтового блоку. В результаті кожні 16 байт даних вимагають 18 байтів для передачі,
Додаткова інформація
Для отримання додаткової інформації про реалізацію канального рівня див. «AN452: Посібник програмістів стека Wireless M-Bus».
Управління живленням
На малюнку 2 показана часова шкала керування живленням для лічильника, наприкладample за допомогою режиму T1.
MCU повинен бути в режимі сну, коли це можливо, щоб заощадити енергію. У цьому впрampMCU перебуває у сплячому режимі, коли RTC працює, очікує на запуск радіокристала та під час передачі з FIFO. MCU прокинеться від сигналу EZRadioPRO IRQ, підключеного до пробудження Port Match.
При передачі повідомлень, довше одного блоку, MCU повинен прокинутися, щоб заповнити FIFO (на основі майже порожнього переривання FIFO), а потім повернутися до сну.
MCU повинен перебувати в режимі очікування, що працює від генератора низької потужності або генератора пакетного режиму під час зчитування з АЦП. Для АЦП потрібен годинник SAR.
Коли EZRadioPRO не використовується, він повинен перебувати в режимі вимкнення з високим рівнем контакту SDN. Для цього потрібне дротове підключення до MCU. Регістри EZ Radio Pro не зберігаються в режимі вимкнення; таким чином, EZRadioPro ініціалізується на кожному інтервалі RTC. Ініціалізація радіо займає менше 100 мкс і зберігає 400 нА. Це призводить до економії енергії на 10 мкДж на основі 10-секундного інтервалу.
Кристал EZRadioPRO займає близько 16 мс для POR. Цього достатньо, щоб обчислити CRC приблизно для восьми блоків. MCU повернеться в режим сну, якщо він завершить усі CRC до того, як кристал стабілізується. Якщо потрібне шифрування, його також можна запустити під час очікування на кварцевому генераторі.
MCU повинен працювати на частоті 20 МГц з використанням генератора малої потужності для більшості завдань. Завдання, які вимагають точного тайм-ауту, повинні використовувати точний осцилятор і режим очікування замість режиму сну. RTC забезпечує достатню роздільну здатність для більшості завдань. Часовий графік керування живленням для лічильника T2, наприкладample додаток показано на малюнку 3.
Реалізація трансивера повинна бути оптимізована для нормального випадку, коли лічильник прокидається, а зчитувач відсутній. Мінімальні/максимальні тайм-аути ACK є достатньо тривалими, щоб можна було використовувати C8051F930 RTC і перевести MCU у режим сну.
Варіанти збірки надаються для зчитувачів із живленням від мережі або USB, яким не потрібно використовувати режим сну. Замість сну буде використовуватися режим очікування, щоб USB та UART могли переривати роботу MCU.
Студія простоти
Доступ в один клік до MCU та бездротових інструментів, документації, програмного забезпечення, бібліотек вихідного коду тощо. Доступно для Windows,
Mac і Linux!
![]() |
![]() |
![]() |
![]() |
Портфоліо IoT www.silabs.com/IoT |
ПЗ/АПП www.silabs.com/simplicity |
якість www.silabs.com/quality |
Підтримка та спільнота 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 Logo®, USBXpress® та інші є торговими марками або зареєстрованими торговими марками Silicon Labs. ARM, CORTEX, Cortex-M3 і thumbs є торговими марками або зареєстрованими торговими марками ARM Holdings. Keil є зареєстрованою торговою маркою ARM Limited. Усі інші продукти або торгові назви, згадані тут, є торговими марками відповідних власників.
Silicon Laboratories Inc.
400 Західний Сезар Чавес
Остін, Техас 78701
США
http://www.silabs.com
Документи / Ресурси
![]() |
Реалізація програмного забезпечення бездротової M-BUS SILICON LABS AN451 [pdfПосібник користувача SILICON LABS, C8051, MCU і, EZRadioPRO, бездротова M-шина, бездротова, M-BUS, програмне забезпечення, впровадження, AN451 |