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 сериялық протоколы, және ол тармағында анықталғанUG100. UART негізіндегі NCP үшін EZSP деректерін UART арқылы сенімді тасымалдау үшін төменгі деңгей протоколы жүзеге асырылады, яғниКҮЛпротокол, қысқашаАсинхронды сериялық хост. ASH туралы қосымша ақпаратты мына жерден қараңызUG101жәнеUG115.

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

1

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

2

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

2. Жақтау

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

3

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

|:-|:-|:-|

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

|2|Деректерді рандомизациялау|UG101 4.3 бөлімі|

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

|4|БҚК есептеңіз|UG101-тің 2.3-бөлімі|

|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 шығу байтын енгізіңіз – Осы резервтелген байттың 5 битін кері айналдырыңыз

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

8

2.6. Аяқтау жалаушасын қосыңыз

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

3. Жақтауды жою процесі

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

4. Әдебиеттер


Жіберу уақыты: 08 ақпан 2022 ж
WhatsApp онлайн чаты!