Kuhusu Zigbee EZSP UART

Mwandishi:TorchIoTBootCamp
Kiungo: https://zhuanlan.zhihu.com/p/339700391
Kutoka:Quora

1. Utangulizi

Silicon Labs imetoa suluhisho la mwenyeji+NCP kwa muundo wa lango la Zigbee. Katika usanifu huu, seva pangishi inaweza kuwasiliana na NCP kupitia kiolesura cha UART au SPI. Kwa kawaida, UART hutumiwa kwa kuwa ni rahisi zaidi kuliko SPI.

Silicon Labs pia imetoa sampuli ya mradi wa programu mwenyeji, ambayo ni sampuliZ3GatewayHost. Sampuli inaendeshwa kwenye mfumo unaofanana na Unix. Wateja wengine wanaweza kutaka sampuli ya mwenyeji ambayo inaweza kuendeshwa kwenye RTOS, lakini kwa bahati mbaya, hakuna sampuli ya mwenyeji wa RTOS kwa sasa. Watumiaji wanahitaji kuunda programu yao ya mwenyeji kulingana na RTOS.

Ni muhimu kuelewa itifaki ya lango la UART kabla ya kuunda programu ya mwenyeji iliyobinafsishwa. Kwa NCP kulingana na UART na SPI kulingana na NCP, seva pangishi hutumia itifaki ya EZSP kuwasiliana na NCP.EZSPni fupi kwaItifaki ya Serial ya EmberZnet, na imefafanuliwa ndaniUG100. Kwa UART msingi NCP, itifaki ya safu ya chini inatekelezwa ili kubeba data ya EZSP kwa uaminifu juu ya UART, hiyo ndiyoMAJIVUitifaki, fupi kwaMpangishi wa Siri Asynchronous. Kwa maelezo zaidi kuhusu ASH, tafadhali rejeleaUG101naUG115.

Uhusiano kati ya EZSP na ASH unaweza kuonyeshwa kwa mchoro ufuatao:

1

Umbizo la data la EZSP na itifaki ya ASH inaweza kuonyeshwa kwa mchoro ufuatao:

2

Katika ukurasa huu, tutaanzisha mchakato wa kutunga data ya UART na baadhi ya viunzi muhimu ambavyo hutumiwa mara kwa mara katika lango la Zigbee.

2. Kutunga

Mchakato wa jumla wa kuunda fremu unaweza kuonyeshwa na chati ifuatayo:

3

Katika chati hii, data ina maana fremu ya EZSP. Kwa ujumla, michakato ya kutunga ni: |Hapana|Hatua|Rejea|

|:-|:-|:-|

|1|Jaza Fremu ya EZSP|UG100|

|2|Ubahatishaji wa Data|Sehemu ya 4.3 ya UG101|

|3|Ongeza Control Byte|Chap2 na Chap3 of UG101|

|4|Kokotoa CRC|Sehemu ya 2.3 ya UG101|

|5|Byte Stuffing|Sehemu ya 4.2 ya UG101|

|6|Ongeza Bendera ya Mwisho|Sehemu ya 2.4 ya UG101|

2.1. Jaza Frame ya EZSP

Umbizo la fremu la EZSP limeonyeshwa katika Sura ya 3 ya UG100.

4

Zingatia kuwa umbizo hili linaweza kubadilika wakati SDK ikisasishwa. Umbizo linapobadilika, tutaipa nambari ya toleo jipya. Nambari ya hivi punde ya toleo la EZSP ni 8 wakati nakala hii inaandikwa (EmberZnet 6.8).

Kwa vile umbizo la fremu la EZSP linaweza kuwa tofauti kati ya matoleo tofauti, kuna sharti la lazima kwamba seva pangishi na NCPLAZIMAfanya kazi na toleo sawa la EZSP. Vinginevyo, hawawezi kuwasiliana kama inavyotarajiwa.

Ili kufanikisha hilo, amri ya kwanza kati ya seva pangishi na NCP lazima iwe amri ya toleo. Kwa maneno mengine, mwenyeji lazima arudishe toleo la EZSP la NCP kabla ya mawasiliano mengine yoyote. Ikiwa toleo la EZSP ni tofauti na toleo la EZSP la upande wa seva pangishi, mawasiliano lazima yasitishwe.

Mahitaji kamili nyuma ya hii ni kwamba umbizo la amri ya toleo linawezaUSIBADILIKE KAMWE. Umbizo la amri ya toleo la EZSP ni kama hapa chini:

5

Maelezo ya uga wa kigezo na umbizo la jibu la toleo yanaweza kupatikana katika Sura ya 4 ya UG100. Sehemu ya parameta ni toleo la EZSP la programu ya mwenyeji. Nakala hii inapoandikwa, ni 8.
7
Kitambaa:TorchIoTBootCamp
Makala: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处.

2.2. Uwekaji data bila mpangilio

Mchakato wa kina wa kubahatisha umeelezewa katika sehemu ya 4.3 ya UG101. Fremu nzima ya EZSP itakuwa nasibu. Ubahatishaji ni wa kipekee-AU fremu ya EZSP na mfuatano wa kubahatisha.

Ifuatayo ni algorithm ya kutengeneza mlolongo wa pseudo-random.

  • 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 Control Byte

Byte ya kudhibiti ni data ya baiti moja, na inapaswa kuongezwa kwenye kichwa cha fremu. Muundo unaonyeshwa na jedwali hapa chini:

6

Kwa jumla, kuna aina 6 za baiti za kudhibiti. Tatu za kwanza zinatumika kwa fremu za kawaida zilizo na data ya EZSP, ikijumuisha DATA, ACK na NAK. Tatu za mwisho zinatumika bila data ya kawaida ya EZSP, ikiwa ni pamoja na RST, RSTACK na ERROR.

Muundo wa RST, RSTACK na ERROR umefafanuliwa katika sehemu ya 3.1 hadi 3.3.

2.4. Kuhesabu CRC

CRC ya biti 16 inakokotolewa kwa baiti kutoka kwa byte ya udhibiti hadi mwisho wa data. CRCCCITT ya kawaida (g(x) = x16 + x12 + x5 + 1) imeanzishwa hadi 0xFFFF. Baiti muhimu zaidi inatangulia baiti isiyo muhimu sana (hali ya mwisho-kubwa).

2.5. Byte Stuffing

Kama ilivyoelezwa katika sehemu ya 4.2 ya UG101, kuna baadhi ya thamani za baiti zilizohifadhiwa zinazotumiwa kwa madhumuni maalum. Thamani hizi zinaweza kupatikana katika jedwali lifuatalo:

7

Wakati maadili haya yanapoonekana kwenye sura, matibabu maalum yatafanyika kwa data. - Ingiza byte ya kutoroka 0x7D mbele ya byte iliyohifadhiwa - Badilisha bit5 ya byte hiyo iliyohifadhiwa

Ifuatayo ni baadhi ya mifano ya algorithm hii:

8

2.6. Ongeza Bendera ya Mwisho

Hatua ya mwisho ni kuongeza bendera ya mwisho 0x7E hadi mwisho wa fremu. Baada ya hayo, data inaweza kutumwa kwenye bandari ya UART.

3. Mchakato wa kufuta sura

Wakati data inapokewa kutoka kwa UART, tunahitaji tu kufanya hatua za kinyume ili kusimbua.

4. Marejeleo


Muda wa kutuma: Feb-08-2022
Gumzo la Mtandaoni la WhatsApp!