Συγγραφέας: 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 και ορισμένα βασικά πλαίσια (key frames) που χρησιμοποιούνται συχνά στην πύλη Zigbee.
2. Πλαισιώνοντας
Η γενική διαδικασία κατασκευής μπορεί να απεικονιστεί στο ακόλουθο διάγραμμα:
Σε αυτό το διάγραμμα, τα δεδομένα σημαίνουν το πλαίσιο EZSP. Γενικά, οι διαδικασίες πλαισίωσης είναι: |Όχι|Βήμα|Αναφορά|
|:-|:-|:-|
|1|Γεμίστε το πλαίσιο EZSP|UG100|
|2|Τυχαιοποίηση Δεδομένων|Ενότητα 4.3 του UG101|
|3|Προσθέστε το Control 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 πρέπει να είναι η εντολή version. Με άλλα λόγια, ο κεντρικός υπολογιστής πρέπει να ανακτήσει την έκδοση 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 υπολογίζεται σε bytes από το byte ελέγχου μέχρι το τέλος των δεδομένων. Το τυπικό CRCCCITT (g(x) = x16 + x12 + x5 + 1) αρχικοποιείται σε 0xFFFF. Το byte με τη μεγαλύτερη σημασία προηγείται του byte με τη μικρότερη σημασία (λειτουργία big-endian).
2.5. Γέμισμα με byte
Όπως περιγράφεται στην ενότητα 4.2 του UG101, υπάρχουν ορισμένες δεσμευμένες τιμές byte που χρησιμοποιούνται για ειδικό σκοπό. Αυτές οι τιμές βρίσκονται στον ακόλουθο πίνακα:
Όταν αυτές οι τιμές εμφανίζονται στο πλαίσιο, τα δεδομένα θα τύχουν ειδικής επεξεργασίας. – Εισαγωγή του byte διαφυγής 0x7D μπροστά από το δεσμευμένο byte – Αντιστροφή του bit5 αυτού του δεσμευμένου byte
Παρακάτω παρατίθενται μερικά παραδείγματα αυτού του αλγορίθμου:
2.6. Προσθήκη της σημαίας τέλους
Το τελευταίο βήμα είναι να προσθέσετε τη σημαία τέλους 0x7E στο τέλος του πλαισίου. Μετά από αυτό, τα δεδομένα μπορούν να σταλούν στη θύρα UART.
3. Διαδικασία αποπλαισίωσης
Όταν λαμβάνουμε δεδομένα από το UART, απλώς πρέπει να κάνουμε τα αντίστροφα βήματα για να τα αποκωδικοποιήσουμε.
4. Αναφορές
Ώρα δημοσίευσης: 08 Φεβρουαρίου 2022








