Συγγραφέας: 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 πριν αναπτύξετε ένα προσαρμοσμένο πρόγραμμα κεντρικού υπολογιστή. Και για το NCP που βασίζεται σε UART και για το NCP που βασίζεται σε SPI, ο κεντρικός υπολογιστής χρησιμοποιεί το πρωτόκολλο EZSP για να επικοινωνεί με το NCP.EZSPείναι σύντομη γιαΣειριακό πρωτόκολλο EmberZnet, και ορίζεται στοUG100. Για το NCP που βασίζεται σε UART, εφαρμόζεται ένα πρωτόκολλο χαμηλότερου επιπέδου για τη μεταφορά δεδομένων EZSP με αξιοπιστία μέσω UART, αυτό είναι τοΦΛΑΜΟΥΡΙΑπρωτόκολλο, συντομογραφία γιαΑσύγχρονος σειριακός κεντρικός υπολογιστής. Για περισσότερες λεπτομέρειες σχετικά με το ASH, ανατρέξτε στοUG101καιUG115.
Η σχέση μεταξύ EZSP και ASH μπορεί να απεικονιστεί από το ακόλουθο διάγραμμα:
Η μορφή δεδομένων του EZSP και του πρωτοκόλλου ASH μπορεί να απεικονιστεί από το ακόλουθο διάγραμμα:
Σε αυτή τη σελίδα, θα παρουσιάσουμε τη διαδικασία πλαισίωσης των δεδομένων UART και ορισμένων βασικών πλαισίων που χρησιμοποιούνται συχνά στην πύλη Zigbee.
2. Καδράρισμα
Η γενική διαδικασία πλαισίου μπορεί να απεικονιστεί από το ακόλουθο διάγραμμα:
Σε αυτό το γράφημα, τα δεδομένα σημαίνουν το πλαίσιο EZSP. Γενικά, οι διαδικασίες πλαισίωσης είναι: |Όχι|Βήμα|Αναφορά|
|:-|:-|:-|
|1|Γεμίστε το πλαίσιο EZSP|UG100|
|2|Τυχαιοποίηση δεδομένων|Ενότητα 4.3 του UG101|
|3|Προσθέστε το Byte ελέγχου|Κεφάλαιο 2 και Κεφάλαιο 3 του UG101|
|4|Υπολογίστε το CRC|Ενότητα 2.3 του UG101|
|5|Γέμισμα Byte|Ενότητα 4.2 του UG101|
|6|Προσθέστε τη σημαία τέλους|Ενότητα 2.4 του UG101|
2.1. Γεμίστε το πλαίσιο EZSP
Η μορφή πλαισίου EZSP απεικονίζεται στο Κεφάλαιο 3 του UG100.
Προσέξτε ότι αυτή η μορφή ενδέχεται να αλλάξει κατά την αναβάθμιση του SDK. Όταν αλλάξει η μορφή, θα του δώσουμε έναν νέο αριθμό έκδοσης. Ο τελευταίος αριθμός έκδοσης EZSP είναι 8 όταν γράφεται αυτό το άρθρο (EmberZnet 6.8).
Καθώς η μορφή πλαισίου EZSP μπορεί να διαφέρει μεταξύ διαφορετικών εκδόσεων, υπάρχει υποχρεωτική απαίτηση ο κεντρικός υπολογιστής και το NCPΠΡΕΠΕΙλειτουργούν με την ίδια έκδοση EZSP. Διαφορετικά, δεν μπορούν να επικοινωνήσουν όπως αναμενόταν.
Για να επιτευχθεί αυτό, η πρώτη εντολή μεταξύ του κεντρικού υπολογιστή και του NCP πρέπει να είναι η εντολή έκδοσης. Με άλλα λόγια, ο κεντρικός υπολογιστής πρέπει να ανακτήσει την έκδοση EZSP του NCP πριν από οποιαδήποτε άλλη επικοινωνία. Εάν η έκδοση EZSP είναι διαφορετική με την έκδοση EZSP της πλευράς κεντρικού υπολογιστή, η επικοινωνία πρέπει να ματαιωθεί.
Η σιωπηρή απαίτηση πίσω από αυτό είναι ότι η μορφή της εντολής έκδοσης μπορείΜΗΝ ΑΛΛΑΞΕΙΣ ΠΟΤΕ. Η μορφή εντολής έκδοσης EZSP είναι όπως παρακάτω:
链接: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 είδη byte ελέγχου. Τα τρία πρώτα χρησιμοποιούνται για κοινά πλαίσια με δεδομένα EZSP, συμπεριλαμβανομένων των DATA, ACK και NAK. Τα τρία τελευταία χρησιμοποιούνται χωρίς κοινά δεδομένα EZSP, συμπεριλαμβανομένων των RST, RSTACK και ERROR.
Η μορφή των RST, RSTACK και ERROR περιγράφεται στις ενότητες 3.1 έως 3.3.
2.4. Υπολογίστε το CRC
Ένα CRC 16-bit υπολογίζεται σε byte από το byte ελέγχου μέχρι το τέλος των δεδομένων. Το τυπικό CRCCCITT (g(x) = x16 + x12 + x5 + 1) αρχικοποιείται σε 0xFFFF. Το πιο σημαντικό byte προηγείται του λιγότερο σημαντικού byte (λειτουργία big-endian).
2.5. Byte Stuffing
Όπως περιγράφεται στην ενότητα 4.2 του UG101, υπάρχουν ορισμένες δεσμευμένες τιμές byte που χρησιμοποιούνται για ειδικούς σκοπούς. Αυτές οι τιμές μπορούν να βρεθούν στον παρακάτω πίνακα:
Όταν εμφανιστούν αυτές οι τιμές στο πλαίσιο, θα γίνει ειδική επεξεργασία στα δεδομένα. – Εισαγάγετε το byte διαφυγής 0x7D μπροστά από το δεσμευμένο byte – Αντιστρέψτε το bit5 αυτού του δεσμευμένου byte
Παρακάτω είναι μερικά παραδείγματα αυτού του αλγορίθμου:
2.6. Προσθέστε τη σημαία τέλους
Το τελευταίο βήμα είναι να προσθέσετε την τελική σημαία 0x7E στο τέλος του πλαισίου. Μετά από αυτό, τα δεδομένα μπορούν να σταλούν στη θύρα UART.
3. Διαδικασία αποπλαισίωσης
Όταν λαμβάνονται δεδομένα από το UART, πρέπει απλώς να κάνουμε τα αντίστροφα βήματα για να τα αποκωδικοποιήσουμε.
4. Παραπομπές
Ώρα δημοσίευσης: Φεβ-08-2022