Zigbee EZSP UART туралы

Авторы: TorchIoTBootCamp
Сілтеме:https://zhuanlan.zhihu.com/p/339700391
Quora компаниясынан

1. Кіріспе

Silicon Labs компаниясы Zigbee шлюзін жобалау үшін хост+NCP шешімін ұсынды. Бұл архитектурада хост NCP-мен UART немесе SPI интерфейсі арқылы байланыса алады. Көбінесе UART қолданылады, себебі ол SPI-ге қарағанда әлдеқайда қарапайым.

Silicon Labs сонымен қатар негізгі бағдарлама үшін үлгі жоба ұсынды, ол үлгі болып табыладыZ3GatewayHostҮлгі Unix тәрізді жүйеде жұмыс істейді. Кейбір тұтынушылар RTOS-та жұмыс істей алатын хост үлгісін қалауы мүмкін, бірақ өкінішке орай, әзірге RTOS негізіндегі хост үлгісі жоқ. Пайдаланушылар RTOS негізінде өздерінің хост бағдарламасын әзірлеуі керек.

Теңшелген хост бағдарламасын жасамас бұрын UART шлюз хаттамасын түсіну маңызды. UART негізіндегі NCP және SPI негізіндегі NCP үшін хост NCP-мен байланысу үшін EZSP хаттамасын пайдаланады.EZSPқысқаEmberZnet сериялық протоколыжәне ол анықталғанUG100UART негізіндегі NCP үшін EZSP деректерін UART арқылы сенімді түрде тасымалдау үшін төменгі деңгейлі хаттама енгізілген, яғниASHпротокол, қысқартылғанАсинхронды тізбекті хостASH туралы қосымша ақпарат алу үшін мына сілтемені қараңыз.UG101жәнеUG115.

EZSP және ASH арасындағы байланысты келесі диаграмма арқылы көрсетуге болады:

1

EZSP және ASH хаттамасының деректер форматын келесі диаграммамен көрсетуге болады:

2

Бұл бетте біз UART деректерін кадрлау процесін және Zigbee шлюзінде жиі қолданылатын кейбір негізгі кадрларды таныстырамыз.

2. Рамалау

Жалпы құрылымдау процесін келесі диаграммамен көрсетуге болады:

3

Бұл диаграммада деректер EZSP кадрын білдіреді. Жалпы, кадрлау процестері: |Жоқ|Қадам|Сілтеме|

|:-|:-|:-|

|1|EZSP жақтауын толтырыңыз|UG100|

|2|Деректерді кездейсоқ бөлу|UG101 құжатының 4.3-бөлімі|

|3|Басқару байтының|UG101 2 және 3-тарауларын қосу|

|4|UG101 құжатының 2.3-бөлімі бойынша CRC есептеңіз|

|5|Байт толтыру|UG101 құжатының 4.2-бөлімі|

|6|Аяқталу жалаушасын қосу|UG101 құжатының 2.4-бөлімі|

2.1. EZSP жақтауын толтырыңыз

EZSP кадр пішімі UG100 құжатының 3-тарауында көрсетілген.

4

SDK жаңартылған кезде бұл формат өзгеруі мүмкін екеніне назар аударыңыз. Пішім өзгерген кезде біз оған жаңа нұсқа нөмірін береміз. Бұл мақала жазылған кезде EZSP нұсқасының соңғы нөмірі 8 болды (EmberZnet 6.8).

EZSP кадр пішімі әртүрлі нұсқалар арасында әртүрлі болуы мүмкін болғандықтан, хост пен NCP міндетті түрде талап етедіКЕРЕКсол EZSP нұсқасымен жұмыс істейді. Әйтпесе, олар күткендей байланыса алмайды.

Ол үшін хост пен NCP арасындағы бірінші команда нұсқа командасы болуы керек. Басқаша айтқанда, хост кез келген басқа байланысқа дейін NCP EZSP нұсқасын қайта іздеуі керек. Егер EZSP нұсқасы хост жағының EZSP нұсқасынан өзгеше болса, байланыс үзілуі керек.

Мұның артындағы жасырын талап - нұсқа командасының форматыЕШҚАШАН ӨЗГЕРМЕҢІЗEZSP нұсқасының командалық пішімі төмендегідей:

5

Параметр өрісінің түсіндірмелері мен нұсқа жауабының форматын UG100 4-тарауынан табуға болады. Параметр өрісі - хост бағдарламасының EZSP нұсқасы. Бұл мақала жазылған кезде ол 8 болады.
7
Мысалы: TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出

2.2. Деректерді кездейсоқ таңдау

Егжей-тегжейлі рандомизация процесі UG101 құжатының 4.3 бөлімінде сипатталған. EZSP фреймінің барлығы рандомизацияланады. Кездейсоқтық EZSP фреймін және жалған кездейсоқ тізбекті алып тастау немесе алып тастау арқылы жүзеге асырылады.

Төменде жалған кездейсоқ тізбекті генерациялау алгоритмі берілген.

  • ранд0 = 0×42
  • егер рандінің 0 биті 0-ге тең болса, ранд+1 = ранд >> 1
  • егер рандінің 0 биті 1-ге тең болса, ранд+1 = (ранди >> 1) ^ 0xB8

2.3. Басқару байттарын қосыңыз

Басқару байт бір байттық деректер болып табылады және кадрдың басына қосылуы керек. Пішім төмендегі кестеде көрсетілген:

6

Барлығы 6 түрлі басқару байттары бар. Алғашқы үшеуі DATA, ACK және NAK сияқты EZSP деректері бар жалпы кадрлар үшін қолданылады. Соңғы үшеуі RST, RSTACK және ERROR сияқты жалпы EZSP деректерінсіз қолданылады.

RST, RSTACK және ERROR пішімі 3.1-ден 3.3-ке дейінгі бөлімдерде сипатталған.

2.4. CRC есептеңіз

16-биттік CRC басқару байтынан деректердің соңына дейінгі байттар бойынша есептеледі. Стандартты CRCCCITT (g(x) = x16 + x12 + x5 + 1) 0xFFFF мәніне инициализацияланған. Ең маңызды байт ең кіші байттан бұрын келеді (үлкен-эндиан режимі).

2.5. Байтты толтыру

UG101 құжатының 4.2 бөлімінде сипатталғандай, арнайы мақсатта пайдаланылатын кейбір резервтелген байт мәндері бар. Бұл мәндерді келесі кестеден табуға болады:

7

Бұл мәндер кадрда пайда болған кезде, деректерге арнайы өңдеу жүргізіледі. – 0x7D escape байтын резервтелген байттың алдына енгізіңіз – Сол резервтелген байттың 5-битін кері айналдырыңыз

Төменде осы алгоритмнің бірнеше мысалдары келтірілген:

8

2.6. Аяқтау белгісін қосыңыз

Соңғы қадам - ​​кадрдың соңына 0x7E аяқталу жалаушасын қосу. Осыдан кейін деректерді UART портына жіберуге болады.

3. Рамасыздандыру процесі

UART-тан деректер алынған кезде, оны декодтау үшін кері қадамдарды орындау керек.

4. Сілтемелер


Жарияланған уақыты: 2022 жылғы 8 ақпан
WhatsApp арқылы онлайн чат!