Σχετικά με το Zigbee EZSP UART

Συγγραφέας: Torchiotbootcamp
Σύνδεσμος: https: //zhuanlan.zhihu.com/p/339700391
Από : Quora

1. Εισαγωγή

Το Silicon Labs έχει προσφέρει μια λύση Host+NCP για το Design Gateway ZigBee. Σε αυτήν την αρχιτεκτονική, ο οικοδεσπότης μπορεί να επικοινωνεί με το NCP μέσω της διεπαφής UART ή SPI. Συνηθέστερα, το UART χρησιμοποιείται καθώς είναι πολύ απλούστερο από το SPI.

Το Silicon Labs έχει επίσης παράσχει ένα δείγμα έργου για το πρόγραμμα υποδοχής, το οποίο είναι το δείγμαZ3gatewayhost. Το δείγμα εκτελείται σε ένα σύστημα που μοιάζει με UNIX. Μερικοί πελάτες μπορεί να θέλουν ένα δείγμα υποδοχής που μπορεί να τρέξει σε RTOS, αλλά δυστυχώς, δεν υπάρχει δείγμα κεντρικού υπολογιστή που βασίζεται σε RTOs προς το παρόν. Οι χρήστες πρέπει να αναπτύξουν το δικό τους πρόγραμμα υποδοχής βάσει RTOs.

Είναι σημαντικό να κατανοήσετε το πρωτόκολλο πύλης UART πριν αναπτύξετε ένα προσαρμοσμένο πρόγραμμα υποδοχής. Και για το NCP με βάση το UART και το NCP με βάση το UART, ο κεντρικός υπολογιστής χρησιμοποιεί το πρωτόκολλο EZSP για να επικοινωνήσει με το NCP.EZSPείναι σύντομο γιαΠρωτόκολλο Emberznet, και ορίζεται στοUG100. Για το NCP με βάση το UART, εφαρμόζεται ένα πρωτόκολλο χαμηλότερου στρώματος για τη μεταφορά δεδομένων EZSP αξιόπιστα έναντι του UART, αυτό είναι τοΦΛΑΜΟΥΡΙΑΠρωτόκολλο, σύντομο γιαΑσύγχρονος σειριακός οικοδεσπότης. Για περισσότερες λεπτομέρειες σχετικά με την Ash, ανατρέξτε στοUG101καιUG115.

Η σχέση μεταξύ EZSP και Ash μπορεί να απεικονιστεί από το ακόλουθο διάγραμμα:

1

Η μορφή δεδομένων του EZSP και του πρωτοκόλλου τέφρας μπορεί να απεικονιστεί από το ακόλουθο διάγραμμα:

2

Σε αυτή τη σελίδα, θα εισαγάγουμε τη διαδικασία διαμόρφωσης των δεδομένων UART και ορισμένων βασικών πλαισίων που χρησιμοποιούνται συχνά στην πύλη Zigbee.

2. Πλαίσιο

Η γενική διαδικασία πλαισίου μπορεί να απεικονιστεί από τον ακόλουθο γράφημα:

3

Σε αυτό το διάγραμμα, τα δεδομένα σημαίνει το πλαίσιο EZSP. Γενικά, οι διαδικασίες πλαισίωσης είναι: | Όχι | Βήμα | Αναφορά |

|:-|:-|:-|

| 1 | Συμπληρώστε το πλαίσιο EZSP | UG100 |

| 2 | Data Randomization | Ενότητα 4.3 του UG101 |

| 3 | Προσθέστε το byte ελέγχου | chap2 και chap3 του UG101 |

| 4 | Υπολογίστε το CRC | Τμήμα 2.3 του UG101 |

| 5 | Byte Γέμισμα | Τμήμα 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 της πλευράς του κεντρικού υπολογιστή, η επικοινωνία πρέπει να ακυρωθεί.

Η σιωπηρή απαίτηση πίσω από αυτό είναι ότι η μορφή της εντολής έκδοσης μπορείΠοτέ δεν αλλάζει. Η μορφή εντολής έκδοσης 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
  • Αν το bit 0 του Randi είναι 0, randi+1 = randi >> 1
  • Αν το bit 0 του Randi είναι 1, randi+1 = (randi >> 1) ^ 0xb8

2.3. Προσθέστε το byte ελέγχου

Το byte ελέγχου είναι ένα ένα byte δεδομένα και πρέπει να προστεθεί στο κεφάλι του πλαισίου. Η μορφή απεικονίζεται με τον παρακάτω πίνακα:

6

Συνολικά, υπάρχουν 6 είδη bytes ελέγχου. Τα πρώτα τρία χρησιμοποιούνται για κοινά πλαίσια με δεδομένα EZSP, συμπεριλαμβανομένων δεδομένων, ACK και NAK. Τα τελευταία τρία χρησιμοποιούνται χωρίς κοινά δεδομένα EZSP, συμπεριλαμβανομένων των RST, RSTack και Error.

Η μορφή του πρώτου, του rstack και του σφάλματος περιγράφεται στην ενότητα 3.1 έως 3.3.

2.4. Υπολογίστε το CRC

Ένα CRC 16-bit υπολογίζεται σε bytes από το byte ελέγχου μέχρι το τέλος των δεδομένων. Το πρότυπο CRCCCITT (G (x) = x16 + x12 + x5 + 1) αρχικοποιείται σε 0xffff. Το πιο σημαντικό byte προηγείται του λιγότερο σημαντικού byte (λειτουργία Big-Endian).

2.5. Byte γέμιση

Όπως περιγράφεται στην ενότητα 4.2 του UG101, υπάρχουν ορισμένες τιμές byte που χρησιμοποιούνται για ειδικό σκοπό. Αυτές οι τιμές μπορούν να βρεθούν στον παρακάτω πίνακα:

7

Όταν αυτές οι τιμές εμφανίζονται στο πλαίσιο, θα γίνει ειδική θεραπεία στα δεδομένα. - Εισαγάγετε το byte διαφυγής 0x7d μπροστά από το αποκλειστικό byte - αντιστρέψτε το bit5 αυτού

Παρακάτω είναι μερικά παραδείγματα αυτού του αλγορίθμου:

8

2.6. Προσθέστε τη σημαία τελικής

Το τελικό βήμα είναι να προσθέσετε την τελική σημαία 0x7E στο τέλος του πλαισίου. Μετά από αυτό, τα δεδομένα μπορούν να σταλούν στη θύρα UART.

3. Διαδικασία de-framing

Όταν τα δεδομένα λαμβάνονται από το UART, πρέπει απλώς να κάνουμε τα αντίστροφα βήματα για να τα αποκωδικοποιήσουμε.

4. Αναφορές


Χρόνος δημοσίευσης: Φεβ-08-2022
Whatsapp Online Chat!