Nivîskar: TorchIoTBootCamp
Girêdana:https://zhuanlan.zhihu.com/p/339700391
Ji:Quora
1. Destpêk
Silicon Labs ji bo sêwirana deriyê Zigbee çareseriyek mêvandar + NCP pêşkêşî kiriye. Di vê mîmarê de, mêvandar dikare bi navbeynkariya UART an SPI-yê bi NCP-ê re têkilî daynin. Bi gelemperî, UART tê bikar anîn ji ber ku ew ji SPI-ê pir hêsan e.
Silicon Labs ji bo bernameya mêvandar jî projeyek nimûne peyda kiriye, ku ew nimûne yeZ3GatewayHost
. Nimûne li ser pergalek mîna Unix-ê dimeşe. Dibe ku hin xerîdar nimûneyek mêvandar bixwazin ku dikare li ser RTOS-ê bixebite, lê mixabin, heya niha nimûneyek mêvandar a RTOS-ê tune. Bikarhêner pêdivî ye ku bernameya xweya mêvandar li ser bingeha RTOS pêşve bibin.
Girîng e ku hûn protokola dergehê UART-ê berî ku bernameyek mêvandar a xwerû pêşve bixin fêm bikin. Hem ji bo NCP-ya UART-ê û hem jî NCP-ya bingeha SPI-yê, mêvandar protokola EZSP bikar tîne da ku bi NCP-ê re danûstendinê bike.EZSPji bo kurt eProtokola Serial EmberZnet, û di nav de tête diyar kirinUG100. Ji bo NCP-ya bingeha UART, protokolek qatek jêrîn tête bicîh kirin ku daneyên EZSP bi pêbawer li ser UART-ê hilgire, ew eXWELÎprotokol, kurt ji boHost Serial Asynchronous. Ji bo bêtir agahdarî di derbarê ASH de, ji kerema xwe serî liUG101ûUG115.
Têkiliya di navbera EZSP û ASH de dikare bi diyagrama jêrîn were destnîşan kirin:
Forma daneya EZSP û protokola ASH dikare bi diyagrama jêrîn were destnîşan kirin:
Di vê rûpelê de, em ê pêvajoya çarçovekirina daneyên UART û hin çarçoveyên sereke yên ku bi gelemperî di deriyê Zigbee de têne bikar anîn destnîşan bikin.
2. Çarçovekirin
Pêvajoya çarçoveyek giştî dikare bi nexşeya jêrîn were destnîşan kirin:
Di vê nexşeyê de, dane tê wateya çarçoveya EZSP. Bi gelemperî, pêvajoyên çarçovekirinê ev in: |Na|Gavek|Referans|
|:-|:-|:-|
|1|Çarçoveya EZSP dagire|UG100|
|2|Randomkirina daneyan|Beşa 4.3 ya UG101|
|3|Bytê Kontrolê lê zêde bike|Şab2 û Beş3 ya UG101|
|4|CRC hesab bike|Beşa 2.3 ya UG101|
|5|Byte Stuffing|Beşa 4.2 ya UG101|
|6|Ala Dawî lê zêde bike|Beş 2.4 ya UG101|
2.1. Çarçoveya EZSP dagirin
Forma çarçoveya EZSP di Chap 3 ya UG100 de tê destnîşan kirin.
Bala xwe bidinê ku dema ku SDK nûve dibe ev format dikare biguhere. Dema ku format biguhere, em ê jimareyek guhertoyek nû bidin. Dema ku ev gotar tê nivîsandin (EmberZnet 6.8) hejmara guhertoya herî dawî ya EZSP 8 e.
Ji ber ku dibe ku forma çarçoweya EZSP di navbera guhertoyên cihêreng de cûda be, pêdivîyek mecbûrî heye ku mêvandar û NCPMECBÛRMAYINbi heman guhertoya EZSP re bixebitin. Wekî din, ew nikanin wekî ku tê çaverê kirin têkilî daynin.
Ji bo bidestxistina wê, divê emrê yekem di navbera mêvandar û NCP de fermana guhertoyê be. Bi gotinek din, mêvandar divê guhertoya EZSP ya NCP-ê berî danûstendinek din vegerîne. Ger guhertoya EZSP bi guhertoya EZSP ya milê mêvandar re cûda be, pêdivî ye ku têkilî were betal kirin.
Pêdiviya nepenî ya li pişt vê ev e ku forma fermana guhertoyê dikareTU TU GUHERIN. Forma fermana guhertoya EZSP wekî jêrîn e:
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出
2.2. Randomization Data
Pêvajoya randomkirina berfireh di beşa 4.3 ya UG101 de tête diyar kirin. Tevahiya çarçoweya EZSP dê bê rasthatinî bibe. Rasthatîbûn bi taybetî-AN çarçoveya EZSP û rêzek pseudo-random e.
Li jêr algorîtmaya çêkirina rêzika pseudo-random heye.
- rand0 = 0×42
- heke bit 0 ya randi 0 be, randi+1 = randi >> 1
- eger bit 0 ya randi 1 be, randi+1 = (randi >> 1) ^ 0xB8
2.3. Byte Kontrolê zêde bikin
Byte kontrolê daneya yek byte ye, û divê li serê çarçovê were zêdekirin. Format bi tabloya jêrîn tê xuyang kirin:
Bi tevahî, 6 celeb baytên kontrolê hene. Sê yekem ji bo çarçoveyên hevpar ên bi daneyên EZSP, di nav de DATA, ACK û NAK têne bikar anîn. Sê paşîn bêyî daneyên hevpar ên EZSP, tevî RST, RSTACK û ERROR têne bikar anîn.
Formata RST, RSTACK û ERROR di beşa 3.1 heta 3.3 de têne diyar kirin.
2.4. CRC hesab bikin
CRC-ya 16-bit li ser baytên ji baytê kontrolê heya dawiya daneyê tê hesibandin. CRCCCITT-ya standard (g(x) = x16 + x12 + x5 + 1) bi 0xFFFF ve hatî destpêkirin. Byte ya herî girîng dikeve pêşiya byteya herî kêm girîng (moda mezin-endî).
2.5. Byte Stuffing
Wekî ku di beşa 4.2 ya UG101 de hatî diyar kirin, hin nirxên byte yên parastî hene ku ji bo armancên taybetî têne bikar anîn. Van nirxan di tabloya jêrîn de têne dîtin:
Dema ku ev nirx di çarçoveyê de xuya dibin, dê tedawiyek taybetî bi daneyan re were kirin. - Bîtê revînê 0x7D têxin ber baytê veqetandî - Bit5-ya wê bytê veqetandî berevajî bikin
Li jêr çend mînakên vê algorîtmê hene:
2.6. Ala Dawî lê zêde bike
Pêngava paşîn ev e ku meriv ala paşîn 0x7E li dawiya çarçoveyê lê zêde bike. Piştî wê, dane dikarin ji porta UART re bêne şandin.
3. Pêvajoya De-çarçoveyê
Dema ku dane ji UART tê wergirtin, em tenê hewce ne ku gavên berevajî bikin da ku wê deşîfre bikin.
4. Çavkanî
Dema şandinê: Feb-08-2022