Муаллиф: 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-ро фаҳмед. Барои ҳам барои NCP дар асоси UART ва ҳам NCP дар асоси SPI, мизбон протоколи EZSP-ро барои муошират бо NCP истифода мебарад.EZSPбарои кӯтоҳ астПротоколи силсилавии EmberZnet, ва дар он муайян карда шудаастUG100. Барои NCP дар асоси UART, протоколи қабати поёнӣ барои интиқоли боэътимоди додаҳои EZSP тавассути UART амалӣ карда мешавад.ASHпротокол, кӯтоҳ бароиХости силсилаи асинхронӣ. Барои маълумоти бештар дар бораи ASH, лутфан ба ин муроҷиат кунедUG101ваUG115.
Муносибати байни EZSP ва ASH-ро бо диаграммаи зерин тасвир кардан мумкин аст:
Формати маълумоти EZSP ва протоколи ASH-ро бо диаграммаи зерин тасвир кардан мумкин аст:
Дар ин саҳифа, мо раванди чаҳорчӯбаи додаҳои UART ва баъзе чаҳорчӯбаҳои калидиро, ки дар gateway Zigbee зуд-зуд истифода мешаванд, муаррифӣ хоҳем кард.
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 чунин аст:
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出
2.2. Рандомизатсияи маълумот
Раванди тасодуфии муфассал дар боби 4.3-и UG101 тавсиф шудааст. Тамоми чаҳорчӯбаи EZSP тасодуфӣ карда мешавад. Рандомизатсия ба истиснои-Ё чаҳорчӯбаи EZSP ва пайдарпаии псевдо-тасодуфӣ аст.
Дар зер алгоритми тавлиди пайдарпаии псевдо-тасодуфӣ оварда шудааст.
- ранд0 = 0×42
- агар бит 0 аз ранди 0 бошад, randi+1 = randi >> 1
- агар бит 0 аз ранди 1 бошад, randi+1 = (randi >> 1) ^ 0xB8
2.3. Байти назоратро илова кунед
Байти назорат маълумоти як байт аст ва бояд ба сари чаҳорчӯба илова карда шавад. Формат бо ҷадвали зерин тасвир шудааст:
Дар маҷмӯъ, 6 намуди байтҳои назоратӣ мавҷуданд. Сеи аввал барои чаҳорчӯбаҳои умумӣ бо маълумоти EZSP, аз ҷумла DATA, ACK ва NAK истифода мешаванд. Се охирин бе маълумоти умумии EZSP истифода мешаванд, аз ҷумла RST, RSTACK ва ERROR.
Формати RST, RSTACK ва ERROR дар фасли 3.1 то 3.3 тавсиф шудааст.
2.4. Ҳисоб кардани CRC
CRC-и 16-бит аз байтҳо аз байти идоракунӣ то охири маълумот ҳисоб карда мешавад. Стандарти CRCCCITT (g(x) = x16 + x12 + x5 + 1) ба 0xFFFF оғоз карда шудааст. Байти аз ҳама муҳим пеш аз байти камтарин аст (ҳолати калон-эндиан).
2.5. Пуркунии байт
Тавре ки дар фасли 4.2-и UG101 тавсиф шудааст, баъзе арзишҳои байтҳои ҳифзшуда мавҷуданд, ки барои мақсадҳои махсус истифода мешаванд. Ин арзишҳоро дар ҷадвали зерин дидан мумкин аст:
Вақте ки ин арзишҳо дар чаҳорчӯба пайдо мешаванд, ба маълумот коркарди махсус анҷом дода мешавад. – Байти фирорӣ 0x7D-ро дар пеши байтҳои ҳифзшуда ҷойгир кунед – Бит5-и он байтҳои ҳифзшударо баргардонед
Дар зер баъзе мисолҳои ин алгоритм мавҷуданд:
2.6. Парчами хотимаро илова кунед
Қадами ниҳоӣ илова кардани парчами охири 0x7E ба охири чаҳорчӯба аст. Пас аз он, маълумотро ба порти UART фиристодан мумкин аст.
3. Раванди де-раммасозӣ
Вақте ки маълумот аз UART гирифта мешавад, мо танҳо бояд қадамҳои баръаксро барои рамзкушоӣ иҷро кунем.
4. Иқтибосҳо
Вақти фиристодан: феврал-08-2022