เกี่ยวกับ zigbee ezsp uart

ผู้แต่ง: Torchiotbootcamp
ลิงค์: https: //zhuanlan.zhihu.com/p/339700391
จาก: Quora

1. บทนำ

Silicon Labs เสนอโซลูชัน Host+NCP สำหรับการออกแบบเกตเวย์ Zigbee ในสถาปัตยกรรมนี้โฮสต์สามารถสื่อสารกับ NCP ผ่านอินเตอร์เฟส UART หรือ SPI โดยทั่วไปแล้ว UART จะถูกใช้เพราะง่ายกว่า SPI มาก

Silicon Labs ยังจัดทำโครงการตัวอย่างสำหรับโปรแกรมโฮสต์ซึ่งเป็นตัวอย่างz3gatewayhost- ตัวอย่างทำงานบนระบบที่มีลักษณะเหมือน Unix ลูกค้าบางคนอาจต้องการตัวอย่างโฮสต์ที่สามารถทำงานบน RTOs แต่น่าเสียดายที่ไม่มีตัวอย่างโฮสต์ที่ใช้ RTOS ในขณะนี้ ผู้ใช้จำเป็นต้องพัฒนาโปรแกรมโฮสต์ของตัวเองตาม RTOS

สิ่งสำคัญคือต้องเข้าใจโปรโตคอล UART Gateway ก่อนที่จะพัฒนาโปรแกรมโฮสต์ที่กำหนดเอง สำหรับ NCP ที่ใช้ NCP และ SPI ทั้ง URART โฮสต์ใช้โปรโตคอล EZSP เพื่อสื่อสารกับ NCPEZSPสั้นสำหรับโปรโตคอลอนุกรม Emberznetและมันถูกกำหนดไว้ในUG100- สำหรับ NCP ที่ใช้ UART โปรโตคอลเลเยอร์ที่ต่ำกว่าจะถูกนำมาใช้เพื่อนำข้อมูล EZSP ไว้อย่างน่าเชื่อถือผ่าน UART นั่นคือเถ้าโปรโตคอลสั้นสำหรับโฮสต์อนุกรม- สำหรับรายละเอียดเพิ่มเติมเกี่ยวกับ Ash โปรดดูUG101และUG115.

ความสัมพันธ์ระหว่าง EZSP และ Ash สามารถแสดงได้โดยแผนภาพต่อไปนี้:

1

รูปแบบข้อมูลของ EZSP และโปรโตคอล Ash สามารถแสดงได้โดยแผนภาพต่อไปนี้:

2

ในหน้านี้เราจะแนะนำกระบวนการกำหนดกรอบข้อมูล UART และเฟรมสำคัญบางส่วนที่ใช้บ่อยใน Zigbee Gateway

2. การวางกรอบ

กระบวนการจัดเฟรมทั่วไปสามารถแสดงโดยแผนภูมิต่อไปนี้:

3

ในแผนภูมินี้ข้อมูลหมายถึงเฟรม EZSP โดยทั่วไปกระบวนการกำหนดกรอบคือ: | ไม่ | ขั้นตอน | อ้างอิง |

-

| 1 | เติมเฟรม EZSP | UG100 |

| 2 | การสุ่มข้อมูล | ส่วน 4.3 ของ UG101 |

| 3 | เพิ่มไบต์ควบคุม | Chap2 และ Chap3 ของ UG101 |

| 4 | คำนวณ CRC | มาตรา 2.3 ของ UG101 |

| 5 | ไบต์การบรรจุ | ส่วน 4.2 ของ UG101 |

| 6 | เพิ่มธงท้าย | ส่วนที่ 2.4 ของ UG101 |

2.1. เติมเฟรม EZSP

รูปแบบเฟรม EZSP แสดงใน Chap 3 ของ UG100

4

ให้ความสนใจว่ารูปแบบนี้อาจเปลี่ยนแปลงได้เมื่อการอัพเกรด SDK เมื่อรูปแบบเปลี่ยนแปลงเราจะให้หมายเลขเวอร์ชันใหม่ หมายเลขรุ่น EZSP ล่าสุดคือ 8 เมื่อบทความนี้เขียน (Emberznet 6.8)

เนื่องจากรูปแบบเฟรม EZSP อาจแตกต่างกันระหว่างรุ่นที่แตกต่างกันจึงมีข้อกำหนดที่จำเป็นสำหรับโฮสต์และ NCPต้องทำงานกับรุ่น EZSP เดียวกัน มิฉะนั้นพวกเขาไม่สามารถสื่อสารได้ตามที่คาดหวัง

เพื่อให้บรรลุสิ่งนั้นคำสั่งแรกระหว่างโฮสต์และ NCP จะต้องเป็นคำสั่งเวอร์ชัน กล่าวอีกนัยหนึ่งโฮสต์จะต้องย้อนกลับรุ่น EZSP ของ NCP ก่อนการสื่อสารอื่น ๆ หากเวอร์ชัน EZSP แตกต่างจากรุ่น EZSP ของ Host Side การสื่อสารจะต้องถูกยกเลิก

ข้อกำหนดโดยนัยที่อยู่เบื้องหลังนี้คือรูปแบบของคำสั่งเวอร์ชันสามารถทำได้อย่าเปลี่ยน- รูปแบบคำสั่ง EZSP เวอร์ชันเป็นเหมือนด้านล่าง:

5

คำอธิบายของฟิลด์พารามิเตอร์และรูปแบบของการตอบสนองรุ่นสามารถพบได้ใน Chap 4 ของ UG100 ฟิลด์พารามิเตอร์คือเวอร์ชัน EZSP ของโปรแกรมโฮสต์ เมื่อบทความนี้เขียนขึ้นมันคือ 8
7
作者: Torchiotbootcamp
链接: https: //zhuanlan.zhihu.com/p/339700391
来源: 知乎
著作权归作者所有。商业转载请联系作者获得授权, 非商业转载请注明出处。

2.2. การสุ่มข้อมูล

กระบวนการสุ่มโดยละเอียดอธิบายไว้ในส่วนที่ 4.3 ของ UG101 เฟรม EZSP ทั้งหมดจะถูกสุ่ม การสุ่มคือการพิเศษ-หรือเฟรม EZSP และลำดับหลอกเทียม

ด้านล่างนี้เป็นอัลกอริทึมของการสร้างลำดับหลอกเทียม

  • Rand0 = 0 × 42
  • ถ้าบิต 0 ของ randi คือ 0, randi+1 = randi >> 1
  • ถ้าบิต 0 ของ randi คือ 1, randi+1 = (randi >> 1) ^ 0xb8

2.3. เพิ่มไบต์ควบคุม

ไบต์ควบคุมเป็นข้อมูลไบต์หนึ่งตัวและควรเพิ่มลงในหัวของเฟรม รูปแบบจะแสดงด้วยตารางด้านล่าง:

6

โดยสิ้นเชิงมีไบต์ควบคุม 6 ชนิด สามตัวแรกใช้สำหรับเฟรมทั่วไปที่มีข้อมูล EZSP รวมถึงข้อมูล ACK และ NAK สามสุดท้ายใช้โดยไม่มีข้อมูล EZSP ทั่วไปรวมถึง RST, RSTACK และข้อผิดพลาด

รูปแบบของ rst, rstack และข้อผิดพลาดอธิบายไว้ในส่วน 3.1 ถึง 3.3

2.4. คำนวณ CRC

CRC 16 บิตคำนวณจากไบต์จากไบต์ควบคุมจนถึงสิ้นสุดข้อมูล CRCCCITT มาตรฐาน (G (x) = x16 + x12 + x5 + 1) จะเริ่มต้นเป็น 0xffff ไบต์ที่สำคัญที่สุดนำหน้าไบต์ที่สำคัญน้อยที่สุด (โหมดใหญ่-เอดิน)

2.5. การบรรจุไบต์

ตามที่อธิบายไว้ในส่วน 4.2 ของ UG101 มีค่าไบต์ที่สงวนไว้บางส่วนที่ใช้เพื่อวัตถุประสงค์พิเศษ ค่าเหล่านี้สามารถพบได้ในตารางต่อไปนี้:

7

เมื่อค่าเหล่านี้ปรากฏในเฟรมการรักษาพิเศษจะทำกับข้อมูล - แทรก The Escape Byte 0x7d ด้านหน้าไบต์ที่สงวนไว้ - ย้อนกลับ Bit5 ของไบต์ที่สงวนไว้

ด้านล่างนี้เป็นตัวอย่างของอัลกอริทึมนี้:

8

2.6. เพิ่มธงท้าย

ขั้นตอนสุดท้ายคือการเพิ่มธงปลาย 0x7e ไปที่ส่วนท้ายของเฟรม หลังจากนั้นข้อมูลสามารถส่งไปยังพอร์ต UART

3. กระบวนการ de-framing

เมื่อได้รับข้อมูลจาก UART เราเพียงแค่ต้องทำตามขั้นตอนย้อนกลับเพื่อถอดรหัส

4. ข้อมูลอ้างอิง


เวลาโพสต์: ก.พ. -08-2022
whatsapp แชทออนไลน์!