Zigbee EZSP UART-ийн тухай

Зохиогч: TorchIoTBootCamp
Холбоос: https://zhuanlan.zhihu.com/p/339700391
Эх сурвалж: Quora

1. Танилцуулга

Silicon Labs нь Zigbee гарцын дизайны хувьд хост+NCP шийдлийг санал болгосон. Энэ архитектурт хост нь UART эсвэл SPI интерфейсээр дамжуулан NCP-тэй холбогдож болно. SPI-ээс хамаагүй хялбар тул UART-ийг ихэвчлэн ашигладаг.

Цахиурын лаборатори нь хост хөтөлбөрт зориулж загвар төслийг гаргаж өгсөн бөгөөд энэ нь дээж юмZ3GatewayHost. Дээж нь Unix-тэй төстэй систем дээр ажилладаг. Зарим хэрэглэгчид RTOS дээр ажиллах боломжтой хостын дээж авахыг хүсч байгаа ч харамсалтай нь одоогоор RTOS дээр суурилсан хостын дээж байхгүй байна. Хэрэглэгчид RTOS дээр суурилсан өөрийн хост програмыг хөгжүүлэх хэрэгтэй.

Өөрчлөн тохируулсан хост програмыг боловсруулахаасаа өмнө UART гарцын протоколыг ойлгох нь чухал. UART-д суурилсан NCP болон SPI-д суурилсан NCP-ийн хувьд хост нь NCP-тэй холбогдохын тулд EZSP протоколыг ашигладаг.EZSPгэсэн товчлол юмEmberZnet цуврал протокол-д тодорхойлогддогUG100. UART дээр суурилсан NCP-ийн хувьд EZSP өгөгдлийг UART дээр найдвартай дамжуулахын тулд доод түвшний протоколыг хэрэгжүүлдэг.ҮНСпротокол, товчлолАсинхрон цуврал хост. ASH-ийн талаарх дэлгэрэнгүй мэдээллийг эндээс авна ууUG101болонUG115.

EZSP ба ASH-ийн хамаарлыг дараах диаграмаар дүрсэлж болно.

1

EZSP болон ASH протоколын өгөгдлийн форматыг дараах диаграмаар дүрсэлж болно.

2

Энэ хуудсанд бид Zigbee gateway-д байнга хэрэглэгддэг UART өгөгдөл болон зарим гол фреймүүдийг дүрслэх үйл явцыг танилцуулах болно.

2. Хүрээ хийх

Хүрээний ерөнхий үйл явцыг дараах графикаар дүрсэлж болно.

3

Энэ диаграммд өгөгдөл нь EZSP хүрээ гэсэн үг юм. Ерөнхийдөө хүрээ үүсгэх процессууд нь: |No|Step|Reference|

|:-|:-|:-|

|1|EZSP хүрээг бөглөнө үү|UG100|

|2|Өгөгдлийн санамсаргүй хувилбар|UG101-ийн 4.3-р хэсэг|

|3|UG101-ийн Хяналтын байт|Бүлэг 2 ба 3-р бүлэгт нэмнэ үү

|4|ХХҮТ-ийг тооцоолох|UG101-ийн 2.3-р хэсэг|

|5|Байт дүүргэх|UG101-ийн 4.2-р хэсэг|

|6|Төгсгөлийн тугийг нэмэх|UG101-ийн 2.4-р хэсэг|

2.1. EZSP хүрээг бөглөнө үү

EZSP фрэймийн форматыг UG100-ийн 3-р бүлэгт дүрсэлсэн болно.

4

SDK-г шинэчлэх үед энэ формат өөрчлөгдөж болзошгүйг анхаарна уу. Формат өөрчлөгдөхөд бид шинэ хувилбарын дугаарыг өгөх болно. Энэ нийтлэлийг бичихэд хамгийн сүүлийн үеийн EZSP хувилбарын дугаар 8 байна (EmberZnet 6.8).

EZSP хүрээний формат нь өөр хувилбаруудын хооронд өөр байж болох тул хост болон NCP нь заавал байх ёстой.ЗААВАЛижил EZSP хувилбартай ажиллах. Тэгэхгүй бол тэд санаснаараа харилцаж чадахгүй.

Үүнд хүрэхийн тулд хост болон NCP хоёрын хоорондох эхний тушаал нь хувилбарын команд байх ёстой. Өөрөөр хэлбэл, хост нь бусад харилцааны өмнө NCP-ийн EZSP хувилбарыг сэргээх ёстой. Хэрэв EZSP хувилбар нь хост талын EZSP хувилбараас ялгаатай бол харилцаа холбоог таслах ёстой.

Үүний цаад далд шаардлага нь хувилбарын командын формат нь боломжтойХЭЗЭЭ Ч ӨӨРЧЛӨХГҮЙ. EZSP хувилбарын командын формат дараах байдалтай байна.

5

Параметрийн талбар болон хувилбарын хариултын форматын тайлбарыг UG100-ийн 4-р бүлгээс олж болно. Параметрийн талбар нь хост програмын EZSP хувилбар юм. Энэ нийтлэлийг бичихэд 8 байна.
7
Жишээ нь: TorchIoTBootCamp
链接:https://zhuanlan.zhihu.com/p/339700391
来源:知乎
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出

2.2. Өгөгдлийг санамсаргүй болгох

Нарийвчилсан санамсаргүй байдлын үйл явцыг UG101-ийн 4.3-т тайлбарласан болно. EZSP хүрээг бүхэлд нь санамсаргүй байдлаар хуваах болно. Санамсаргүй хуваарилалт нь онцгой буюу EZSP хүрээ болон псевдо санамсаргүй дараалал юм.

Доорх нь псевдо санамсаргүй дарааллыг үүсгэх алгоритм юм.

  • ранд0 = 0×42
  • хэрэв рандигийн 0 бит 0 бол ранди+1 = ранди >> 1
  • хэрэв рандигийн 0 бит 1 бол ранди+1 = (ранди >> 1) ^ 0xB8

2.3. Хяналтын байтыг нэмнэ үү

Хяналтын байт нь нэг байт өгөгдөл бөгөөд хүрээний толгойд нэмэгдэх ёстой. Форматыг дараах хүснэгтээр үзүүлэв.

6

Нийтдээ 6 төрлийн хяналтын байт байдаг. Эхний гурвыг DATA, ACK, NAK зэрэг EZSP өгөгдөлтэй нийтлэг фреймд ашигладаг. Сүүлийн гурвыг RST, RSTACK, ERROR гэх мэт нийтлэг EZSP өгөгдөлгүйгээр ашигладаг.

RST, RSTACK болон ERROR форматыг 3.1-ээс 3.3-т тайлбарласан болно.

2.4. CRC-ийг тооцоол

16 битийн CRC-ийг хяналтын байтаас өгөгдлийн төгсгөл хүртэлх байтаар тооцдог. Стандарт CRCCCITT (g(x) = x16 + x12 + x5 + 1) нь 0xFFFF болж тохируулагдсан. Хамгийн чухал байт нь хамгийн бага ач холбогдол бүхий байт (том-эндиан горим) -ын өмнө байна.

2.5. Байт дүүргэлт

UG101-ийн 4.2-т тайлбарласны дагуу тусгай зориулалтын зарим нөөц байтын утгууд байдаг. Эдгээр утгыг дараах хүснэгтээс харж болно.

7

Эдгээр утгууд фрейм дээр гарч ирэх үед өгөгдөлд тусгай эмчилгээ хийгдэнэ. – Захиалагдсан байтны өмнө 0x7D зугтах байтыг оруулна уу – Захиалагдсан байтны бит5-ыг урвуулна.

Энэ алгоритмын зарим жишээг доор харуулав.

8

2.6. Төгсгөлийн тугийг нэмнэ үү

Эцсийн алхам бол хүрээний төгсгөлд 0x7E төгсгөлийн тугийг нэмэх явдал юм. Үүний дараа өгөгдлийг UART порт руу илгээж болно.

3. Хүрээг арилгах үйл явц

UART-аас өгөгдөл хүлээн авах үед бид кодыг тайлахын тулд урвуу алхмуудыг хийх хэрэгтэй.

4. Ашигласан материал


Шуудангийн цаг: 2022 оны 2-р сарын 08-ны өдөр
WhatsApp онлайн чат!