Zigbee ezsp uart- ის შესახებ

ავტორი : TorchiotBootCamp
ბმული : https: //zhuanlan.zhihu.com/p/339700391
: Quora

1. შესავალი

Silicon Labs– მა შესთავაზა მასპინძელი+NCP გადაწყვეტა Zigbee Gateway Design– ისთვის. ამ არქიტექტურაში მასპინძელს შეუძლია NCP– სთან კომუნიკაცია UART ან SPI ინტერფეისით. ყველაზე ხშირად, UART გამოიყენება, როგორც ეს ბევრად უფრო მარტივია, ვიდრე SPI.

Silicon Labs– მა ასევე მიაწოდა მასპინძელი პროგრამის ნიმუშის პროექტი, რომელიც არის ნიმუშიZ3gatewayhost. ნიმუში გადის Unix– ის მსგავსი სისტემაზე. ზოგიერთ მომხმარებელს შეიძლება მოისურვოს მასპინძელი ნიმუში, რომელსაც შეუძლია RTOS– ზე გაშვება, მაგრამ სამწუხაროდ, ამ დროისთვის RTOS– ზე დაფუძნებული მასპინძელი ნიმუში არ არსებობს. მომხმარებლებმა უნდა შეიმუშაონ საკუთარი მასპინძელი პროგრამა RTOS– ის საფუძველზე.

მნიშვნელოვანია გაიგოთ UART Gateway პროტოკოლი მასპინძელი მასპინძელი პროგრამის შემუშავებამდე. როგორც UART- ზე დაფუძნებული NCP და SPI დაფუძნებული NCP, მასპინძელი იყენებს EZSP პროტოკოლს NCP– სთან კომუნიკაციისთვის.EzspმოკლეაEmberznet სერიული პროტოკოლიდა ის განსაზღვრულიაUg100. UART– ზე დაფუძნებული NCP– სთვის, ქვედა ფენის პროტოკოლი ხორციელდება EZSP– ის მონაცემების საიმედოდ გადასატანად UART– ზე, ეს არისფერფლიპროტოკოლი, მოკლეასინქრონული სერიული მასპინძელი. დამატებითი ინფორმაციისთვის ეშის შესახებ, გთხოვთ, გაეცნოთUg101დაUg115.

EZSP- სა და ASH- ს შორის კავშირი შეიძლება მოცემული დიაგრამით:

1

EZSP და ASH პროტოკოლის მონაცემთა ფორმატი შეიძლება ილუსტრირებული იყოს შემდეგი დიაგრამით:

2

ამ გვერდზე ჩვენ წარმოგიდგენთ UART მონაცემების ჩარჩოების ჩარჩოების და რამდენიმე ძირითადი ჩარჩოს ჩარჩოების ჩარჩოების პროცესს, რომლებიც ხშირად გამოიყენება Zigbee Gateway- ში.

2. ჩარჩო

ზოგადი ჩარჩო პროცესის ილუსტრირება შესაძლებელია შემდეგი გრაფიკით:

3

ამ სქემაში მონაცემები ნიშნავს EZSP ჩარჩოს. ზოგადად, ჩარჩოების პროცესებია: | არა | ნაბიჯი | მითითება |

|:-|:-|:-|

| 1 | შეავსეთ EZSP ჩარჩო | UG100 |

| 2 | მონაცემთა რანდომიზაცია | UG101- ის 4.3 ნაწილი |

| 3 | დაამატეთ საკონტროლო ბაიტი | chap2 და chap3 of ug101 |

| 4 | გამოთვალეთ CRC | ნაწილი 2.3 UG101 |

| 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- ის Chap 4 -ში. პარამეტრის ველი არის მასპინძელი პროგრამის EZSP ვერსია. როდესაც ეს სტატია დაწერილია, ის 8 -ია.
7
: : Torchiotbootcamp
: Https: //zhuanlan.zhihu.com/p/339700391
: :
著作权归作者所有。商业转载请联系作者获得授权 ,

2.2. მონაცემთა რანდომიზაცია

დეტალური რანდომიზაციის პროცესი აღწერილია UG101- ის 4.3 ნაწილში. EZSP მთელი ჩარჩო იქნება რანდომიზებული. რანდომიზაცია არის ექსკლუზიური, ან EZSP ჩარჩოსა და ფსევდო-შემთხვევითი თანმიმდევრობით.

ქვემოთ მოცემულია ფსევდო-შემთხვევითი თანმიმდევრობის წარმოქმნის ალგორითმი.

  • RAND0 = 0 × 42
  • თუ რანდი 0 არის 0, randi+1 = randi >> 1
  • თუ რანდი 0 არის 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

16-ბიტიანი CRC გამოითვლება ბაიტებზე საკონტროლო ბაიტიდან მონაცემების დასრულებამდე. სტანდარტული crcccitt (g (x) = x16 + x12 + x5 + 1) ინიცირებულია 0xffff- ზე. ყველაზე მნიშვნელოვანი ბაიტი წინ უძღვის ყველაზე მნიშვნელოვან ბაიტს (დიდი ენდური რეჟიმი).

2.5. ბაიტი შევსება

როგორც UG101- ის 4.2 ნაწილშია აღწერილი, არსებობს რამდენიმე დაცული ბაიტის ღირებულება, რომელიც გამოიყენება სპეციალური მიზნით. ეს მნიშვნელობები შეგიძლიათ იხილოთ შემდეგ ცხრილში:

7

როდესაც ეს მნიშვნელობები ჩარჩოში გამოჩნდება, მონაცემების სპეციალური მკურნალობა მოხდება. - ჩადეთ გაქცევის ბაიტი 0x7D დაცული ბაიტის წინ - შეცვალეთ ბაიტი Bit5

ქვემოთ მოცემულია ამ ალგორითმის რამდენიმე მაგალითი:

8

2.6. დაამატეთ ბოლო დროშა

საბოლოო ნაბიჯი არის ჩარჩოს ბოლოში დასასრული დროშა 0x7E დამატება. ამის შემდეგ, მონაცემების გაგზავნა შესაძლებელია UART პორტში.

3. დე-ჩარჩოების პროცესი

როდესაც მონაცემები მიიღება UART– დან, ჩვენ უბრალოდ უნდა გავაკეთოთ საპირისპირო ნაბიჯები მისი გაშიფვრისთვის.

4. ცნობები


პოსტის დრო: თებერვალი -08-2022
WhatsApp ონლაინ ჩეთი!