Написано старшим советником RF-star XCODER (эссеистом We-Media)
1. Из-за различий между версиями стека протоколов TI ZigBee, как выбрать правильный стек протоколов для разработки продукта?
Стек протоколов TI ZigBee Z-Stack разработан с Z-Stack 0.1 до Z-Stack 2.5.1a и более поздних версий Z-Stack Home 1.2.1, Z-Stack Lighting 1.0.2, Z-Stack Energy 1.0. 1, Z-Stack Mesh 1.0.0. В процессе обновления стека протоколов TI в основном выполнила два аспекта стека протоколов.
1) Добавьте некоторые новые функции в соответствии со спецификацией ZigBee ZigBee Alliance.
Например, ZigBee 2007 представляет собой древовидную маршрутизацию. В ZigBee Pro появляется Mesh routing, и предлагаются такие алгоритмы маршрутизации, как MTO и Source Routing. TI добавляет соответствующие новые функции в стек протоколов, чтобы исправить некоторые связанные ошибки в спецификациях, например, с неоднозначными описаниями.
2) Исправить ошибку в самом стеке протокола TI ZigBee.
Различие стека протоколов между версией и предыдущей версией можно найти в примечании к выпуску.
После версии Z-Stack 2.5.1a стек протоколов TI больше не выпускался непосредственно в форме Z-Stack 2.6.x, а был выпущен в форме профиля приложения.
Причина в том, что TI хочет, чтобы разработчики выбирали более целевой стек протоколов для разработки в соответствии с реальным приложением. Стек протоколов, такой как Z-stack Home 1.2.1, в основном состоит из следующих двух частей.
1) Core Stack, начало этой части является продолжением Z-Stack 2.5.1a и более поздних версий, его можно найти в Z-Stack Core Release Notes.txt, Version 2.6.2.
2) Стек протоколов приложения связан с профилем, который в основном связан с фактическим приложением. Стек протоколов домашней автоматизации связан с реализацией ZigBee Home Automation Profile. Точно так же Z-Stack Lighting 1.0.2 и Z-Stack Energy 1.0.1 также являются Core Stack с профилем приложения.
A. Z-Stack Home 1.2.2a разработан для продуктов, связанных с умным домом.
б) Z-Stack Lighting 1.0.2 разработана для продуктов, связанных с ZLL.
c.Z-Stack Energy 1.0.1 разработана для интеллектуального энергоснабжения, счетчиков, домашних дисплеев и других сопутствующих товаров.
d.Z-Stack Mesh 1.0.0 разработан для продуктов, связанных с частными приложениями, которые используют только стандартные функции, связанные с протоколом ZigBee, такие как маршрутизация Mesh и т. д. Уровень приложения определяется разработчиком.
После того, как ZigBee Alliance выпустил ZigBee 3.0 протокол, последний стек протоколов ZigBee Z-стек 3.0 , который в настоящее время поддерживает CC2530, CC2538, CC2652R, CC265P.
2. Как проводить тестирование и сертификацию продуктов ZigBee, что нужно понимать и какой процесс нужно выполнять?
Вот пример разработки стандартных продуктов, связанных с ZigBee Home Automation. Во-первых, когда разработчики разрабатывают продукты, они должны разрабатывать продукты в соответствии с продуктами, описанными в Спецификация профиля ZigBee Home Automation который можно скачать на сайте www.zigbee.org. После завершения разработки продукта разработчикам необходимо понять Спецификация тестирования профиля ZigBee Home Automation который также можно скачать с www.zigbee.org. В документе описаны соответствующие тестовые задания, которые необходимо протестировать конкретному продукту в Test House. Помимо двух вышеупомянутых документов, существует также документ PICS. В третьем документе описаны функции, поддерживаемые продуктами, которые необходимо сертифицировать и протестировать. Разработчики сравнивают и подтверждают функции PICS в соответствии с фактическими функциями разработанных продуктов и функциями, требуемыми в спецификации. Далее следует процесс тестирования.
1) Присоединяйтесь к ZigBee Alliance, там будет испытательная лаборатория, которая поможет пройти тест.
2) Отправьте образцы в испытательную лабораторию и заполните файл PICS.
3) После первого раунда предварительного тестирования испытательная лаборатория сообщает результаты тестирования, а разработчик изменяет образец кода. (Если нужно)
4) Проверьте модифицированный образец в испытательной лаборатории, а затем запустите формальный тест.
5) Разработчик завершает подготовку и подачу материалов заявки на онлайн-сертификацию ZigBee Alliance с помощью испытательной лаборатории.
6) Испытательная лаборатория отправляет официальный отчет об испытаниях в ZigBee Alliance. Альянс рассмотрит и выдаст сертификат.
В настоящее время существует семь испытательных лабораторий, которые могут проводить стандартное тестирование ZigBee.
https://zigbeealliance.org/certification/testing-providers/
3. Как выбрать 64-битный MAC-адрес устройства?
В CC2530 / CC2538 / CC2630 есть два адреса IEEE, один называется первичным адресом IEEE, а другой - вторичным адресом. Первичный адрес IEEE хранится на информационной странице чипа. Этот основной адрес приобретается TI у ассоциации IEEE, и каждый из них уникален. Пользователь может только читать это значение и не может стирать / изменять. Чтение адреса в стеке протокола может получить Osal_memcpy (aExtendedAddress, (uint8 *) (P_INFOPAGE + HAL_INFOP_IEEE_OSET), Z_EXTADDR_LEN). Вторичный адрес хранится на последней странице Flash, и пользователь может выполнять чтение / запись с помощью функции HalFlashRead (HAL_FLASH_IEEE_PAGE, HAL_FLASH_IEEE_OSET, aExtendedAddress, Z_EXTADDR_LEN).
Как работает стек протоколов для выбора первичного адреса IEEE или вторичного адреса в качестве MAC-адреса устройства? Конкретная операция находится в zmain_ext_addr (void).
1) Считайте адрес IEEE из NV. Если MAC-адрес уже существует (ни один из которых не равен 0xFF), то это может быть MAC-адрес.
2) Если MAC-адрес не существует в 1), его можно прочитать из места хранения вторичного адреса IEEE. Если он существует в месте хранения вторичного адреса IEEE (ни один из которых не равен 0xFF), адрес может быть записан в NV как MAC-адрес позже.
3) Если MAC-адрес не указан в пункте 2), его можно прочитать из места хранения первичного адреса IEEE. Если он существует в месте хранения первичного адреса IEEE (ни один из которых не равен 0xFF), адрес может быть записан в NV как MAC-адрес позже.
4) Если MAC-адрес не указан в пункте 3), случайным образом генерируется 64-битный переменный адрес, который записывается в NV как MAC-адрес.
4. Конечное устройство - маломощное устройство с батарейным питанием. После того, как узел отключен от сети, как запретить узлам непрерывный поиск в сети или как увеличить интервал между отправкой запросов маяков?
1) Начать поиск в сети: uint8 ZDApp_StartJoiningCycle (void)
Прекратить поиск в сети: uint8 ZDApp_StopJoiningCycle (void)
2) Измените цикл отправки Beacon Request.
Измените переменную: zgDefaultStartingScanDuration
// Значения порядка маяков
#define BEACON_ORDER_NO_BEACONS 15
#define BEACON_ORDER_4_MINUTES 14 // 245760 миллисекунд
#define BEACON_ORDER_2_MINUTES 13 // 122880 миллисекунд
#define BEACON_ORDER_1_MINUTE 12 // 61440 миллисекунд
#define BEACON_ORDER_31_SECONDS 11 // 30720 миллисекунд
#define BEACON_ORDER_15_SECONDS 10 // 15360 MSecs
#define BEACON_ORDER_7_5_SECONDS 9 // 7680 MSecs
#define BEACON_ORDER_4_SECONDS 8 // 3840 MSecs
#define BEACON_ORDER_2_SECONDS 7 // 1920 MSecs
#define BEACON_ORDER_1_SECOND 6 // 960 MSecs
#define BEACON_ORDER_480_MSEC 5
#define BEACON_ORDER_240_MSEC 4
#define BEACON_ORDER_120_MSEC 3
#define BEACON_ORDER_60_MSEC 2
#define BEACON_ORDER_30_MSEC 1
#define BEACON_ORDER_15_MSEC 0
5. Как заставить конечное устройство перейти в состояние пониженного энергопотребления и как установить время сна?
После включения POWER_SAVING в определении макроса стека протоколов и последующего действия -DRFD_RCVC_ALWAYS_ON = FALSE в файле f8wConfig.cfg конечное устройство может перейти в состояние сна.
Время ожидания определяется планированием операционной системы OSAL. Каждое время сна основывается на последнем тайм-ауте события как времени сна. Подробности объясняются в функции hal_sleep стека протоколов.
Этот тайм-аут в основном делится на две категории: одна - это тайм-аут событий прикладного уровня, а другая - тайм-аут событий MAC-уровня.
1) Время ожидания прикладного уровня получается osal_next_timeout (); в функции osal_pwrmgr_powerconserve (void).
2) Время ожидания уровня MAC получается с помощью MAC_PwrNextTimeout (); в функции halSleep (uint16 osal_timeout).
6. Что нового в стеке протоколов ZigBee 3.0?
Пожалуйста, перейдите по ссылке ниже, где представлены дополнения к стеку протоколов ZigBee 3.0 по сравнению с предыдущей версией ZigBee Home Automation / ZigBee Light Link.
https://www.ti.com/lit/an/swra615a/swra615a.pdf?ts=1627190581608
7. Подробное объяснение переключения состояний оконечного оборудования в стеке протокола TI ZigBee.
8. Различия между OAD и OTA в стеке протоколов TI.
OAD - это загрузка по воздуху, а OTA - по воздуху. Функции этих двух реализаций одинаковы, и обе можно назвать удаленными обновлениями программы. В раннем стандарте протокола ZigBee не было стандарта для беспроводного обновления программы узлов, но у многих клиентов есть к нему требования. Поэтому компания TI разработала набор стеков протоколов для беспроводного обновления программы и назвала его OAD. ZigBee Alliance осознал, что спрос растет, затем они также определили стандарт для беспроводных обновлений и назвали OTA, что также относится к реализации TI OAD и внесло соответствующие изменения. Поэтому в раннем стеке протоколов TI беспроводное обновление называется OAD, а позже в ZigBee Alliance оно называется OTA.
9. Если кварцевый генератор 32K не впаян в устройство с низким энергопотреблением, как изменить стек протоколов Z-Stack?
В стеке протоколов Z-Stack, стабильно ли используемый кварцевый генератор, будет проверяться в процессе инициализации. Если кварцевый генератор 32K не припаян, необходимо изменить следующий код. Стек протоколов TI Z-Stack по умолчанию использует кварцевый генератор 32K.
В файле hal_board_cfg.h #define OSC32K_CRYSTAL_INSTALLED FALSE
10. Если необходимо разработать частное приложение на основе сети ZigBee Mesh, какой стек протоколов следует выбрать?
Многие пользователи в некоторых промышленных приложениях хотят использовать только функции ячеистой сети ZigBee в своих собственных системах или продуктах, и им не нужно следовать спецификациям прикладного уровня, определенным ZigBee. Для таких требований приложения, как выбрать подходящий стек протоколов TI для разработки продукта? http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/t/132197.aspx
11. При использовании CC2630 / CC2650 ZigBee для разработки, могу ли я отлаживать с помощью точки останова в коде стека ядра?
да. Вы должны загрузить файл, соответствующий коду точки останова, и открыть его заранее, а затем выполнить отладку.
12. Как координатор Zigbee выбирает подходящий канал для создания сети?
Создание сети Zigbee должно выполняться координатором. В сети Zigbee есть только один координатор. Координатор Zigbee в основном завершает выбор сетевого канала и генерацию PANID при создании сети. Чтобы выбрать канал, нужно выполнить два шага.
1) Пассивное сканирование также называется энергетическим сканированием. Пассивное сканирование означает, что координатор включает свой приемник, а затем последовательно просматривает ранее установленный список каналов. После сканирования будет получено значение энергии каждого канала. Эта энергия в основном поступает из других сетей Zigbee или других беспроводных сетей 2,4 ГГц. Координатор будет считать канал, значение энергии которого выше, чем заданное пороговое значение, как имеющий более сильные помехи, и удалит канал.
2) Активное сканирование. В каналах, оставшихся после первого раунда сканирования, запросы маяков отправляются последовательно. Если соответствующий пакет данных маяка получен, считается, что в канале есть другие устройства Zigbee. Наконец, координатор выберет PANID, который не имеет других сетей Zigbee, или канал с наименьшим количеством сетей Zigbee, чтобы установить свою собственную сеть и установить PANID, который не конфликтует.
13. Как удалить пользовательский интерфейс и использовать стек протоколов TI Zigbee 3.0 для быстрого перехода в режим разработки продукта?
https://e2echina.ti.com/question_answer/wireless_connectivity/zigbee/f/104/t/146528
14. Как оптимизировать Flash и RAM CC2530?
http://www.ti.com/lit/wp/swra635/swra635.pdf
CC2650, CC2538, CC2652R, CC2630, Z-стек, CC2530