Zigbee EZSP UART турында

Автор: TorchIoTBootCamp
Ссылка : https: //zhuanlan.zhihu.com/p/339700391
Куорадан

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 турында тулырак мәгълүмат алу өчен, зинһар, карагыз.UG101һәмUG115.

EZSP һәм ASH арасындагы бәйләнешне түбәндәге схема белән күрсәтергә мөмкин:

1

EZSP һәм ASH протоколының мәгълүмат форматын түбәндәге схема белән күрсәтергә мөмкин:

2

Бу биттә без UART мәгълүматларын кадрлау процессын һәм Zigbee шлюзында еш кулланыла торган кайбер төп кадрларны тәкъдим итәчәкбез.

2. Рамкалаштыру

Гомуми рамкалаштыру процессын түбәндәге схема белән күрсәтергә мөмкин:

3

Бу диаграммада мәгълүматлар EZSP кадрын аңлата. Гомумән алганда, кадрлаштыру процесслары: |No|Addım|Sсылтама|

|:-|:-|:-|

|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 төрле контроль байт бар. Беренче өчесе EZSP мәгълүматлары булган гомуми кадрлар өчен кулланыла, шул исәптән DATA, ACK һәм NAK. Соңгы өчесе 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 end flag өстәү. Шуннан соң, мәгълүматларны UART портына җибәрергә мөмкин.

3. Рамканы бетерү процессы

UARTтан мәгълүматлар алынганда, аны декодлау өчен безгә кире адымнарны башкарырга гына кирәк.

4. Сылтамалар


Бастырылган вакыты: 2022 елның 8 феврале
WhatsApp онлайн чаты!