Szerző : TorchiotbootCamp
Link : https: //zhuanlan.zhihu.com/p/339700391
: Quora -tól
1. Bevezetés
A Silicon Labs gazdagép+NCP megoldást kínált a Zigbee Gateway Design számára. Ebben az építészetben a gazda kommunikálhat az NCP -vel az UART vagy az SPI felületen keresztül. Leggyakrabban az UART -t használják, mivel sokkal egyszerűbb, mint az SPI.
A Silicon Labs mintát is készített a gazdaszervezet programjának, amely a mintaZ3gatewayhost
- A minta Unix-szerű rendszeren fut. Egyes ügyfelek esetleg olyan gazdamintát akarnak, amely az RTOS -on futhat, de sajnos egyelőre nincs RTOS alapú gazdaminta. A felhasználóknak kidolgozniuk kell a saját gazda programjukat az RTO -k alapján.
Fontos, hogy megértsük az UART Gateway Protocol -t, mielőtt kidolgoznánk a testreszabott gazdagép programot. Mind az UART alapú NCP, mind az SPI alapú NCP esetében a gazdagép az EZSP protokollot használja az NCP -vel való kommunikációhoz.EzsprövidEmberznet soros protokoll, és be van definiálvaUG100- Az UART alapú NCP -hez egy alsó réteg protokollt hajtanak végre, hogy az EZSP -adatokat megbízhatóan az UART -n keresztül szállítsák, azazHAMUprotokoll, rövidAszinkron soros gazdaszervezet- A hamuval kapcsolatos további részletekért kérjük, olvassa elUG101ésUG115.
Az EZSP és ASH közötti kapcsolat a következő ábrával szemléltethető:
Az EZSP és a hamu protokoll adatformátumát a következő ábra szemléltetheti:
Ezen az oldalon bemutatjuk az UART -adatok keretének és néhány kulcskeret keretének folyamatát, amelyeket gyakran használnak a Zigbee Gateway -ben.
2. Keretelés
Az általános keretrendezési folyamat a következő diagrammal szemléltethető:
Ebben a táblázatban az adatok az EZSP keretet jelentik. Általánosságban a keretezési folyamatok: | nem | lépés | Referencia |
|:-|:-|:-|
| 1 | Töltse ki az EZSP keretet | UG100 |
| 2 | Adatok véletlenszerűsítése | Az UG101 4.3. Szakasza |
| 3 | Adja hozzá az UG101 |
| 4 | Számítsa ki a CRC | Az UG101 | 2.3. Szakasza |
| 5 | bájt töltelék | Az UG101 4.2. Szakasza |
| 6 | Adja hozzá a végflagot | Az UG101 | 2.4. Szakasza |
2.1. Töltse ki az EZSP keretet
Az EZSP keretformátumot az UG100 3. fejezete szemlélteti.
Figyeljen arra, hogy ez a formátum megváltozhat, amikor az SDK frissül. Amikor a formátum megváltozik, új verziószámot adunk neki. A legújabb EZSP verziószám 8, amikor ezt a cikket megírják (Emberznet 6.8).
Mivel az EZSP keret formátuma eltérő lehet a különböző verziók között, kötelező követelmény, hogy a gazdagép és az NCPKELLDolgozzon ugyanazzal az EZSP verzióval. Ellenkező esetben nem tudnak kommunikálni a várt módon.
Ennek elérése érdekében a gazdagép és az NCP közötti első parancsnak a verzió parancsnak kell lennie. Más szavakkal, a gazdagépnek az NCP EZSP verzióját kell visszahúznia minden más kommunikáció előtt. Ha az EZSP verzió különbözik a gazda oldal EZSP verziójától, akkor a kommunikációt meg kell szakítani.
Ennek implicit követelménye az, hogy a verzióparancs formátuma képesSoha ne változtasson- Az EZSP verzióparancs formátuma az alábbiak szerint:
链接 : https: //zhuanlan.zhihu.com/p/339700391
来源 : 知乎
著作权归作者所有。商业转载请联系作者获得授权 , 非商业转载请注明出处。
2.2. Adatok véletlenszerűsítése
A részletes randomizációs folyamatot az UG101 4.3. Szakaszában írják le. A teljes EZSP keret randomizálódik. A randomizálás az EZSP keret kizárólagos vagy az ál-véletlenszerű szekvencia.
Az alábbiakban bemutatjuk az ál-véletlenszerű szekvencia előállításának algoritmust.
- rand0 = 0 × 42
- Ha a Randi 0 bitje 0, Randi+1 = randi >> 1
- Ha a Randi 0 bitje 1, randi+1 = (randi >> 1) ^ 0xb8
2.3. Adja hozzá a vezérlő bájtot
A Control Byte egy bájt adat, és hozzá kell adni a keret fejéhez. A formátumot az alábbi táblázat szemlélteti:
Teljesen, 6 típusú kontroll bájt létezik. Az első hármat az EZSP -adatokkal rendelkező általános keretekhez használják, beleértve az adatokat, az ACK -t és a NAK -t. Az utolsó háromot általános EZSP -adatok nélkül használják, beleértve az RST -t, az RSTACK -t és a hibát.
Az RST, az RSTACK és a hiba formátumát a 3.1–3.3. Szakasz ismerteti.
2.4. Számítsa ki a CRC -t
A 16 bites CRC-t kiszámítják a vezérlő bájtból az adatok végéig. A standard CRCCCITT (G (x) = x16 + x12 + x5 + 1) 0xFFFF -re inicializálódik. A legjelentősebb bájt megelőzi a legkevésbé jelentős bájtot (Big-endi-mód).
2.5. Bájt töltelék
Az UG101 4.2. Szakaszában leírtak szerint van néhány fenntartott byte -érték, amelyet speciális célokra használnak. Ezek az értékek a következő táblázatban találhatók:
Amikor ezek az értékek megjelennek a keretben, az adatokkal külön kezelést végeznek. - Helyezze be az Escape Byte 0x7D -t a fenntartott bájt elé - fordítsa meg a fenntartott bájt Bit5 -et
Az alábbiakban néhány példát találunk erre az algoritmusra:
2.6. Adja hozzá a végflagot
Az utolsó lépés az, hogy a 0x7E végflagot a keret végéhez adjuk hozzá. Ezután az adatokat el lehet küldeni az UART portra.
3. keretezési folyamat
Amikor az adatokat az UART -tól fogadják, csak a fordított lépéseket kell megtennünk a dekódoláshoz.
4. Hivatkozások
A postai idő: február-08-2022