About Zigbee EZSP UART

Nivîskar: TubhowHootCamp
Zencîre: https: //zhuanlan.zhihu.com/p/339700391
Ji: Quora

1. Destpêk

Labelên silicon ji bo sêwirana Zigbee deriyê Zigbee çareseriyek mêvandar + NCP pêşkêş kir. Di vê mîmariyê de, mêvandar dikare bi NCP-ê bi navgîniya UART an SPI-yê re têkilî daynin. Bi gelemperî, UART ji ber ku ew ji Spi pir hêsan tête bikar anîn.

Labên Silicon ji bo bernameya mêvandariyê jî projeyek nimûneyê peyda kiriye, ku ew nimûne yeZ3gatewayhost. Nimûne li ser pergalek unix-ê dimeşe. Hin xerîdar dikarin nimûneyek mêvandar bixwazin ku dikare li ser rtosê bisekine, lê mixabin, ji bo wextê hebûnê nimûneya mêvandar a bingehîn tune. Pêdivî ye ku bikarhêner li ser bingeha RTOS bernameya mêvandarê xwe pêşve bibin.

Girîng e ku berî pêşxistina bernameyek mêvandar a gateway UART fêm bikin. Ji bo her du UART-ê bingeha NCP û Bingeha SPI-ya Binge, mêvandar protokola ezsp bikar tîne da ku bi NCP re ragihîne.EZSPkurt eProtokola Serial Emberznet, û tê de tête diyar kirinUG100. Ji bo UART-ê bingeha NCP, protokolek jêrîn a jêrîn tête pêkanîn da ku daneyên EZSP bi pêbaweriya UART-ê bi dest bixe, ew eXWELÎProtokola, ji bo kurtHêviya Serial Asynchronous. Ji bo bêtir agahdarî li ser ash, ji kerema xwe binihêrinUG101ûUG115.

Têkiliya di navbera ezsp û ash de dikare ji hêla diagram jêrîn ve were xuyang kirin:

1

Forma daneyê ya ezsp û protokola ash dikare ji hêla diagram jêrîn ve were xuyang kirin:

2

Di vê rûpelê de, em ê pêvajoya belavkirina daneyên UART û hin framesên sereke yên ku bi gelemperî di deriyê Zigbee de têne bikar anîn.

2. Frame

Pêvajoya çarçoveya gelemperî dikare ji hêla nexşeya jêrîn ve were xuyang kirin:

3

Di vê nexşeyê de, daneyên tê wateya çarçova ezsp. Bi gelemperî, pêvajoyên framingê ev in: | na | Step | referans |

|: - | - |: - |

| 1 | Frame Ezsp | UG100 |

| 2 | Daneyên Rêzkirin | Beşa 4.3 ya UG101 |

| 3 | Byte Kontrolê | Chap2 û Chap3 Of UG101 |

| 4 | CRC-ê hesab bikin | Beşa 2.3 ya UG101 |

| 5 | byte Righting | Beşa 4.2 ya UG101 |

| 6 | Ala End Add | Beşê 2.4 ya UG101 |

2.1. Çarçova ezsp dagirtin

Forma çarçova EZSP di çapa 3 ya UG100 de tê xuyang kirin.

4

Dema ku nûvekirinên SDK-ê dikare vê formê biguhezîne. Dema ku format tê guhertin, em ê hejmara guhertoyek nû bidin. Hejmara guhertoya EZSP ya herî dawî 8 e dema ku ev gotar nivîsî ye (Emberznet 6.8).

Wekî ku forma çarçova ezsp dikare di nav guhertoyên cihêreng de cûda be, hewceyek mecbûrî heye ku mêvandar û NCP heyeMECBÛRMAYINBi heman guhertoya EZSP-ê re bixebitin. Wekî din, ew nekarin wekî ku bi texmînî ragihînin.

Ji bo bidestxistina wê, fermana yekemîn a di navbera mêvandar û NCP de divê fermana guhertoyê be. Bi gotinên din, divê mêvandar guhertoya EZSP-ê ya NCP-ê berî ragihandina din bigire. Ger guhertoya EZSP bi guhertoya EZSP-ê ya aliyê mêvandariyê cûda ye, divê ragihandinê were qutkirin.

Hewcedariya nîgarê li pişt vê ye ku forma fermana guhertoyê dikare bikeTu carî neguherin. Formata Fermandariya Guhertoya EZSP wekî jêrîn e:

5

Ravekirinên zeviya parameterê û forma bersivê guhertoyê dikare di Chap 4 ya UG100 de were dîtin. Zeviya parameterê guhertoya EZSP ya bernameya mêvandar e. Dema ku ev gotar hatiye nivîsîn, ew 8 e.
7
作者: TaybethbootCamp
链接: https: //zuhuanlan.zhihu.com/p/339700391
知乎
商业转载请联系作者获得授权., 非商业转载请注明出处.

2.2. Daneyên Rêzkirin

Pêvajoya qadê ya berbiçav di beşa 4.3 ya UG101 de tête diyar kirin. Dê tevahiya çîmentoyê ezsp were qewirandin. Rêzkirin ji bo çarçoveya exclusive-an ezsp e û rêzikek pseudo-rasteqîn e.

Li jêr algorîtmaya hilberîna rêzika pseudo-rasthatî ye.

  • rand0 = 0 × 42
  • Ger bit 0 ya Randi 0, Randi + 1 = Randi >> 1
  • Ger bit 0 ya Randi 1, Randi + 1 = (Randi >> 1) ^ 0xb8

2.3. Kontrolê byte zêde bikin

Byte kontrola daneya yek byte ye, û divê li ser serê çarçovê were zêdekirin. Forma bi tabloya jêrîn tê xuyang kirin:

6

Bi tevahî, 6 cûre bytên kontrolê hene. Sêyemîn yekem ji bo daneyên hevbeş bi daneyên EZSP ve tê bikar anîn, di nav de daneyên, ack û nak. Sê sêyan bêyî daneyên EZSP-ê hevpar têne bikar anîn, di nav de RST, rstack û çewtî.

Forma RST, Rstack û xelet di beşa 3.1 ber 3.3 de têne vegotin.

2.4. CRC-ê hesab bikin

CRC-ya 16-bit li ser byte ji hêla kontrolê ve heya dawiya daneyê tê hesibandin. CRCCCITTA PRANDAND (G (x) = x16 + x12 + x5 + 1) ji bo 0xffff tête destpêkirin. Byte ya herî girîng pêşengtirîn byte ya herî girîng a byte (mezin-endian).

2.5. Byte rijandin

Wekî ku di beşa 4.2 ya UG101 de tête diyar kirin, hin nirxên byte yên parastî ji bo mebesta taybetî têne bikar anîn. Van nirxan di tabloya jêrîn de têne dîtin:

7

Dema ku van nirxan di çarçoveyê de xuya dibin, dê dermanek taybetî ji daneyan re were kirin. - Derketina ji Byte 0x7D li pêşiya pargîdaniya parastî vebirin - bitenê wê ya ku ji hêla parastî ve hatî veqetandin

Li jêr çend mînakên vê algorîtmê hene:

8

2.6. Ala dawiya zêde bikin

Pêngava paşîn ev e ku ala dawiya 0x7e li dawiya çarçoveyê zêde bike. Piştra, daneyên dikarin werin şandin porta UART.

3. Pêvajoya de-framing

Dema ku daneyên ji UART-ê tê wergirtin, em tenê hewce ne ku gavên berevajî bikin da ku ew were qut kirin.

4 Referans


Demjimêra paşîn: Feb-08-2022
Chat Online Whatsapp!