Автор : TorcheiotbootCamp
Врска : https: //zhuanlan.zhihu.com/p/339700391
Од : Quora
1. Вовед
Silicon Labs понуди решение за домаќин+NCP за дизајн на Gigbee Gateway. Во оваа архитектура, домаќинот може да комуницира со NCP преку UART или SPI интерфејс. Најчесто, UART се користи бидејќи е многу поедноставно од SPI.
Silicon Labs исто така обезбеди примерок проект за програмата домаќин, што е примерокотZ3GatewayHost
. Примерокот работи на систем сличен на UNIX. Некои клиенти можеби сакаат примерок од домаќин кој може да работи на RTOS, но за жал, засега не постои примерок од домаќин врз основа на RTOS. Корисниците треба да развијат своја програма за домаќини заснована на RTOS.
Важно е да се разбере протоколот UART Gateway пред да се развие прилагодена програма за домаќини. И за NCP врз основа на UART NCP и SPI, домаќинот го користи протоколот EZSP за да комуницира со NCP.EZSPе кратко заСериски протокол Емберзнет, и тоа е дефинирано воUG100. За NCP засновано на UART, се спроведува протокол со понизок слој за да се носат податоци за EZSP со сигурност над UART, тоа еПепелПротокол, краток заАсинхрон сериски домаќин. За повеќе детали за пепел, погледнетеUG101иUG115.
Односот помеѓу EZSP и пепелта може да се илустрира со следниот дијаграм:
Форматот на податоци на EZSP и протоколот ASH може да се илустрира со следниот дијаграм:
На оваа страница, ќе го воведеме процесот на кадрирање на податоците UART и некои клучни рамки кои често се користат во портата на Зигбе.
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, Ранди+1 = Ранди >> 1
- Ако малку 0 на Ранди е 1, Ранди+1 = (Ранди >> 1) ^ 0xb8
2.3. Додадете го контролниот бајт
Контролниот бајт е податоци за еден бајт и треба да се додаде на главата на рамката. Форматот е илустриран со табелата подолу:
Тотално, има 6 вида контролни бајти. Првите три се користат за вообичаени рамки со податоци за EZSP, вклучувајќи податоци, ACK и NAK. Последните три се користат без вообичаени податоци за EZSP, вклучувајќи ги RST, RSTACK и грешка.
Форматот на RST, RSTACK и грешка се опишани во Дел 3.1 до 3.3.
2.4. Пресметајте го CRC
16-битен CRC се пресметува на бајти од контролниот бајт до крајот на податоците. Стандардниот crcccitt (g (x) = x16 + x12 + x5 + 1) е иницијализиран на 0xffff. Најзначајниот бајт му претходи на најмалку значајниот бајт (режим на Биг-Ендијан).
2.5. Бајт полнење
Како што е опишано во Дел 4.2 од UG101, постојат некои резервирани вредности на бајти кои се користат за посебна намена. Овие вредности може да се најдат во следната табела:
Кога овие вредности се појавуваат во рамката, ќе се направи посебен третман на податоците. - Вметнете го бајтот за бегство 0x7d пред резервираниот бајт - Обратете го BIT5 на тој резервиран бајт
Подолу се дадени неколку примери на овој алгоритам:
2.6. Додадете го крајното знаме
Конечниот чекор е да го додадете крајното знаме 0x7e на крајот на рамката. После тоа, податоците можат да бидат испратени до портата UART.
3. Процес на де-обликување
Кога податоците се добиваат од UART, само треба да ги направиме обратни чекори за да ги декодираме.
4. Референци
Време на објавување: февруари-08-2022