Pengarang: TorchiotBootCamp
Link: https: //zhuuanlan.Zhihu.com/p/339700391
Saka: Quora
1. Pambuka
Lab silikon wis nawakake host + NCP Solution kanggo desain gateway zigbee. Ing arsitektur iki, host bisa komunikasi karo NCP liwat antarmuka UART utawa SPI. Umume, UART digunakake amarga luwih gampang tinimbang Spi.
Silicon Lab uga nyedhiyakake proyek sampel kanggo program host, yaiku contoZ3Gatewayhost
Waca rangkeng-. Sampel kasebut mlaku ing sistem kaya UNIX. Sawetara pelanggan bisa uga pengin conto host sing bisa mbukak rtos, nanging sayangé, ora ana conto host adhedhasar RTos kanggo wektu kasebut. Pangguna kudu ngembangake program host dhewe adhedhasar RTOS.
Penting kanggo ngerti protokol gateway UART sadurunge ngembangake program host khusus. Kanggo loro-lorone NCP adhedhasar UART lan Based Spi, host nggunakake protokol EZSP kanggo komunikasi karo NCP.Ezspcekak kanggoProtokol serifol Emberznet, lan ditetepake ingUG100Waca rangkeng-. Kanggo UART Adhedhasar NCP, protokol lapisan ngisor ditindakake kanggo nggawa data EZSPA luwih saka UART, ikuAwuprotokol, cendhak kanggoHost Serial AsynchronoousWaca rangkeng-. Kanggo rincian liyane babagan Ash, wacaUG101lanUG115.
Hubungane antarane EZSP lan awu bisa digambarake kanthi diagram ing ngisor iki:
Format data EZSP lan protokol awu bisa digambarake dening diagram ing ngisor iki:
Ing kaca iki, kita bakal ngenalake proses kanggo nggawe data UART lan pigura penting sing asring digunakake ing gerbang zigbee.
2. Pigura
Proses pigura umum bisa digambarake dening bagan ing ngisor iki:
Ing grafik iki, data kasebut tegese pigura EZSP. Umumé, proses frame yaiku: | NO | Langkah |
|: - |: - |: - |
Kèndêl ingsun | 1 | isi pigura EZSSP | Ug100 |
| 2 | data acakalisasi | bagean 4.3 saka UG101 |
Kèndêl ingsun | 3 | Tambah Byte Kontrol | Chap2 lan Chap3 UG101 |
Kèndêl ingsun | 4 | Hitung CRC | Bagean 2,3 saka UG101 |
Kèndêl ingsun | 5 | Byte Stuffing | Bagean 4.2 saka UG101 |
Kèndêl ingsun | 6 | Tambah Bendera End | Bagean 2.4 saka UG101 |
2.1. Isi pigura EZSP
Format pigura EZSP digambarake ing Chap 3 ug100.
Pay manungsa waé sing bisa diganti nalika nganyarke SDK. Yen ngowahi format, kita bakal menehi nomer versi anyar. Nomer versi EZS EZS paling anyar yaiku 8 nalika artikel iki ditulis (Emberznet 6.8).
Minangka format pigura EZSP bisa beda ing antarane versi beda, ana syarat wajib yen host lan NCPMestiBisa nganggo versi EZSP sing padha. Yen ora, dheweke ora bisa komunikasi kaya sing diarep-arep.
Kanggo nggayuh iku, prentah pisanan antarane host lan NCP kudu dadi versi versi. Kanthi tembung liyane, host kudu retrive versi EZSP NCP sadurunge komunikasi liyane. Yen versi EZSP beda karo versi EZSP Side Host, komunikasi kasebut kudu diusir.
Syarat implisit ing mburi iki yaiku format printah versi bisaOra tau gantiWaca rangkeng-. Format printah EZSP kaya ing ngisor iki:
链接: https: //zhuuanlan.Zhihu.com/p/339700391
来源: 知乎
著作权归作者所有. 商业转载请联系作者获得授权, 非商业转载请注明出处.
2.2. Randomisasi data
Proses Randomisasi rinci diterangake ing bagean 4.3 saka UG101. Bingkai kabeh EZSP bakal acak. Randomisasi kasebut yaiku kanggo eksklusif-utawa EZSP lan urutan acak.
Ing ngisor iki algoritma ngasilake urutan pseudo-acak.
- Rand0 = 0 × 42
- Yen bit 0 randi yaiku 0, randi + 1 = randi >> 1
- Yen dicokot 0 saka rai 1, randi + 1 = (Randi >> 1) ^ 0xb8
2.3. Tambah Byte Kontrol
Kontrol Byte minangka data byte, lan kudu ditambahake ing sirah pigura. Format digambar karo tabel ing ngisor iki:
Pancen, ana 6 jinis bait kontrol. Telung pisanan digunakake kanggo bingkai umum kanthi data EZSP, kalebu data, Acack lan Nak. Telung pungkasan digunakake tanpa data ezsp sing umum, kalebu rst, rstack lan kesalahan.
Format ing rst, rstack lan kesalahan diterangake ing bagean 3.1 nganti 3.3.
2.4. Ngetung crc
CRC 16-bit diwilang ing bait saka kontrol Byte nganti pungkasan data. CCCCCTT standar (G (x) = x16 + x12 + x5 + 1) diwiwiti kanggo 0xfffff. Bangsa paling penting sadurunge ndhisiki Birth paling signifikan (Mode Big-Endian).
2,5. Byte Stuffing
Kaya sing diterangake ing bagean 4,2 saka UG101, ana sawetara nilai byte sing dilang kanthi tujuan khusus. Nilai kasebut bisa ditemokake ing tabel ing ngisor iki:
Yen nilai kasebut katon ing pigura, perawatan khusus bakal ditindakake kanggo data kasebut. - Lebokake Uwal Byte 0x7d ing ngarep bait sing dilindhungi - mbalikke bit5 saka sing dilindhungi undhang-undhang
Ing ngisor iki sawetara conto algoritma iki:
2.6. Tambah Bendera Pungkasan
Langkah pungkasan yaiku nambah flag pungkasan 0x7e nganti pungkasan pigura. Sawise iku, data kasebut bisa dikirim menyang port UART.
3 .. Proses bingkai de-Framing
Yen data ditampa saka UART, kita mung kudu nindakake langkah-langkah sing mbalikke kanggo dekode.
4. Cathetan
Wektu kirim: Feb-08-2022