Umbhali:TorchIoTBootCamp
Ikhonkco: https://zhuanlan.zhihu.com/p/339700391
Ivela:Quora
1. Intshayelelo
I-Silicon Labs inikezele ngesisombululo + seNCP yoyilo lwesango leZigbee.Kolu lwakhiwo, umamkeli unokunxibelelana ne-NCP nge-UART okanye i-SPI interface.Okuqhelekileyo, i-UART isetyenziswa njengoko ilula kakhulu kune-SPI.
I-Silicon Labs nayo ibonelele ngeprojekthi yesampula yenkqubo yokusingatha, eyisampuliZ3GatewayHost
.Isampulu iqhuba kwindlela efana ne-Unix.Abanye abathengi banokufuna isampulu yomkhosi enokuthi isebenze kwi-RTOS, kodwa ngelishwa, akukho sampuli ye-RTOS esekwe ngoku.Abasebenzisi kufuneka baphuhlise inkqubo yabo yokusingatha ngokusekelwe kwi-RTOS.
Kubalulekile ukuqonda iprothokholi yesango le-UART phambi kokuba uphuhlise inkqubo yokusingatha eyenzelwe wena.Kuzo zombini i-NCP esekwe kwi-NCP kunye ne-SPI esekelwe kwi-NCP, umamkeli usebenzisa iprothokholi ye-EZSP ukunxibelelana ne-NCP.EZSPimfutshane kuIprotokholi yothotho ye-EmberZnet, kwaye ichazwe kuyoUG100.Kwi-NCP esekwe kwi-UART, iprothokholi esezantsi iyaphunyezwa ukuthwala idatha ye-EZSP ngokuthembekileyo ngaphezulu kwe-UART, yiyo leyo.ULUTHUprotocol, mfutshane yeAsynchronous Uthotho Umamkeli.Ukufumana iinkcukacha ezithe vetshe malunga ne-ASH, nceda ujonge kuUG101kwayeUG115.
Ubudlelwane phakathi kwe-EZSP ne-ASH bunokubonakaliswa ngalo mzobo ulandelayo:
Ifomathi yedatha ye-EZSP kunye ne-ASH protocol ingabonakaliswa ngalo mzobo ulandelayo:
Kweli phepha, sizakwazisa inkqubo yokwenza isakhelo sedatha ye-UART kunye nezinye izakhelo eziphambili ezisetyenziswa rhoqo kwisango leZigbee.
2. Ukwenza isakhelo
Inkqubo eqhelekileyo yokubeka isakhelo ingabonakaliswa yile tshathi ilandelayo:
Kule tshathi, idatha ithetha isakhelo se-EZSP.Ngokubanzi, iinkqubo zokuqulunqa zezi: |Hayi|Inyathelo|Reference|
|:-|:-|:-|
|1|Gcwalisa isakhelo se-EZSP|UG100|
|2|Uhlengahlengiso lweDatha|Icandelo 4.3 le-UG101|
|3|Yongeza i-Control Byte|Chap2 kunye neChap3 ye UG101|
|4|Bala i-CRC|iCandelo 2.3 le-UG101|
|5|Byte Stuffing|Icandelo 4.2 le-UG101|
|6|Yongeza iflegi yokuphela|Icandelo 2.4 le-UG101|
2.1.Gcwalisa isakhelo se-EZSP
Ifomathi yesakhelo se-EZSP ibonisiwe kwiSahluko sesi-3 se-UG100.
Nika ingqalelo ukuba le fomati inokutshintsha xa i-SDK iphuculwa.Xa ifomathi itshintsha, siya kuyinika inombolo entsha yenguqulelo.Inombolo yenguqulo ye-EZSP yakutshanje yi-8 xa eli nqaku libhalwa (EmberZnet 6.8).
Njengoko ifomathi yesakhelo se-EZSP inokwahluka phakathi kweenguqulelo ezahlukeneyo, kukho imfuneko enyanzelekileyo yokuba umamkeli kunye ne-NCPKUFUNEKAsebenza ngohlobo olufanayo lwe-EZSP.Ngaphandle koko, abakwazi ukunxibelelana njengoko kulindelekile.
Ukufezekisa oko, umyalelo wokuqala phakathi komkhosi kunye ne-NCP kufuneka ibe ngumyalelo wenguqulo.Ngamanye amazwi, umamkeli kufuneka afumane kwakhona inguqulelo ye-EZSP ye-NCP phambi kwalo naluphi na olunye unxibelelwano.Ukuba uguqulelo lwe-EZSP lwahlukile kuguqulelo lwe-EZSP lwecala lokusingatha, unxibelelwano maluyekwe.
Imfuno engacacanga emva koku yeyokuba ifomathi yoguqulelo lomyalelo inakoUNGAZE UTSHINTSHE.Ifomathi yomyalelo wenguqulo ye-EZSP inje ngasezantsi:
umthombo: https://zhuanlan.zhihu.com/p/339700391
来源: 知乎
著作权归作者所有
2.2.Data Randomization
Inkqubo ye-randomization eneenkcukacha ichazwe kwicandelo 4.3 le-UG101.Isakhelo sonke se-EZSP siya kwenziwa ngokungakhethiyo.I-randomization ikukuphela-OKANYE isakhelo se-EZSP kunye nolandelelwano olungenamkhethe.
Ngezantsi i-algorithm yokuvelisa ulandelelwano lwe-pseudo-random.
- irandi0 = 0×42
- ukuba bit 0 of randi ngu0, randi+1 = randi >> 1
- ukuba bit 0 of randi ngu 1, randi+1 = (randi >> 1) ^ 0xB8
2.3.Yongeza i-Control Byte
I-byte yolawulo yidatha ye-byte enye, kwaye kufuneka ifakwe kwintloko yesakhelo.Ifomathi iboniswe ngetheyibhile engezantsi:
Zizonke, kukho iindidi ezi-6 zolawulo lwee-bytes.Ezithathu zokuqala zisetyenziselwa izakhelo eziqhelekileyo ezinedatha ye-EZSP, kuquka i-DATA, i-ACK kunye ne-NAK.Ezithathu zokugqibela zisetyenziswa ngaphandle kwedatha ye-EZSP eqhelekileyo, kuquka i-RST, i-RSTACK kunye ne-ERROR.
Ubume be-RST, i-RSTACK kunye ne-ERROR zichazwe kwicandelo 3.1 ukuya ku-3.3.
2.4.Bala i-CRC
I-CRC ye-16-bit ibalwa kwii-bytes ukusuka kwi-byte yokulawula kude kube sekupheleni kwedatha.Umgangatho we-CRCCCITT (g(x) = x16 + x12 + x5 + 1) uqaliswa ku-0xFFFF.Eyona byte ibalulekileyo yandulela eyona byte ibaluleke kakhulu (imowudi ye-endian enkulu).
2.5.Byte Stuffing
Njengoko kuchaziwe kwicandelo 4.2 le-UG101, kukho amaxabiso e-byte agciniweyo asetyenziselwa injongo eyodwa.La maxabiso anokufumaneka kolu luhlu lulandelayo:
Xa ezi xabiso zibonakala kwisakhelo, unyango olukhethekileyo luya kwenziwa kwidatha.-Faka i-byte yokubaleka 0x7D phambi kwe-byte egciniweyo-Buyela umva i-bit5 yaloo byte egciniweyo
Ngezantsi kukho imizekelo yale algorithm:
2.6.Yongeza iflegi yokuphela
Isinyathelo sokugqibela kukongeza iflegi yokuphela 0x7E ukuya ekupheleni kwesakhelo.Emva koko, idatha ingathunyelwa kwi-port ye-UART.
3. Inkqubo yokususa isakhelo
Xa idatha ifunyenwe kwi-UART, kufuneka nje senze amanyathelo abuya umva ukuyicacisa.
4. Iimbekiselo
Ixesha lokuposa: Feb-08-2022