A Zigbee Ezsp uartról

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ő:

1

Az EZSP és a hamu protokoll adatformátumát a következő ábra szemléltetheti:

2

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ő:

3

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.

4

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:

5

A paraméter mező magyarázata és a verzióválasz formátuma az UG100 4. fejezetében található. A paraméter mező a host program EZSP verziója. Amikor ezt a cikket megírják, 8 éves.
7
作者 : TorchiotbootCamp
链接 : 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:

6

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:

7

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:

8

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
WhatsApp online chat!