Аутор:TorchIoTBootCamp
Линк: хттпс://зхуанлан.зхиху.цом/п/339700391
Од:Quora
1. Увод
Силиконске лабораторије су понудиле решење хост+NCP за дизајн Zigbee гејтвеја. У овој архитектури, хост може да комуницира са NCP-ом путем UART или SPI интерфејса. Најчешће се користи UART јер је много једноставнији од SPI-ја.
Силиконске лабораторије су такође обезбедиле пример пројекта за главни програм, који је узоракZ3GatewayHost
Узорак ради на систему сличном Јуниксу. Неки корисници могу желети узорак хоста који може да ради на RTOS-у, али нажалост, тренутно не постоји узорак хоста базиран на RTOS-у. Корисници треба да развију сопствени програм за хост базиран на RTOS-у.
Важно је разумети UART gateway протокол пре него што развијете прилагођени хост програм. И за UART базирани NCP и за SPI базирани NCP, хост користи EZSP протокол за комуникацију са NCP-ом.ЕЗСПје скраћеница заЕмберЗнет серијски протокол, и дефинисано је уUG100За NCP базиран на UART-у, имплементиран је протокол нижег слоја за поуздан пренос EZSP података преко UART-а, то је...ПЕПЕШпротокол, скраћеница одАсинхрони серијски хостЗа више детаља о ASH-у, погледајтеUG101иUG115.
Однос између EZSP и ASH може се илустровати следећим дијаграмом:
Формат података EZSP-а и ASH протокола може се илустровати следећим дијаграмом:
На овој страници ћемо представити процес уоквиривања UART података и неке кључне оквире који се често користе у Zigbee gateway-у.
2. Урамљивање
Општи процес кадрирања може се илустровати следећим дијаграмом:
У овом графикону, подаци означавају EZSP оквир. Генерално, процеси оквиривања су: |Без|Корак|Референца|
|:-|:-|:-|
|1|Напуните EZSP оквир|UG100|
|2|Рандомизација података|Одељак 4.3 документа UG101|
|3|Додај контролни бајт|Поглавље2 и Поглавље3 од 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 верзије је као што је приказано испод:
链接:хттпс://зхуанлан.зхиху.цом/п/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明倂
2.2. Рандомизација података
Детаљан процес рандомизације је описан у одељку 4.3 документа UG101. Читав EZSP оквир ће бити рандомизован. Рандомизација се врши искључивом операцијом ИЛИ између EZSP оквира и псеудо-случајног низа.
Испод је алгоритам за генерисање псеудо-случајног низа.
- ранд0 = 0×42
- ако је бит 0 рандија 0, ранди+1 = ранди >> 1
- ако је бит 0 рандија једнак 1, ранди+1 = (ранди >> 1) ^ 0xB8
2.3. Додајте контролни бајт
Контролни бајт је податак од једног бајта и треба га додати на почетак оквира. Формат је илустрован у табели испод:
Укупно постоји 6 врста контролних бајтова. Прва три се користе за уобичајене фрејмове са EZSP подацима, укључујући DATA, ACK и NAK. Последња три се користе без уобичајених EZSP података, укључујући RST, RSTACK и ERROR.
Формат RST, RSTACK и ERROR је описан у одељцима 3.1 до 3.3.
2.4. Израчунајте CRC
16-битни CRC се израчунава на бајтовима од контролног бајта до краја података. Стандардни CRCCCITT (g(x) = x16 + x12 + x5 + 1) је иницијализован на 0xFFFF. Најзначајнији бајт претходи најмање значајном бајту (big-endian режим).
2.5. Пуњење бајтова
Као што је описано у одељку 4.2 документа UG101, постоје неке резервисане вредности бајтова које се користе за посебне сврхе. Ове вредности се могу наћи у следећој табели:
Када се ове вредности појаве у оквиру, подаци ће бити обрађени посебним третманом. – Уметнути излазни бајт 0x7D испред резервисаног бајта – Обрнути бит5 тог резервисаног бајта
Испод су неки примери овог алгоритма:
2.6. Додајте заставицу за крај
Последњи корак је додавање заставице за крај 0x7E на крај фрејма. Након тога, подаци се могу послати на UART порт.
3. Процес дефремовања
Када се подаци приме из UART-а, потребно је само да урадимо обрнуте кораке да бисмо их декодирали.
4. Референце
Време објаве: 08. фебруар 2022.