Awtur:TorchIoTBootCamp
Link: https://zhuanlan.zhihu.com/p/339700391
Minn:Quora
1. Introduzzjoni
Silicon Labs offriet soluzzjoni host+NCP għad-disinn tal-gateway Zigbee. F'din l-arkitettura, il-host jista' jikkomunika mal-NCP permezz ta' interface UART jew SPI. L-aktar komuni, l-UART jintuża peress li huwa ħafna aktar sempliċi mill-SPI.
Silicon Labs ipprovdiet ukoll proġett kampjun għall-programm ospitanti, li huwa l-kampjunZ3GatewayHost
Il-kampjun jaħdem fuq sistema simili għal Unix. Xi klijenti jistgħu jixtiequ kampjun ta' host li jista' jaħdem fuq RTOS, iżda sfortunatament, għalissa m'hemm l-ebda kampjun ta' host ibbażat fuq RTOS. L-utenti jeħtieġ li jiżviluppaw il-programm host tagħhom stess ibbażat fuq RTOS.
Huwa importanti li tifhem il-protokoll tal-gateway UART qabel ma tiżviluppa programm ta' host personalizzat. Kemm għal NCP ibbażat fuq UART kif ukoll għal NCP ibbażat fuq SPI, il-host juża l-protokoll EZSP biex jikkomunika mal-NCP.EZSPhija abbrevjazzjoni għalProtokoll tas-Serje EmberZnet, u huwa definit fiUG100Għal NCP ibbażat fuq UART, jiġi implimentat protokoll ta' saff aktar baxx biex id-dejta EZSP tittrasporta b'mod affidabbli fuq UART, jiġifieriIRMIEDprotokoll, taqsira għalOspitanti Serjali AsinkronikuGħal aktar dettalji dwar l-ASH, jekk jogħġbok irreferi għalUG101uUG115.
Ir-relazzjoni bejn l-EZSP u l-ASH tista' tiġi illustrata bid-dijagramma li ġejja:
Il-format tad-dejta tal-EZSP u l-protokoll ASH jista' jiġi illustrat bid-dijagramma li ġejja:
F'din il-paġna, se nintroduċu l-proċess tal-inkwadrar tad-dejta UART u xi key frames li jintużaw ta' spiss fil-gateway Zigbee.
2. Qafas
Il-proċess ġenerali tal-inkwadrar jista' jiġi illustrat bit-tabella li ġejja:
F'din it-tabella, id-dejta tfisser il-frejm EZSP. B'mod ġenerali, il-proċessi tal-inkwadrar huma: |Ebda|Pass|Referenza|
|:-|:-|:-|
|1|Imla l-Qafas EZSP|UG100|
|2|Randomizzazzjoni tad-Data|Taqsima 4.3 ta' UG101|
|3|Żid il-Control Byte|Kapitlu 2 u Kapitlu 3 ta' UG101|
|4|Ikkalkula s-CRC|Taqsima 2.3 ta' UG101|
|5|Byte Stuffing|Taqsima 4.2 ta' UG101|
|6|Żid il-Bandiera tat-Tmiem|Taqsima 2.4 ta' UG101|
2.1. Imla l-Qafas tal-EZSP
Il-format tal-qafas EZSP huwa illustrat fil-Kapitolu 3 tal-UG100.
Oqgħod attent li dan il-format jista' jinbidel meta l-SDK jiġi aġġornat. Meta l-format jinbidel, aħna nagħtuh numru ta' verżjoni ġdid. L-aħħar numru ta' verżjoni tal-EZSP huwa 8 meta nkiteb dan l-artiklu (EmberZnet 6.8).
Billi l-format tal-qafas tal-EZSP jista' jkun differenti bejn verżjonijiet differenti, hemm rekwiżit obbligatorju li l-host u l-NCPGĦANDUjaħdmu bl-istess verżjoni tal-EZSP. Inkella, ma jistgħux jikkomunikaw kif mistenni.
Biex jinkiseb dan, l-ewwel kmand bejn il-host u l-NCP irid ikun il-kmand tal-verżjoni. Fi kliem ieħor, il-host irid jirkupra l-verżjoni EZSP tal-NCP qabel kwalunkwe komunikazzjoni oħra. Jekk il-verżjoni EZSP hija differenti mill-verżjoni EZSP tan-naħa tal-host, il-komunikazzjoni trid tiġi abortita.
Ir-rekwiżit impliċitu wara dan huwa li l-format tal-kmand tal-verżjoni jista'QATT MA TIBDILXIl-format tal-kmand tal-verżjoni EZSP huwa bħal hawn taħt:
链接: https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出出
2.2. Randomizzazzjoni tad-Data
Il-proċess dettaljat ta' randomizzazzjoni huwa deskritt fit-taqsima 4.3 tal-UG101. Il-qafas EZSP kollu se jkun randomizzat. Ir-randomizzazzjoni hija permezz ta' metodu esklussiv ta' OR bejn il-qafas EZSP u sekwenza psewdo-random.
Hawn taħt jinsab l-algoritmu tal-ġenerazzjoni tas-sekwenza psewdo-każwali.
- rand0 = 0×42
- jekk il-bit 0 ta' randi huwa 0, randi+1 = randi >> 1
- jekk il-bit 0 ta' randi huwa 1, randi+1 = (randi >> 1) ^ 0xB8
2.3. Żid il-Byte tal-Kontroll
Il-byte tal-kontroll huwa dejta ta' byte wieħed, u għandu jiżdied mal-head tal-frejm. Il-format huwa illustrat fit-tabella t'hawn taħt:
B'kollox, hemm 6 tipi ta' bytes ta' kontroll. L-ewwel tlieta jintużaw għal frejms komuni b'dejta EZSP, inklużi DATA, ACK u NAK. L-aħħar tlieta jintużaw mingħajr dejta EZSP komuni, inklużi RST, RSTACK u ERROR.
Il-format tal-RST, RSTACK u ERROR huma deskritti fit-taqsimiet 3.1 sa 3.3.
2.4. Ikkalkula s-CRC
CRC ta' 16-il bit huwa kkalkulat fuq bytes mill-byte ta' kontroll sat-tmiem tad-dejta. Is-CRCCICITT standard (g(x) = x16 + x12 + x5 + 1) huwa inizjalizzat għal 0xFFFF. L-aktar byte sinifikanti jiġi qabel l-inqas byte sinifikanti (modalità big-endian).
2.5. Mili ta' Bytes
Kif deskritt fit-taqsima 4.2 tal-UG101, hemm xi valuri ta' bytes riżervati użati għal skopijiet speċjali. Dawn il-valuri jistgħu jinstabu fit-tabella li ġejja:
Meta dawn il-valuri jidhru fil-frejm, isir trattament speċjali lid-dejta. – Daħħal l-escape byte 0x7D quddiem il-byte riservat – Inqaleb il-bit5 ta' dak il-byte riservat
Hawn taħt hawn xi eżempji ta’ dan l-algoritmu:
2.6. Żid il-Bandiera tat-Tmiem
L-aħħar pass huwa li żżid il-bandiera tat-tmiem 0x7E mat-tmiem tal-frejm. Wara dan, id-dejta tista' tintbagħat lill-port UART.
3. Proċess ta' Tneħħija tal-Qafas
Meta nirċevu d-dejta mill-UART, irridu biss nagħmlu l-passi inversi biex niddekodifikawha.
4. Referenzi
Ħin tal-posta: 08 ta' Frar 2022