Mwandishi: TorchIoTBotCamp
Kiungo: https://zhuanlan.zhihu.com/p/339700391
Kutoka:Quora
1. Utangulizi
Silicon Labs imetoa suluhisho la mwenyeji+NCP kwa ajili ya muundo wa lango la Zigbee. Katika usanifu huu, mwenyeji anaweza kuwasiliana na NCP kupitia kiolesura cha UART au SPI. Kwa kawaida, UART hutumika kwani ni rahisi zaidi kuliko SPI.
Silicon Labs pia imetoa mradi wa sampuli kwa ajili ya programu mwenyeji, ambayo ni sampuliZ3GatewayHostSampuli huendeshwa kwenye mfumo unaofanana na Unix. Baadhi ya wateja wanaweza kutaka sampuli ya seva mwenyeji ambayo inaweza kutumika kwenye RTOS, lakini kwa bahati mbaya, hakuna sampuli ya seva mwenyeji inayotegemea RTOS kwa sasa. Watumiaji wanahitaji kuunda programu yao ya seva mwenyeji kulingana na RTOS.
Ni muhimu kuelewa itifaki ya lango la UART kabla ya kutengeneza programu ya seva mwenyeji iliyobinafsishwa. Kwa NCP inayotegemea UART na NCP inayotegemea SPI, seva mwenyeji hutumia itifaki ya EZSP kuwasiliana na NCP.EZSPni fupi kwaItifaki ya Mfululizo ya EmberZnet, na imefafanuliwa katikaUG100Kwa NCP inayotegemea UART, itifaki ya safu ya chini inatekelezwa ili kubeba data ya EZSP kwa uaminifu juu ya UART, hiyo ndiyoMAJIVUitifaki, kifupi chaSeva ya Mfululizo IsiyolandanaKwa maelezo zaidi kuhusu ASH, tafadhali rejeleaUG101naUG115.
Uhusiano kati ya EZSP na ASH unaweza kuonyeshwa kwa mchoro ufuatao:
Umbizo la data la EZSP na itifaki ya ASH linaweza kuonyeshwa kwa mchoro ufuatao:
Katika ukurasa huu, tutaanzisha mchakato wa kutunga data ya UART na baadhi ya fremu muhimu ambazo hutumiwa mara kwa mara katika lango la Zigbee.
2. Kuweka Fremu
Mchakato wa jumla wa uundaji unaweza kuonyeshwa na chati ifuatayo:
Katika chati hii, data inamaanisha fremu ya EZSP. Kwa ujumla, michakato ya kutunga ni: |Hapana|Hatua|Rejeleo|
|:-|:-|:-|:-|
|1|Jaza Fremu ya EZSP|UG100|
|2|Ubandishaji wa Data|Sehemu ya 4.3 ya UG101|
|3|Ongeza Baiti ya Kudhibiti|Sura ya 2 na Sura ya 3 ya UG101|
|4|Kokotoa CRC|Sehemu ya 2.3 ya UG101|
|5|Kujaza Baiti|Sehemu ya 4.2 ya UG101|
|6|Ongeza Bendera ya Mwisho|Sehemu ya 2.4 ya UG101|
2.1. Jaza Fremu ya EZSP
Umbizo la fremu ya EZSP limeonyeshwa katika Sura ya 3 ya UG100.
Zingatia kwamba umbizo hili linaweza kubadilika SDK inapoboreshwa. Umbizo litakapobadilika, tutaupa nambari mpya ya toleo. Nambari ya toleo la hivi karibuni la EZSP ni 8 wakati makala haya yanaandikwa (EmberZnet 6.8).
Kwa kuwa umbizo la fremu ya EZSP linaweza kuwa tofauti kati ya matoleo tofauti, kuna sharti la lazima kwamba mwenyeji na NCPLAZIMAfanya kazi na toleo lile lile la EZSP. Vinginevyo, hawawezi kuwasiliana kama ilivyotarajiwa.
Ili kufikia hilo, amri ya kwanza kati ya mwenyeji na NCP lazima iwe amri ya toleo. Kwa maneno mengine, mwenyeji lazima apate toleo la EZSP la NCP kabla ya mawasiliano mengine yoyote. Ikiwa toleo la EZSP ni tofauti na toleo la EZSP la upande wa mwenyeji, mawasiliano lazima yasitishwe.
Sharti lisilo wazi nyuma ya hili ni kwamba umbizo la amri ya toleo linawezaKAMWE UBADILIKEUmbizo la amri ya toleo la EZSP ni kama ifuatavyo:
Makala: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处.
2.2. Ubandishaji wa Data
Mchakato wa kina wa upangaji nasibu umeelezewa katika sehemu ya 4.3 ya UG101. Fremu nzima ya EZSP itapangwa kwa nasibu. Upangaji nasibu ni wa kipekee-AU fremu ya EZSP na mfuatano bandia-nasibu.
Hapa chini ni algoriti ya kutengeneza mfuatano bandia-nasibu.
- rand0 = 0×42
- ikiwa biti 0 ya randi ni 0, randi+1 = randi >> 1
- ikiwa biti 0 ya randi ni 1, randi+1 = (randi >> 1) ^ 0xB8
2.3. Ongeza Baiti ya Kudhibiti
Baiti ya udhibiti ni data ya baiti moja, na inapaswa kuongezwa kwenye kichwa cha fremu. Umbizo limeonyeshwa na jedwali hapa chini:
Kwa ujumla, kuna aina 6 za baiti za udhibiti. Tatu za kwanza hutumika kwa fremu za kawaida zenye data ya EZSP, ikiwa ni pamoja na DATA, ACK na NAK. Tatu za mwisho hutumika bila data ya kawaida ya EZSP, ikiwa ni pamoja na RST, RSTACK na ERROR.
Muundo wa RST, RSTACK na ERROR umeelezwa katika sehemu ya 3.1 hadi 3.3.
2.4. Hesabu CRC
CRC ya biti 16 huhesabiwa kwenye baiti kutoka kwa baiti ya udhibiti hadi mwisho wa data. CRCCCITT ya kawaida (g(x) = x16 + x12 + x5 + 1) imeanzishwa kuwa 0xFFFF. Baiti muhimu zaidi hutangulia baiti isiyo na umuhimu mkubwa (hali ya big-endian).
2.5. Kujaza Baiti
Kama ilivyoelezwa katika kifungu cha 4.2 cha UG101, kuna baadhi ya thamani za baiti zilizohifadhiwa zinazotumika kwa madhumuni maalum. Thamani hizi zinaweza kupatikana katika jedwali lifuatalo:
Thamani hizi zinapoonekana kwenye fremu, data itafanyiwa matibabu maalum. – Ingiza baiti ya kutoroka 0x7D mbele ya baiti iliyohifadhiwa – Rudisha biti 5 ya baiti hiyo iliyohifadhiwa
Hapa chini kuna mifano kadhaa ya algoriti hii:
2.6. Ongeza Bendera ya Mwisho
Hatua ya mwisho ni kuongeza bendera ya mwisho 0x7E kwenye mwisho wa fremu. Baada ya hapo, data inaweza kutumwa kwenye lango la UART.
3. Mchakato wa Kuondoa Fremu
Data inapopokelewa kutoka UART, tunahitaji tu kufanya hatua za kinyume ili kuitambua.
4. Marejeleo
Muda wa chapisho: Februari-08-2022








