Autors : TorchiotbootCamp
Saite : https: //zhuanlan.zhihu.com/p/339700391
No : Quora
1. Ievads
Silicon Labs ir piedāvājis resursdatoru+NCP risinājumu Zigbee Gateway dizainam. Šajā arhitektūrā saimnieks var sazināties ar NCP, izmantojot UART vai SPI interfeisu. Visbiežāk UART tiek izmantots, jo tas ir daudz vienkāršāks nekā SPI.
Silīcija laboratorija ir arī nodrošinājusi parauga projektu resursdatora programmai, kas ir paraugsZ3gatewayhost
Apvidū Paraugs darbojas ar Unix līdzīgu sistēmu. Daži klienti var vēlēties resursdatora paraugu, kas var darboties ar RTO, bet diemžēl pagaidām nav RTOS resursdatora parauga. Lietotājiem jāizstrādā sava uzņēmēja programma, pamatojoties uz RTO.
Pirms pielāgotas resursdatora programmas izstrādes ir svarīgi saprast UART Gateway protokolu. Gan UART balstītā NCP, gan SPI balstītā NCP resursdators izmanto EZSP protokolu, lai sazinātos ar NCP.EZSPir īssEmberznet seriālais protokols, un tas ir definētsUG100Apvidū UART balstītam NCP tiek ieviests zemāks slāņa protokols, lai droši pārnestu EZSP datus virs UART, tas irPelnaprotokols, īss parAsinhronā sērijveida saimnieksApvidū Lai iegūtu sīkāku informāciju par pelniem, lūdzu, skatietUG101unUg115.
Saistību starp EZSP un pelniem var parādīt ar šādu diagrammu:
EZSP un pelnu protokola datu formātu var parādīt ar šādu diagrammu:
Šajā lapā mēs iepazīstināsim ar UART datu un dažiem atslēgu kadriem, kurus bieži izmanto Zigbee vārtejā.
2. Iestatīšana
Vispārējo ietvaru procesu var ilustrēt ar šādu diagrammu:
Šajā diagrammā dati nozīmē EZSP rāmi. Kopumā kadrēšanas procesi ir: | nē | Solis | atsauce |
|:-|:-|:-|
| 1 | Aizpildiet EZSP rāmi | ug100 |
| 2 | Datu nejaušināšana | UG101 4.3. Sadaļa |
| 3 | Pievienojiet vadības baitu | UG101 | Chap2 un 3. nodaļa |
| 4 | Aprēķiniet CRC | UG101 2.3. Sadaļu |
| 5 | baitu pildījums | UG101 4.2. Sadaļa |
| 6 | Pievienojiet gala karogu | UG101 2.4. Sadaļa |
2.1. Aizpildiet EZSP rāmi
EZSP rāmja formāts ir ilustrēts UG100 3. nodaļā.
Pievērsiet uzmanību, ka šis formāts var mainīties, uzlabojot SDK. Kad formāts mainīsies, mēs tam piešķirsim jaunu versijas numuru. Jaunākais EZSP versijas numurs ir 8, kad ir uzrakstīts šis raksts (Emberznet 6.8).
Tā kā EZSP rāmja formāts dažādās versijās var būt atšķirīgs, pastāv obligāta prasība, ka saimnieks un NCPPrasītDarbs ar to pašu EZSP versiju. Pretējā gadījumā viņi nevar sazināties, kā paredzēts.
Lai to sasniegtu, pirmajai komandai starp resursdatoru un NCP jābūt komandai versijai. Citiem vārdiem sakot, resursdatoram pirms jebkuras citas komunikācijas ir jāatstāj NCP EZSP versija. Ja EZSP versija ir atšķirīga ar resursdatora puses EZSP versiju, komunikācija ir jāizslēdz.
Netieša prasība, kas aiz tā ir, ir tāda, ka versijas komandas formāts varNekad nemainītiesApvidū EZSP versijas komandas formāts ir tāds pats kā zemāk:
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。
2.2. Datu nejaušināšana
Detalizēts randomizācijas process ir aprakstīts UG101 4.3. Sadaļā. Viss EZSP rāmis tiks randomizēts. Randomizācija ir ekskluzīva vai EZSP rāmja un pseido-randomu secība.
Zemāk ir pseido-randomu secības ģenerēšanas algoritms.
- rand0 = 0 × 42
- Ja randi 0 bits ir 0, randi+1 = randi >> 1
- Ja randi 0 bits ir 1, randi+1 = (randi >> 1) ^ 0xb8
2.3. Pievienojiet vadības baitu
Kontroles baits ir viena baita dati, un tie jāpievieno rāmja galvai. Formāts ir parādīts ar tabulu zemāk:
Kopumā ir 6 kontroles baitu veidi. Pirmie trīs tiek izmantoti kopīgiem rāmjiem ar EZSP datiem, ieskaitot datus, ACK un NAK. Pēdējie trīs tiek izmantoti bez kopīgiem EZSP datiem, ieskaitot RST, RSTACK un kļūdu.
RST, RSTACK un kļūdas formāts ir aprakstīts 3.1. Līdz 3.3. Sadaļā.
2.4. Aprēķiniet CRC
16 bitu CRC aprēķina uz baitiem no kontroles baita līdz datu beigām. Standarta crcccitt (g (x) = x16 + x12 + x5 + 1) tiek inicializēts uz 0xffff. Visnozīmīgākais baits ir pirms vismazāk nozīmīgā baita (lielā valodas režīms).
2.5. Baitu pildījums
Kā aprakstīts UG101 4.2. Sadaļā, ir dažas rezervētas baitu vērtības, kuras tiek izmantotas īpašam mērķim. Šīs vērtības var atrast šajā tabulā:
Kad šīs vērtības parādās rāmī, datiem tiks veikta īpaša apstrāde. - Ievietojiet aizbēgšanas baitu 0x7d rezervētā baita priekšā - apgrieziet Bit5 no tā rezervētā baita
Zemāk ir daži šī algoritma piemēri:
2.6. Pievienojiet gala karogu
Pēdējais solis ir pievienot gala karogu 0x7E rāmja beigām. Pēc tam datus var nosūtīt uz UART portu.
3. DeAramēšanas process
Kad dati tiek saņemti no UART, mums vienkārši jāveic apgriezti soļi, lai to atšifrētu.
4. Atsauces
Pasta laiks: 2008.-2022. Februāris