Аўтар: TorchiotbootCamp
Спасылка: https: //zhuanlan.zhihu.com/p/339700391
Ад: Quora
1. Уводзіны
Silicon Labs прапанавала рашэнне Host+NCP для дызайну Gateway Zigbee. У гэтай архітэктуры хост можа мець зносіны з NCP праз інтэрфейс UART або SPI. Часцей за ўсё UART выкарыстоўваецца, бо гэта значна прасцей, чым SPI.
Silicon Labs таксама прадставіла ўзор праекта для праграмы гаспадара, якая з'яўляецца ўзорамZ3gatewayhost
. Узор працуе на сістэме, падобнай на UNIX. Некаторыя кліенты могуць захацець узор гаспадара, які можа працаваць на RTOS, але, на жаль, пакуль няма ўзору гаспадара на базе RTOS. Карыстальнікі павінны распрацаваць уласную праграму гаспадара на аснове RTOS.
Важна зразумець пратакол шлюза UART, перш чым распрацаваць індывідуальную праграму хоста. Як для UART NCP, так і для NCP на аснове UART, хост выкарыстоўвае пратакол EZSP для зносін з NCP.Ezspкароткае дляСерыйны пратакол Emberznet, і гэта вызначана ўUG100. Для UART на аснове NCP, пратакол ніжняга ўзроўню рэалізуецца для надзейнасці дадзеных EZSP, гэтаПопелПратакол, скарочаны дляАсінхронны серыйны гаспадар. Для больш падрабязнай інфармацыі пра попел, калі ласка, звярніцеся даUG101іUG115.
Сувязь паміж EZSP і ASH можа быць праілюстравана наступнай схемай:
Фармат дадзеных EZSP і пратакол ASH можна праілюстраваць наступнай схемай:
На гэтай старонцы мы прадставім працэс апраўлення дадзеных UART і некаторых ключавых кадраў, якія часта выкарыстоўваюцца ў Gateway Zigbee.
2. Кампанія
Агульны працэс каркаса можа быць праілюстраваны наступнай графікай:
У гэтай графіцы дадзеныя азначаюць кадр EZSP. Увогуле, працэсы апраўлення: | не | крок | спасылка |
|:-|:-|:-|
| 1 | Запоўніце кадр EZSP | UG100 |
| 2 | Рандымізацыя дадзеных | Раздзел 4.3 UG101 |
| 3 | Дадайце байт кіравання | Chap2 і Chap3 з UG101 |
| 4 | Вылічыце CRC | Раздзел 2.3 UG101 |
| 5 | Начынне байт | Раздзел 4.2 UG101 |
| 6 | Дадайце канцавы сцяг | Раздзел 2.4 UG101 |
2.1. Запоўніце кадр EZSP
Фармат кадра EZSP ілюстраваны ў раздзеле 3 UG100.
Звярніце ўвагу, што гэты фармат можа змяніцца, калі мадэрнізацыя SDK. Калі фармат зменіцца, мы дамо яму новы нумар версіі. Апошні нумар версіі EZSP - 8, калі напісаны гэты артыкул (Emberznet 6.8).
Паколькі фармат кадра EZSP можа адрознівацца паміж рознымі версіямі, існуе абавязковае патрабаванне, каб хост і NCPМусіцьПрацуйце з той жа версіяй EZSP. У адваротным выпадку яны не могуць мець зносіны, як чакаецца.
Каб дасягнуць гэтага, першай камандай паміж хостам і NCP павінна быць каманда версіі. Іншымі словамі, хост павінен атрымаць версію EZSP NCP перад любой іншай камунікацыяй. Калі версія EZSP адрозніваецца з версіяй EZSP з боку хоста, сувязь павінна быць спынена.
Няяўнае патрабаванне гэтага заключаецца ў тым, што фармат каманды версіі можаНіколі не мяняйце. Фармат каманд EZSP версія прыведзены ніжэй:
链接: https: //zhuanlan.zhihu.com/p/339700391
来源: 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。
2.2. Рандымізацыя дадзеных
Падрабязны працэс рандомизации апісаны ў раздзеле 4.3 UG101. Увесь кадр EZSP будзе рандомізаваны. Рандымізацыя заключаецца ў эксклюзіўнай або кадры EZSP і паслядоўнасці псеўда-ранда.
Ніжэй прыведзены алгарытм генерацыі паслядоўнасці псеўда-ранда.
- rand0 = 0 × 42
- Калі біт 0 Рэндзі складае 0, randi+1 = randi >> 1
- Калі біт 0 Рэндзі - 1, randi+1 = (randi >> 1) ^ 0xb8
2.3. Дадайце байт кіравання
Байт кіравання - гэта адзін байт дадзеных, і яго трэба дадаваць у галоўку кадра. Фармат праілюстраваны ў табліцы ніжэй:
Увогуле, ёсць 6 відаў байтаў кантролю. Першыя тры выкарыстоўваюцца для агульных кадраў з дадзенымі EZSP, уключаючы дадзеныя, ACK і NAK. Апошнія тры выкарыстоўваюцца без распаўсюджаных дадзеных EZSP, уключаючы RST, RSTACK і ERROR.
Фармат RST, RSTACK і памылка апісаны ў раздзеле 3.1 да 3.3.
2.4. Вылічыце CRC
16-бітны CRC разлічваецца на байтах з байта кіравання да канца дадзеных. Стандартны CRCCCITT (G (x) = x16 + x12 + x5 + 1) ініцыялізуецца на 0xffff. Найбольш значны байт папярэднічае найменш значным байтам (буйным рэжымам).
2.5. Байт начыння
Як апісана ў раздзеле 4.2 UG101, ёсць некаторыя зарэзерваваныя байтавыя значэнні, якія выкарыстоўваюцца для спецыяльных мэтаў. Гэтыя значэнні можна знайсці ў наступнай табліцы:
Калі гэтыя значэнні з'яўляюцца ў кадры, для дадзеных будзе зроблена спецыяльнае лячэнне. - Устаўце байт Escape 0x7d перад зарэзерваваным байтам - зварот
Ніжэй прыведзены некаторыя прыклады гэтага алгарытму:
2.6. Дадайце канцавы сцяг
Заключны крок - дадаць канцавы сцяг 0x7e да канца кадра. Пасля гэтага дадзеныя могуць быць адпраўлены ў порт UART.
3. Працэс дэ-рамкі
Калі дадзеныя паступаюць з UART, нам проста трэба зрабіць зваротныя крокі, каб расшыфраваць іх.
4. Літаратура
Час паведамлення: люты-08-2022