Автор: Торчиотбооткамп
Сілтеме: https: ///zhuanlan.zhihu.com/p/339700391
Кімнен: квора
1. Кіріспе
Кремний зертханалары ZigBee шлюзінің дизайнына арналған хост + NCP шешімін ұсынды. Бұл архитектурада хост NCP-мен UART немесе SPI интерфейсі арқылы байланыса алады. Көбінесе, UART SPI-ге қарағанда әлдеқайда қарапайым болғандықтан қолданылады.
Кремний зертханалары сонымен қатар негізгі бағдарлама үшін үлгі жоба ұсынды, ол үлгі болып табыладыZ3gatewayhost
. Үлгі Unix тәрізді жүйеде жұмыс істейді. Кейбір клиенттер rtos-да жұмыс істей алатын хост үлгісін алғысы келуі мүмкін, бірақ, өкінішке орай, уақыт бойынша хосттың негізіндегі RTOS негізіндегі үлгі жоқ. Пайдаланушылар RTOS негізінде өздерінің жеке бағдарламасын әзірлеулері керек.
Реттелетін хост бағдарламасын жасамас бұрын UART шлюз протоколын түсіну маңызды. UART негізіндегі NCP және SPI негізіндегі NCP үшін, хост EZSP протоколын NCP-мен байланысу үшін пайдаланады.Ezspүшін қысқаEmberznet сериялық хаттамасы, және ол анықталғанUG100. UART негізіндегі NCP үшін EZSP мәліметтерін UART арқылы сенімді тасымалдау үшін төменгі қабат протоколы іске асырылады, бұлКүлХаттама, қысқаАсинхронды сериялық хост. Күл туралы толығырақ ақпарат алу үшін қараңызUG101жінеUG115.
EZSP мен Эш арасындағы байланыс келесі диаграммада суреттелуі мүмкін:
EZSP және күл протоколының деректер форматын келесі диаграммада көрсетуге болады:
Бұл бетте біз ZigBee шлюзінде жиі қолданылатын UART деректерін және кейбір кадрларды жақтау процесін енгіземіз.
2. Жүйе
Жалпы жұмыс процесін келесі диаграмма арқылы көрсетуге болады:
Бұл кестеде деректер EZSP жақтауын білдіреді. Жалпы алғанда, кадрлық процестер: | жоқ | жоқ | Степ | Анықтама |
|: - |: - |: - |: - |
| 1 | EZSP кадрларын толтыру | UG100 |
| 2 | Деректерді рандомизациялау | UG101 4.3 бөлімі |
| 3 | Басқару бетін қосыңыз | Chap2 және UG101 CHAP33 |
| 4 | CRC есептеңіз | UG101 23 бөлімі |
| 5 | байт салуға арналған | UG101 4.2 бөлімі |
| 6 | Аяқтау жалаушасын қосу | UG101 24 бөлімі
2.1. EZSP кадрын толтырыңыз
EZSP жақтау форматы UG100-нің 3-бөлігінде суреттелген.
SDK жаңарту кезінде бұл формат өзгеруі мүмкін дегенге назар аударыңыз. Формат өзгерген кезде біз оған жаңа нұсқа нөмірін береміз. EZSP соңғы нұсқасы 8-ші болып, осы мақала жазылған кезде (Emberznet 6.8).
EZSP жақтау форматы әр түрлі нұсқалар арасында өзгеше болуы мүмкін, өйткені хост пен ҰКП міндетті талап барКерексол EZSP нұсқасымен жұмыс жасаңыз. Әйтпесе, олар күткендей сөйлей алмайды.
Бұған жету үшін хост пен ҰКП арасындағы бірінші команда нұсқа командасы болуы керек. Басқаша айтқанда, хост басқа байланысқа дейін NCP EZSP нұсқасын алуы керек. Егер EZSP нұсқасы хост жағының EZSP нұсқасымен өзгеше болса, байланыс тоқтатылуы керек.
Бұл туралы нақты талап - бұл нұсқа пәрменінің форматыЕшқашан өзгермеңіз. EZSP нұсқасының командалық пішімі төмендегідей:
链接: https: //zhuanlan.zhihu.com/p/339700391
来源: 知乎
著作权归作者所有. 商业转载请联系作者获得授权, 非商业转载请注明出处.
2.2. Деректерді рандомизациялау
Дәлелдеу туралы егжей-тегжейлі процесс UG101 бөлімінде сипатталған. Бүкіл EZSP жақтауы кездейсоқ болады. Рандомизация - бұл эксклюзивті немесе EZSP жақтауы және жалған кездейсоқ ретпен.
Төменде жалған кездейсоқ реттілікті құру алгоритмі келтірілген.
- RAND0 = 0 × 42
- Егер BIT BIT BIT 0, 0, RANDI + 1 = Randi >> 1
- Егер BIT BIT 0 randi 1, Randi + 1 = (Ранди >> 1) ^ 0xB8
2.3. Басқару байтты қосыңыз
Бақылау байтты - бұл бір байт деректері және жақтаудың басына қосу керек. Формат төмендегі кестеде көрсетілген:
Барлығы бақылаудың 6 түрі бар. Алғашқы үшеуі EZSP деректері, оның ішінде деректер, акк және нак сияқты жалпы кадрлар үшін қолданылады. Соңғы үшеуі eZSP-дің ортақ деректерімен, соның ішінде RST, RSCHSTST және ERRES пайдаланылады.
RST, RSCHSTSCH және ERRER форматы 3.1-ден 33-ке дейін сипатталған.
2.4. CRC есептеңіз
16 биттік CRC бақылау байттан байттардан мәліметтердің соңына дейін есептеледі. Standard CrccCitt (g (x) = x16 + x12 + x12 + x5 + 1) 0xFFFF-ке дейін басталады. Ең маңызды байт, ең аз айтарлықтай байт (Big-Endian Mode).
2.5. Байт салуға арналған
UG101 бөлімінде сипатталғандай, арнайы мақсатта пайдаланылатын байт мәндері бар. Бұл мәндерді келесі кестеден табуға болады:
Бұл мәндер кадрда пайда болған кезде, мәліметтерге арнайы өңдеу жүзеге асырылады. - 0x7D қашу байтын сақталған байттың алдына салыңыз - бит битінің бит бөлігін кері салыңыз
Төменде осы алгоритмнің бірнеше мысалдары келтірілген:
2.6. Аяқтау жалауын қосыңыз
Қорытынды қадам - 0x7e аяқталу жалаушасын жақтаудың соңына қосу. Осыдан кейін мәліметтерді UART портына жіберуге болады.
3. Қадағалау процесі
UART-тен деректер алынған кезде, біз оны шешу үшін кері қадамдарды орындауымыз керек.
4. Сілтемелер
POST TIME: Feb-08-2022