Τύποι και πρότυπα USB. Διασύνδεση USB: περιγραφή και βασικά στοιχεία των συσκευών διασύνδεσης Περιγραφή USB 2.0

10.09.2021

Γεια σε όλους. Μερικές φορές οι άνθρωποι ενδιαφέρονται να μάθουν πώς διαφέρει το USB 3.0 από το USB 2.0, μερικές φορές θέλουν να καταλάβουν ποια έκδοση ή τύπο υποδοχής USB έχουν στον υπολογιστή τους, τι είδους δεινόσαυρος είναι το USB 1.0 και ούτω καθεξής. Ας εμβαθύνουμε λίγο σε αυτό το θέμα.

Το πρότυπο USB εμφανίστηκε στα μέσα της δεκαετίας του '90. Αποκρυπτογραφημένο USBορίστε πώς - Universal Serial Bus. Αυτό το πρότυπο αναπτύχθηκε ειδικά για την επικοινωνία μεταξύ περιφερειακών συσκευών και υπολογιστή και πλέον κατέχει ηγετική θέση μεταξύ όλων των τύπων διεπαφών επικοινωνίας. Αυτό δεν προκαλεί έκπληξη. Σήμερα είναι δύσκολο να φανταστεί κανείς οποιαδήποτε συσκευή χωρίς υποδοχή USB, αν και αυτές οι υποδοχές διαφέρουν ως προς τον τύπο.

Τύποι υποδοχών USB

Σήμερα είναι αρκετά ένας μεγάλος αριθμός απότύπους υποδοχών USB. Κάποια είναι πιο κοινά, άλλα λιγότερο. Τέλος πάντων, ας τους ρίξουμε μια ματιά.

USBτύπος-ΕΝΑ– ένας από τους πιο συνηθισμένους τύπους υποδοχών USB. Μπορεί να τον έχετε δει στο δικό σας, επάνω, στο μπλοκ Φορτιστήςκαι όχι μόνο. Έχει πολλές χρήσεις. Με αυτό μπορείτε να συνδέσετε ποντίκια και πληκτρολόγια σε υπολογιστή (ή άλλη συσκευή), μονάδες flash, Εξωτερικές μονάδες, smartphone και ούτω καθεξής. Αυτή η λίστα μπορεί να συνεχιστεί για μεγάλο χρονικό διάστημα αν το σκεφτείτε.

USBτύπος-σι– ο σύνδεσμος χρησιμοποιείται κυρίως για τη σύνδεση εκτυπωτή ή άλλων περιφερειακών συσκευών στον υπολογιστή. Έγινε πολύ λιγότερο διαδεδομένο από το USB τύπου Α.

Μίνι USBήταν πολύ συνηθισμένο σε κινητές συσκευέςαχ πριν την εμφάνιση του Micro USB. Σήμερα είναι πολύ σπάνιο, αλλά μπορείτε ακόμα να το βρείτε σε ορισμένες παλαιότερες συσκευές. Στο φορητό ηχείο ήχου μου, η υποδοχή Mini USB λαμβάνει ηλεκτρική ενέργεια για τη φόρτιση της μπαταρίας. Αγόρασα αυτό το ηχείο πριν από περίπου 5 χρόνια (αποδείχθηκε ανθεκτικό).

Micro USBχρησιμοποιείται πλέον σε smartphone και κινητά τηλέφωνασχεδόν όλοι οι κατασκευαστές. Αυτή η υποδοχή USB έχει αποκτήσει απίστευτη δημοτικότητα μεταξύ των φορητών συσκευών. Ωστόσο, το USB Type-C παίρνει σταδιακά τη θέση του.

Έκδοση USB 1.0 – Αρχαιολογικές Ανασκαφές

Ο προ-προπάππους του προτύπου USB είναι USB 1.0γεννήθηκε τον κρύο Νοέμβριο του 1995. Γεννήθηκε όμως λίγο πρόωρα και δεν κέρδισε μεγάλη δημοτικότητα. Αλλά ο μικρότερος αδερφός του USB 1.1, που γεννήθηκε τρία χρόνια αργότερα, ήταν ένα πιο βιώσιμο δείγμα και μπόρεσε να τραβήξει αρκετή προσοχή.

Όσον αφορά το τεχνικό κομμάτι, η ταχύτητα μεταφοράς δεδομένων ήταν μικρή, αλλά με τα πρότυπα εκείνης της εποχής αυτή η ταχύτητα ήταν υπεραρκετή. Η ταχύτητα ήταν έως και 12 Mbit/s και αυτό ήταν σε λειτουργία υψηλής απόδοσης.

Διαφορές μεταξύ των υποδοχών USB 2.0 και USB 3.0

Το USB 2.0 και το USB 3.0 είναι δύο εντελώς σύγχρονα πρότυπα USB που χρησιμοποιούνται πλέον παντού σε υπολογιστές και φορητούς υπολογιστές. Το USB 3.0 είναι, φυσικά, νεότερο και ταχύτερο, και έχει επίσης πλήρες συμβατό προς τα πίσωμε συσκευές USB 2.0. Αλλά η ταχύτητα σε αυτή την περίπτωση θα περιοριστεί στη μέγιστη ταχύτητα σύμφωνα με το πρότυπο USB 2.0.

Θεωρητικά, οι ταχύτητες μεταφοράς USB 3.0 είναι περίπου 10 φορές μεγαλύτερες από το USB 2.0 (5 Gbps έναντι 480 Mbps). Αλλά στην πράξη, η ταχύτητα ανταλλαγής πληροφοριών μεταξύ συσκευών περιορίζεται συχνά από τις ίδιες τις συσκευές. Αν και γενικά, το USB 3.0 εξακολουθεί να κερδίζει.

Τεχνικές διαφορές

Αν και τα πρότυπα USB 2.0 και USB 3.0 είναι συμβατά προς τα πίσω, ωστόσο έχουν κάποιες τεχνικές διαφορές. Το USB 2.0 έχει 4 ακίδες – 2 για τροφοδοσία συσκευών και 2 για μεταφορά δεδομένων. Αυτές οι 4 ακίδες έχουν διατηρηθεί στο πρότυπο USB 3.0. Εκτός όμως από αυτές, προστέθηκαν άλλες 4 επαφές, οι οποίες χρειάζονται για υψηλή ταχύτηταμεταφορά δεδομένων και ταχύτερη φόρτιση συσκευών. Παρεμπιπτόντως, το USB 3.0 μπορεί να λειτουργήσει με ρεύμα έως και 1 Ampere.

Ως αποτέλεσμα, το τυπικό καλώδιο USB 3.0 έχει γίνει παχύτερο και το μήκος του δεν ξεπερνά πλέον τα 3 μέτρα (στο USB 2.0 το μέγιστο μήκος έφτασε τα 5 μέτρα). Αλλά μπορείτε να φορτίσετε το smartphone σας πολύ πιο γρήγορα, ακόμα κι αν συνδέσετε πολλά smartphone σε μία υποδοχή μέσω ενός διαχωριστή.

Φυσικά, οι κατασκευαστές φρόντισαν για τις οπτικές διαφορές. Δεν χρειάζεται να αναζητήσετε τη συσκευασία της μητρικής πλακέτας για να δείτε ποια πρότυπα USB υποστηρίζει. Και δεν χρειάζεται να μεταβείτε στις ρυθμίσεις του υπολογιστή σας ή στη διαχείριση συσκευών για να το κάνετε αυτό. Απλώς κοιτάξτε το χρώμα του συνδέσμου σας. Η υποδοχή USB 3.0 είναι σχεδόν πάντα μπλε. Πολύ σπάνια είναι και κόκκινο. Ενώ το USB 2.0 είναι σχεδόν πάντα μαύρο.

Τώρα λοιπόν, με μια γρήγορη ματιά, μπορείτε να προσδιορίσετε εάν έχετε USB 2.0 ή USB 3.0 στον φορητό υπολογιστή σας.

Αυτό είναι μάλλον το τέλος της συζήτησης σχετικά με το πώς διαφέρει το USB 2.0 από το USB 3.0.

συμπέρασμα

Τι μάθαμε από αυτό το άρθρο; Αυτό το USB χωρίζεται σε πρότυπα μεταφοράς δεδομένων, τα οποία διαφέρουν ως προς την ταχύτητα μεταφοράς δεδομένων. Και επίσης ότι το USB έχει μεγάλο αριθμό τύπων υποδοχών.

Και το πιο ενδιαφέρον πράγμα που ξέχασα να αναφέρω στο άρθρο είναι ότι οι τύποι συνδετήρων μπορούν να συνδυαστούν ως εξής. Μπορείτε να βρείτε μια υποδοχή USB τύπου Α πλήρους μεγέθους και μια υποδοχή πλήρους μεγέθους USB τύπου Β, ταυτόχρονα υπάρχουν (αλλά σπάνια) micro USB τύπου Α και micro USB τύπου Β (πολύ συνηθισμένα). Το USB type-A μπορεί να λειτουργήσει χρησιμοποιώντας το πρωτόκολλο USB 2.0 ή ίσως χρησιμοποιώντας το πρωτόκολλο USB 3.0. Γενικά, αν θέλεις, μπορεί να μπερδευτείς.

Και αν ανησυχείτε για το ερώτημα ποιες υποδοχές είναι καλύτερο να επιλέξετε για φορητό υπολογιστή USB 2.0 ή USB 3.0, τότε μην ανησυχείτε καθόλου. Τώρα όλοι οι σύγχρονοι φορητοί υπολογιστές και υπολογιστές είναι εξοπλισμένοι και με τους δύο τύπους USB. Για παράδειγμα, ο φορητός υπολογιστής μου έχει δύο υποδοχές USB 2.0 και μία υποδοχή USB 3.0. Και οι τρεις υποδοχές είναι USB τύπου Α.

Αυτά είναι - USB!

Διάβασες μέχρι το τέλος;

'Ηταν αυτό το άρθρο χρήσιμο?

Όχι πραγματικά

Τι ακριβώς δεν σας άρεσε; Το άρθρο ήταν ελλιπές ή ψευδές;
Γράψτε στα σχόλια και υποσχόμαστε να βελτιωθούμε!

Ρυθμός bit σηματοδότησης υψηλής ταχύτητας - 12 Mb/s - Μέγιστο μήκος καλωδίου για ρυθμό μετάδοσης bit σηματοδότησης υψηλής ταχύτητας - 5 m - Ρυθμός bit σηματοδότησης χαμηλής ταχύτητας - 1,5 Mb/s - Μέγιστο μήκος καλωδίου για ρυθμό μετάδοσης bit σηματοδότησης χαμηλής ταχύτητας - 3 m - Μέγιστες συνδεδεμένες συσκευές (συμπεριλαμβανομένων των πολλαπλασιαστών) - 127 - Είναι δυνατή η σύνδεση συσκευών με διαφορετικούς ρυθμούς baud - Δεν χρειάζεται ο χρήστης να εγκαταστήσει πρόσθετα στοιχεία όπως τερματιστές για SCSI - Τάση τροφοδοσίας για περιφερειακές συσκευές - 5 V - Μέγιστη κατανάλωση ρεύματος ανά συσκευή - 500 mA

Καλωδίωση υποδοχής USB 1.1 και 2.0

Τα σήματα USB μεταδίδονται μέσω δύο καλωδίων ενός θωρακισμένου καλωδίου τεσσάρων συρμάτων.

Εδώ :

GND- Κύκλωμα «θήκης» για τροφοδοσία περιφερειακών συσκευών V BUS- +5V και για κυκλώματα τροφοδοσίας Δίαυλος D+σχεδιασμένο για μετάδοση δεδομένων

Λάστιχο ΡΕ-για λήψη δεδομένων.

Μειονεκτήματα του usb 2.0

Αν και μέγιστη ταχύτηταΗ μεταφορά δεδομένων USB 2.0 είναι 480 Mbit/s (60 MB/s), στην πραγματική ζωή δεν είναι ρεαλιστικό να επιτευχθούν τέτοιες ταχύτητες (~33,5 MB/s στην πράξη). Αυτό οφείλεται στις μεγάλες καθυστερήσεις στο δίαυλο USB μεταξύ της αίτησης για μεταφορά δεδομένων και της πραγματικής έναρξης της μεταφοράς. Για παράδειγμα, ο δίαυλος FireWire, αν και έχει χαμηλότερη απόδοση αιχμής 400 Mbps, η οποία είναι 80 Mbps (10 MB/s) μικρότερη από το USB 2.0, στην πραγματικότητα επιτρέπει μεγαλύτερη απόδοση για ανταλλαγή δεδομένων με σκληρούς δίσκους και άλλες συσκευές. αποθήκευση πληροφοριών συσκευές. Από αυτή την άποψη, διάφορες μονάδες κινητής τηλεφωνίας έχουν περιοριστεί εδώ και πολύ καιρό λόγω του ανεπαρκούς πρακτικού εύρους ζώνης του USB 2.0.

Το πιο σημαντικό πλεονέκτημα του USB 3.0 είναι η υψηλότερη ταχύτητά του (έως 5 Gbps), η οποία είναι 10 φορές ταχύτερη από την παλαιότερη θύρα. Η νέα διεπαφή έχει βελτιώσει την εξοικονόμηση ενέργειας. Αυτό επιτρέπει στη μονάδα να μεταβεί σε κατάσταση αναστολής λειτουργίας όταν δεν χρησιμοποιείται. Είναι δυνατή η ταυτόχρονη αμφίδρομη μετάδοση δεδομένων. Αυτό θα δώσει μεγαλύτερη ταχύτητα εάν συνδέσετε πολλές συσκευές σε μία θύρα (διαχωρίστε τη θύρα). Μπορείτε να διακλαδώσετε χρησιμοποιώντας έναν διανομέα (ένας διανομέας είναι μια συσκευή που διακλαδίζεται από μια θύρα σε 3-6 θύρες). Τώρα, εάν συνδέσετε τον διανομέα σε μια θύρα USB 3.0 και συνδέσετε πολλές συσκευές (για παράδειγμα, μονάδες flash) στο διανομέα και πραγματοποιήσετε ταυτόχρονη μεταφορά δεδομένων, θα δείτε ότι η ταχύτητα θα είναι πολύ μεγαλύτερη από ό,τι ήταν με το USB Διασύνδεση 2.0. Υπάρχει ένα χαρακτηριστικό που μπορεί να είναι ένα συν και ένα μείον. Η διασύνδεση USB 3.0 έχει αυξήσει το ρεύμα στα 900 mA και το USB 2.0 λειτουργεί με ρεύμα 500 mA. Αυτό θα είναι ένα πλεονέκτημα για εκείνες τις συσκευές που έχουν προσαρμοστεί για USB 3.0, αλλά ένα μικρό μείον είναι ότι μπορεί να υπάρχει κίνδυνος κατά τη φόρτιση πιο αδύναμων συσκευών, όπως ένα τηλέφωνο. Το φυσικό μειονέκτημα της νέας διεπαφής είναι το μέγεθος του καλωδίου. Για να διατηρήσετε υψηλή ταχύτητα, το καλώδιο έχει γίνει παχύτερο και μικρότερο σε μήκος (δεν μπορεί να είναι μεγαλύτερο από 3 μέτρα) από το USB 2.0. Είναι σημαντικό να σημειωθεί ότι οι συσκευές με διαφορετικές διεπαφές USB θα το κάνουν δουλειάκαλό και δεν πρέπει να είναι πρόβλημα. Αλλά μην νομίζετε ότι η ταχύτητα θα αυξηθεί εάν συνδέσετε το USB 3.0 σε μια παλαιότερη θύρα ή εάν συνδέσετε ένα παλαιότερο καλώδιο διασύνδεσης σε μια νέα θύρα. Η ταχύτητα μεταφοράς δεδομένων θα είναι ίση με την ταχύτητα της πιο αδύναμης θύρας.

  • Φροντιστήριο

Εικονογραφημένη προβολή του μοντέλου δικτύωσης OSI στον Universal Serial Bus.

Τρία «αξιόλογα» επίπεδα της στοίβας USB

Δεν ήμουν ικανοποιημένος με την εμφάνιση της στοίβας USB, η οποία μπορεί να βρεθεί πιο συχνά στο Διαδίκτυο:

Όχι πολύ χρήσιμη στοίβα USB


Επίπεδο λεωφορείου, λογικό, λειτουργικό... Αυτά είναι φυσικά υπέροχες αφαιρέσεις, αλλά είναι πιο πιθανές για όσους πρόκειται να φτιάξουν πρόγραμμα οδήγησης ή λογισμικό εφαρμογής για τον οικοδεσπότη. Από την πλευρά του μικροελεγκτή, περιμένω ένα πρότυπο μηχάνημα πεπερασμένης κατάστασης, στους κόμβους του οποίου συνήθως ενσωματώνουμε τον χρήσιμο κώδικα και στην αρχή, σύμφωνα με όλους τους νόμους του είδους, θα αποτύχει. Ή το λογισμικό στον κεντρικό υπολογιστή θα είναι δυσλειτουργικό. Ή οδηγός. Σε κάθε περίπτωση, κάποιος θα αποτύχει. Είναι επίσης αδύνατο να καταλάβουμε τις βιβλιοθήκες MK αμέσως. Και έτσι κοιτάζω την κίνηση Δίαυλος USBένας αναλυτής, όπου τα γεγονότα που συμβαίνουν σε μια άγνωστη γλώσσα δεν ταιριάζουν καθόλου σε τρία αξιοσημείωτα επίπεδα. Αναρωτιέμαι αν έχω τέτοια παραφωνία στο κεφάλι μου λόγω του πυρετού της γρίπης;

Αν ο αναγνώστης είχε παρόμοια συναισθήματα, προσφέρω ένα εναλλακτικό όραμα μιας στοίβας USB, που μου εμφανίστηκε ξαφνικά καθαρά στον υπερθερμασμένο εγκέφαλό μου, με βάση το αγαπημένο μοντέλο OSI 7 επιπέδων. Περιορίστηκα σε πέντε επίπεδα:

Δεν θέλω να πω ότι όλο το λογισμικό και οι βιβλιοθήκες έχουν ήδη κατασκευαστεί ή θα πρέπει να σχεδιαστούν με βάση αυτό το μοντέλο. Για μηχανικούς λόγους, ο κώδικας με τα επίπεδα θα αναμιχθεί σε μεγάλο βαθμό. Θέλω όμως να βοηθήσω όσους ξεκινούν τη γνωριμία τους με το δίαυλο USB, που θέλουν να κατανοήσουν τα πρωτόκολλα ανταλλαγής συσκευών και την ορολογία της θεματικής περιοχής, να έρθουν πιο κοντά στο έτοιμα παραδείγματα, βιβλιοθήκες και πλοηγηθείτε καλύτερα σε αυτές. Αυτό το μοντέλο δεν είναι για φόρτωση στο MK, αλλά στα λαμπρά μυαλά σας, αγαπητοί φίλοι. Και τότε τα χρυσά σας χέρια θα κάνουν τα πάντα μόνα τους, δεν έχω καμία αμφιβολία :)

Λοιπόν, πάμε, διορθώστε αν δείτε λάθη. Αυτή είναι μια πρόχειρη έκδοση και αν κάτι τέτοιο έχει ήδη σχεδιαστεί κάπου, ζητώ συγγνώμη, δεν μπορούσα να το βρω, οπότε το έφτιαξα μόνος μου. Νομίζω ότι η εικόνα δεν θα ξεφύγει, αλλά στο μεταξύ θα εξηγήσω στο αξιοσέβαστο κοινό γιατί ξεκίνησα αυτή τη δημοσίευση εξαρχής.

Άλλη μια αναδρομή από τη δεκαετία του '90

Τίναξα το πρώτο μου σφάλμα από τον κώδικα κάποιου άλλου στα τέλη της δεκαετίας του '90, ενώ δούλευα ως φοιτητής ως φοιτητής. Ήταν pppd για το FreeBSD, το οποίο στη συνέχεια εγκαταστήσαμε στο μόντεμ. Τα μόντεμ της Motorola είχαν κολλήσει στο κλείσιμο, κανείς δεν μπορούσε να περάσει, η γραμμή χάθηκε μάταια και η μόνη μέθοδος που είχε απομείνει μέσω PPP keep-alive ήταν για κάποιο λόγο buggy. Τότε ανακάλυψα ότι για κάποιο λόγο το pppd περίμενε έξι byte απόκρισης LCP αντί για τα απαιτούμενα τέσσερα. Ένιωθα τόσο τρελή τότε αναδευτήρας ζωύφιωναπό τη δεκαετία του '90 :-) Τι σχέση έχει η ΣΔΙΤ; Είναι ακριβώς παρόμοιο με το USB: πακέτο και από σημείο σε σημείο. Είναι αλήθεια ότι σε αντίθεση με το USB 2.0, είναι full duplex.


Είτε μας αρέσει είτε όχι, η εξέλιξη των μικροελεγκτών είναι σαφές ότι δεν πρόκειται να σταματήσει. Όχι, όχι, και θα εμφανιστεί σε δημοσιεύσεις (http://habrahabr.ru/post/208026/, http://habrahabr.ru/post/233391/) "βαριά περιφερειακά" - υλοποιήσεις διαύλου USB ενσωματωμένες στο MK, με παραδείγματα ανάλυσης, χρησιμοποιώντας HID κ.λπ. Πρέπει να αποτίσουμε φόρο τιμής στον συγγραφέα RaJa: από τα οκτώ παραδείγματα που αναφέρονται τυπική βιβλιοθήκη STSW-STM32121 (UM0424) και με κάποιο τρόπο, διάλεξε το πιο χρήσιμο (Custom HID), το μετέφερε στο δωρεάν περιβάλλον Em::Blocks, που περιγράφεται σε καθαρή γλώσσα, το στολίστηκε λίγο, μπράβο! Αυτό μου έσωσε πολύ χρόνο.

Πώς θα πάω στη βιβλιοθήκη;

Έχοντας λάβει το έργο RHIDDemo για το Em::Blocks που δημοσιεύτηκε ευγενικά στο GitHub από τον συγγραφέα, άρχισα να το μεταφέρω στο Keil (το πρόγραμμα εντοπισμού σφαλμάτων CoLink που βασίζεται σε FTDI, κάποιος να μου πει την προσθήκη Coocox για το Em::Blocks). Αλλά απλά δεν μπορούσα να καταλάβω: από πού στο διάολο πήρε ο συγγραφέας το SPL 3.6.1 από το 2012, αν ο ιστότοπος δημοσίευσε 3.5.0 από το 2011; Πέρασα από μια μάλλον βαρετή αποστολή, η οποία προς έκπληξή μου οδήγησε... κατευθείαν σε ένα έτοιμο έργο Custom HID για το Keil ως μέρος της βιβλιοθήκης USB FS 4.0.0. Βρίσκεται σε κοινή θέα, σαν το ποντίκι κάτω από μια σκούπα. Καλά εντάξει. Αλλά τελικά έφτασα στις εκδόσεις STMicroelectronics, βρήκα μια περιγραφή της βιβλιοθήκης USB FS STSW-STM32121 (UM0424) και σταμάτησα τις προσπάθειες του προγραμματιστή να με τρελάνει. Πείτε μου, είναι φυσιολογικό να βάλετε vintage CMSIS 1.30 από το 2009 στο σετ SPL 3.5.0 από το 2011, να κρύψετε το νέο SPL 3.6.1 από το 2012 σε USB-FS 4.0.0 από το 2013 (βάζοντας το CMSIS 3.0.1 in από 201 και εκεί), παρά το γεγονός ότι έχουν αναρτήσει τρέχουσα έκδοση CMSIS 3.30 κυκλοφορία 2014; Παρεμπιπτόντως, στο SPL 3.6.x για το STM32F10X, διορθώθηκαν μερικά σφάλματα με το USART που σχετίζονται με σήματα υπερχείλισης buffer. Ευχαριστώ, τουλάχιστον άφησαν σημειώσεις έκδοσης...

HID έναντι SNMP

Έτσι, έχοντας ασχοληθεί με το STM32F103C8T6, αποφάσισα επίσης να εμβαθύνω λίγο στο θέμα του USB HID, η αφαίρεση USB HID ταιριάζει πολύ καλά στην έννοια όλων των ειδών αισθητήρων, αισθητήρων και άλλων προγραμμάτων οδήγησης ισχύος που ελέγχονται από PWM. Κάπως μου θύμισε SNMP, μόνο σε πολύ απλοποιημένη μορφή: οι περιγραφείς HID παίζουν το ρόλο ενός SNMP MIB. Όταν η συσκευή προετοιμάζεται από τον κεντρικό υπολογιστή: «Γεια, οικοδεσπότη! Είμαι καφετιέρα. Έχω ένα κουμπί [έναρξη], [κρέμα], [ζάχαρη] χειριστήρια, [υπόλοιπο καφέ], [υπόλοιπο νερό], [υπόλοιπο ζάχαρης], [υπόλοιπη κρέμα]. Τραβήξτε τους οδηγούς, πατήστε το κουμπί, ας πιούμε καφέ». Δεν σου θυμίζει τίποτα; Ένα παράδειγμα διαλόγου SNMP: «Λοιπόν, γεια σας, ένας σταθμός διαχείρισης με λογισμικό για 100.000 $. Και έχω ένα σασί διακόπτη για 200.000 $, και έχω 4 ακόμη μονάδες σε αυτό για 100.000 $ το τεμάχιο. καθεμία έχει 16 περισσότερες θύρες με άσεμνη ταχύτητα και είναι απλά αδύνατο να παραθέσουμε όλες τις λειτουργίες εδώ... ρωτήστε ξεχωριστά για κάθε αντικείμενο. Ω, ναι, το φορτίο του επεξεργαστή είναι τόσο και έτσι, η μνήμη είναι τόσο και έτσι...» Και άλλες δεκάδες σελίδες στο ίδιο πνεύμα.

Μου άρεσε η ιδέα του HID. Αλλά μόλις άφησα τα Windows πέρα ​​από τις εκπαιδευτικές εργασίες των LED που αναβοσβήνουν (προχωρήστε σε πραγματικά περιβάλλοντα UNIX!), άρχισε να διαρρέει όλες τις ασφράγιστες ρωγμές και ένιωσα σαν ένα είδος αβοήθητου κουτσού. Κατά την αποσφαλμάτωση του έργου, άρπαξα ενστικτωδώς κάποιο είδος tcpdump (αυτό ονομάζεται: usbdump(8) , ή usbmon), αλλά είδα μόνο μηνύματα σε μια άγνωστη γλώσσα.

Έγινε προφανές: υπάρχει έλλειψη βασικών γνώσεων σχετικά με το δίαυλο USB. Αν κάποιος έμπειρος ειδικός πληροφορικής κατανοεί το μοντέλο OSI και τη στοίβα TCP/IP κάπου στο επίπεδο του νωτιαίου μυελού απλά από ανάγκη, τότε με το USB η κατάσταση είναι διαφορετική. Είναι κατανοητό: εκεί μπορείτε (χρειάζεται) να κατασκοπεύσετε την κυκλοφορία μέσω του ίδιου tcpdump και να ρυθμίσετε το υλικό και το λογισμικό, αλλά εδώ είναι εντελώς plug and play και μπορείτε να διορθώσετε κάτι ενημερώνοντας το πρόγραμμα οδήγησης ή το υλικολογισμικό (ή επανεγκατάσταση του λειτουργικού συστήματος). Αλλά μαζευτήκαμε εδώ μόνο για να φτιάξουμε καλό υλικολογισμικό, σωστά; Αφού διάβασα ορισμένες περιγραφές USB στο διαδίκτυο, εξεπλάγην με το πόσο συγκεχυμένη μπορεί να είναι η τεκμηρίωση. Είχα μάλιστα την αίσθηση ότι σκόπιμα ήθελαν να μας παρασύρουν απλώνοντας ομίχλη και να απαλλαγούμε από τον ανταγωνισμό στο μπουμπούκι. Δεν συμφωνώ με αυτή την κατάσταση!

Άλλο ένα υπέροχο σχέδιο

Στο Διαδίκτυο βρήκα μια άλλη απεικόνιση (ήταν σε μορφή BMP, χωρίς αστείο):

Στην αρχή φαίνεται αισιόδοξο. Τέλος, η στοίβα αποσυναρμολογείται. Τα καρέ, ωστόσο, έχουν κακή σήμανση: θα τα σχεδίαζα με κάθετες διακεκομμένες γραμμές και ο ΕΟΦ είναι απλώς μια παύση, δεν μεταδίδονται πραγματικά δεδομένα. Αρχίζουμε όμως να διαβάζουμε το πλαίσιο και χάνουμε την κατανόηση της αληθινής πρόθεσης του συγγραφέα (για να μας μπερδέψει):

Ο ελεγκτής κεντρικού υπολογιστή διασύνδεσης διαύλου USB δημιουργεί προσωπικό;
Προσωπικόμεταδίδεται με σειριακή μετάδοση bit χρησιμοποιώντας τη μέθοδο NRZI.
Και εδώ είναι ένα άλλο:
κάθε πλαίσιοσυνίσταται στην ύψιστη προτεραιότητα δέματα, η σύνθεση του οποίου σχηματίζεται από τον οδηγό υποδοχής.
καθε αναμετάδοσηαποτελείται από μία ή περισσότερες συναλλαγές·
κάθε συναλλαγή αποτελείται από πακέτα;
κάθε πλαστική σακούλααποτελείται από ένα αναγνωριστικό πακέτου, δεδομένα (εάν υπάρχουν) και ένα άθροισμα ελέγχου.

Φαίνεται ότι όλα έχουν σχεδιαστεί σωστά, αλλά όσο διαβάζεις οι ερωτήσεις γίνονται όλο και περισσότερες. Η ελάχιστη δομή δεδομένων που μεταδίδεται στο δίαυλο είναι ένα πλαίσιο ή ένα πακέτο; Γενικά πρέπει να κοιτάμε από πάνω προς τα κάτω ή το αντίστροφο; Και τι κωδικοποιείται χρησιμοποιώντας τη μέθοδο NRZI - πλαίσια, πακέτα ή απλώς ολόκληρη η ροή bit στο δίαυλο; Οι συναλλαγές αποτελούνται από ένα δέμα, μια μεταφορά ή μήπως κάποιο πολύτιμο δέμα;
Γιατί δεν μπορείς απλά: Η ομάδα υποδοχής πακετάρει σε συναλλαγές και τα διανέμει σε χρονικά τμήματα που ονομάζονται πλαίσια για να δώσει προτεραιότητα σε κρίσιμα δεδομένα χρόνου (βίντεο, ήχος) με βάση το τρέχον εύρος ζώνης του διαύλου;Ναι, το USB έχει αποχρώσεις με τον προγραμματισμό των μεταφορών πακέτων, δεν τις αγγίζω ακόμα.

Το όραμά μου για τη στοίβα USB

Θεωρώ ότι το USB in a NutShell που αναφέρεται εδώ στο hub (hurray, μετάφραση), καθώς και το USB Made Simple, είναι καλή τεκμηρίωση. Με βάση αυτά, συγκέντρωσα την έκδοση της στοίβας USB μου, θα την σχεδιάσω ξανά.

Φυσική στρώση
Σε φυσικό επίπεδο, ένα σύνολο ηλεκτρικών τρόπων ενός διαφορικού ζεύγους αγωγών (μαζί με τη γείωση) χρησιμοποιείται για τον προσδιορισμό των καταστάσεων με τις οποίες κωδικοποιείται το ρεύμα bit χρησιμοποιώντας τη μέθοδο NRZI με γέμιση bit: εδώ μετά από έξι διαδοχικά «1» ( Λοιπόν, ήθελα να μεταδώσω, ας πούμε, 0xffff) Το "0" έχει εισαχθεί έτσι ώστε ο δέκτης να μην παραμένει κολλημένος σε μια κατάσταση για μεγάλο χρονικό διάστημα. Δέκτης ΕΝΑΔεν έχει εισαχθεί το "0" και δεν θα μετρηθεί ως δεδομένα· αυτή είναι μια αρκετά κοινή τεχνική στην κωδικοποίηση για καλύτερο αυτόματο συντονισμό των συχνοτήτων. Ένα ζεύγος συρμάτων μαζί με τη γείωση καθιστά δυνατό τον σχηματισμό τουλάχιστον τεσσάρων στατικών καταστάσεων (ονομάζονται J, K, SE0, SE1). Στο USB 2.0, το SE1 δεν χρησιμοποιείται και τα τρία υπόλοιπα παίζονται επιπλέον σε δυναμική (με ρολόγια και μεταβάσεις) για τη μετάδοση αρκετών ακόμη χαρακτήρων ελέγχου (όρια πακέτων, επαναφορά, σύνδεση/αποσύνδεση, εξοικονόμηση ενέργειας/έξοδος). Υπάρχουν καλές εικόνες στο USB Made Simple, Μέρος 3 - Ροή δεδομένων.
Εκείνοι. Ως αποτέλεσμα, τα δεδομένα μεταδίδονται με τη μορφή μηδενικών και μονάδων, συν όλα τα είδη χαρακτήρων ελέγχου, έτσι ώστε να μπορούν να προετοιμαστούν κανονικά πακέτα δεδομένων από ολόκληρη αυτή την ηλεκτροδυναμική κουζίνα.
(προστέθηκε κατόπιν αιτήματος των αναγνωστών)
Επίπεδο παρτίδας
Σε επίπεδο πακέτου, τα πακέτα χωρίς διεύθυνση μεταδίδονται μεταξύ του κεντρικού υπολογιστή και της συσκευής (ένα ζεύγος συσκευών σε μια γραμμή ημιαμφίδρομης λειτουργίας μπορεί να κάνει χωρίς διευθυνσιοδότηση). Το πακέτο αποτελείται από έναν δείκτη SYNC για τον συγχρονισμό του ρολογιού του δέκτη, μια ακολουθία byte και έναν χαρακτήρα EOP. Το μήκος του πακέτου είναι μεταβλητό, αλλά διαπραγματεύεται μέσω των ανώτερων επιπέδων της στοίβας. Το πρώτο byte ονομάζεται Packet Identifier (PID), έχει μια απλή πλεονάζουσα μορφή για προστασία από θόρυβο και είναι κατάλληλο για τροφοδοσία στη μηχανή επόμενου επιπέδου (για τη συναρμολόγηση συναλλαγών από πακέτα). Τα πακέτα με γέμιση (μεγαλύτερα από ένα byte PID) παρέχονται με άθροισμα ελέγχου (σύντομο CRC5 ή μακρύ CRC16, ανάλογα με τον τύπο του πακέτου). Ο αναλυτής πρωτοκόλλου θα πρέπει, τουλάχιστον, να μας δείχνει τα πακέτα.
Επίπεδο συναλλαγής
Στο επόμενο επίπεδο από πακέταπρόκειται συναλλαγές. Μια συναλλαγή είναι ένα μικρό σύνολο πακέτων (σε Full Speed ​​USB 1, 2 ή 3), που ακολουθούν αυστηρά το ένα μετά το άλλο, τα οποία (σε λειτουργία half-duplex) ο κεντρικός υπολογιστής ανταλλάσσει με ένα τελικό σημείο και μόνο ένα. Είναι πολύ σημαντικό ότι μόνο ο κεντρικός υπολογιστής ανοίγει τη συναλλαγή· αυτό είναι μια ιδιαιτερότητα USB (υπάρχει λιγότερη ταλαιπωρία για εμάς στο υλικολογισμικό MK). Σε επίπεδο συναλλαγής μπορούμε να μιλήσουμε Κανάλι(pipe) μεταξύ του κεντρικού υπολογιστή και ενός από τα τελικά σημεία της συσκευής, αλλά σκόπιμα αποφεύγω τον όρο "Σύνδεσμος δεδομένων" από το μοντέλο OSI. Ο αναλυτής πρωτοκόλλου πρέπει τουλάχιστον να αποκωδικοποιεί τις συναλλαγές.
Επίπεδο μετάδοσης
Πάνω από τις συναλλαγές θα τοποθετήσουμε το επίπεδο μεταφοράς. Υπάρχουν τέσσερις τύποι αυτών στο USB: μεταφορές ελέγχου με τελικό σημείο 0, μεταφορές διακοπής, ισόχρονες μεταφορές και μαζικές μεταφορές. Τα τρία τελευταία είναι παραλλαγές καναλιών ροής (σωλήνα ροής), για τα οποία θα πω λίγα λόγια αργότερα. Αυτό το επίπεδο θα πρέπει επίσης να εμφανίζει έναν καλό αναλυτή πρωτοκόλλου.
Επίπεδο εφαρμογής
Στην κορυφή της στοίβας, ως συνήθως, βρίσκεται το επίπεδο εφαρμογής. Αυτό που συμβαίνει εδώ είναι: ορισμός της διεύθυνσης της συσκευής από τον κεντρικό υπολογιστή, ενημέρωση της συσκευής για τον εαυτό της στη γλώσσα των περιγραφών, εντολές κεντρικού υπολογιστή για επιλογή διαμόρφωσης (μεταδόσεις ελέγχου), ανταλλαγή δεδομένων με συσκευές HID (στα παραδείγματα που βρήκα ένα μετάδοση με διακοπές μέχρι στιγμής, θέλω να δοκιμάσω τον έλεγχο), εκτύπωση σε εκτυπωτή και σάρωση, πρόσβαση αποθήκευσης USB (μεγάλο μπλοκ), επικοινωνία μέσω ακουστικών και webcam (ισόχρονα) και πολλά άλλα υπέροχα.
Τελικές πινελιές
Κάνοντας άλμα προς τα κάτω τα επίπεδα για ένα δευτερόλεπτο, μπορούμε να προσθέσουμε ότι ο κεντρικός υπολογιστής ρίχνει περιοδικά τα ίδια πακέτα Start of Frame (SOF) πάνω από το δίαυλο, διαιρώντας το χρόνο σε ίσα διαστήματα, αλλά με τέτοιο τρόπο ώστε να μην διακόπτονται οι ίδιες οι συναλλαγές. Επομένως, τα πακέτα SOF μπορούν να θεωρηθούν ανεξάρτητες συναλλαγές. Το πλαίσιο USB δεν πρέπει να συγχέεται με το ομώνυμο επίπεδο σύνδεσης δεδομένων του μοντέλου OSI. Είναι καλύτερα να θυμάστε τα καρέ (πλαίσια) ενός CD ήχου, αυτό είναι απλώς ένα χρονικό διάστημα: ο κεντρικός υπολογιστής "κολλάει" στο δίαυλο με πακέτα SOF, έτσι ώστε οι συνδεδεμένες συσκευές να σχεδιάζουν εκ των προτέρων να συμμετάσχουν στο λεγόμενο. ισόχρονες μεταδόσεις, οδηγώντας τις ροές δεδομένων σε πραγματικό χρόνο. Λοιπόν, ή κάπως έτσι: οι ομάδες συναλλαγών προγραμματίζονται από τον κεντρικό υπολογιστή σε χρονικά διαστήματα που ονομάζονται πλαίσια. Ένα πλαίσιο είναι 1ms σε Full Speed ​​και 125μs σε High Speed ​​USB, αλλά η High Speed ​​είναι ένα πιο περίπλοκο πρότυπο, είναι καλύτερο να το μελετήσετε ξεχωριστά.
UPD:
Μια καλή ερώτηση τέθηκε από τους αναγνώστες: τι γίνεται με τον κατακερματισμό; Δεν βρήκα σημάδια κατακερματισμού στο USB 2.0 σε επίπεδο συναλλαγής και κάτω, δηλ. Οι συναλλαγές προορίζονται να μεταδίδονται στο σύνολό τους. Σε ορισμένες περιπτώσεις, οι μεταφορές μπορούν και πρέπει να χωριστούν σε πολλές συναλλαγές, ιδίως λαμβάνοντας υπόψη τους ισοχρονισμένους τρόπους λειτουργίας. Και θα επαναλάβω ότι προς το παρόν ο οικοδεσπότης είναι υπεύθυνος για όλο τον προγραμματισμό για εμάς (από την πλευρά του MK πρέπει να σκεφτόμαστε λιγότερο).

Εξετάζοντας την κίνηση USB

Μια καλή επιλογή από εικόνες βρίσκεται στο αναφερόμενο βιβλίο USB Made Simple, κεφάλαιο 5: www.usbmadesimple.co.uk/ums_5.htm

Εδώ είναι ένα από αυτά


Έτσι, η συναλλαγή ξεκινά πάντα από τον κεντρικό υπολογιστή σε σχέση με ένα επιλεγμένο τελικό σημείο της συσκευής (εκτός από το ειδικό σημείο με αριθμό 0, μπορεί να υπάρχουν έως και 15 από αυτά σε μια συσκευή, για παράδειγμα, ένα συνδυαστικό πληκτρολόγιο με ποντίκι, θερμόμετρο, μονάδα flash, καφετιέρα και ένα κουμπί κλήσης για πίτσα από υδραυλικό).
Εάν ο κεντρικός υπολογιστής λάβει δεδομένα από τη συσκευή, η τελευταία δεν μπορεί να ανοίξει η ίδια μια συναλλαγή, αλλά μπορεί μόνο να περιμένει η κατάλληλη στιγμήκαι να λάβει μέρος σε αυτό. Ο κεντρικός υπολογιστής ανοίγει μια συναλλαγή στη συσκευή με ένα πακέτο με PID = IN (ομάδα Token) και εγγυάται την ελευθερία διαύλου για τον απαιτούμενο χρόνο, η συσκευή ρίχνει ένα πακέτο από την ομάδα δεδομένων, ανάλογα με τον τύπο της συναλλαγής, ο κεντρικός υπολογιστής μπορεί να επιβεβαιώσει επιτυχία με το τρίτο πακέτο από την ομάδα Handshake (ACK, NAK, STALL, NYET ), η συναλλαγή έκλεισε.
Κατά την αποστολή δεδομένων στη συσκευή (PID = OUT, ομάδα Token), ο κεντρικός υπολογιστής ανοίγει μια συναλλαγή, στέλνει ένα πακέτο δεδομένων (Δεδομένα) και ανάλογα με τη λειτουργία, μπορεί επίσης να λάβει ένα πακέτο χειραψίας που επιβεβαιώνει την επιτυχία της συναλλαγής.
Στο τέλος της συναλλαγής, όλα θα επανέλθουν στο κανονικό, η συσκευή θα περιμένει ξανά πακέτα ελέγχου από τον κεντρικό υπολογιστή.

Λειτουργίες μεταφοράς USB σε παραδείγματα STM32 USB FS

Για να χρησιμοποιήσετε ένα ζεύγος καλωδίων για την αντιγραφή από έναν δίσκο ταυτόχρονα με μια ροή ήχου-βίντεο, χειρονομίες ποντικιού και ένα σήμα παλμογράφου υψηλής ταχύτητας, υπάρχουν ΔΙΑΦΟΡΕΤΙΚΟΙ ΤΥΠΟΙμηνύματα και εκπομπές.
Ακριβώς από πάνω μόλις περιέγραψα ένα απλό κανάλι ροής(Σωλήνας ροής) μεταξύ του κεντρικού υπολογιστή και του τερματικού σημείου, όπου τα πακέτα με το γέμισμα (ομάδες δεδομένων) δεν μεταφέρουν ειδικές πληροφορίες ή πληροφορίες ελέγχου στο ίδιο το υποσύστημα USB. Πλήρης ελευθερία αλληλογραφίας, η βιβλιοθήκη ελεγκτή πρέπει να παρέχει πρωταρχικά για τη λήψη ενός buffer αυθαίρετου μεγέθους από τη μνήμη MK στον κεντρικό υπολογιστή ή πίσω. Αφήστε τη βιβλιοθήκη MK μαζί με το πρόγραμμα οδήγησης κεντρικού υπολογιστή να χειριστεί την κοπή σε πακέτα, την προώθηση και την «ανασυγκρότηση». Στο STM32 αυτά είναι τα USB_SIL_Write() και USB_SIL_Read(), που περιγράφονται στο UM0424. Είναι το πολύ λογικό επίπεδο της αφαίρεσης. Στην πλευρά του κεντρικού υπολογιστή, δείτε την περιγραφή του κατάλληλου προγράμματος οδήγησης (για παράδειγμα, στο FreeBSD είναι ugen(4)).
Ωστόσο, θεωρώ βλασφημία τη χρήση βαριών περιφερειακών όπως το USB για την οργάνωση ενός απλού καναλιού ροής (το ερώτημα είναι: τι συμβαίνει με το USART;). Αλλά, φυσικά, υπάρχουν όλων των ειδών οι καταστάσεις.
Σε κάθε περίπτωση, για να ενεργοποιηθεί καθόλου το υποσύστημα USB και να εντοπιστεί η συσκευή, απαιτείται ανταλλαγή συναλλαγών ελέγχου.

ΑΠΟΠΟΙΗΣΗ ΕΥΘΥΝΩΝ

Θα αναφερθούν περαιτέρω παραδείγματα από την ίδια βιβλιοθήκη UM0424 για εργασία με Full Speed ​​​​USB από την STMicroelectronics, αλλά έχουν σχεδιαστεί για τις εγγενείς τους πίνακες επίδειξης. Πάρτε ένα παράδειγμα από τον συγγραφέα Raja, δείξτε γνώσεις μηχανικής στην προσαρμογή έργων στον πίνακα επίδειξης σας.

Όλα είναι ξεκάθαρα σχετικά με το λογισμικό: αυτά είναι παραδείγματα που δεν προορίζονται για βιομηχανική χρήση, ενδέχεται να υπάρχουν σφάλματα, ορισμένα μέρη (όπως ο πίνακας συνδέσμων στο παράδειγμα μαζικής αποθήκευσης) προστατεύονται από ένα δίπλωμα ευρεσιτεχνίας και δεν έχετε το δικαίωμα να τα χρησιμοποιήσετε σε εμπορικό έργο. Αλλά αυτό δεν είναι τίποτα, οι Κινέζοι καταφέρνουν στη συνέχεια να πουλήσουν προϊόντα USB στην αγορά, για τα οποία δεν μπαίνουν καν στον κόπο να αλλάξουν το VID και το PID της βιβλιοθήκης.

Για το σίδερο, όπως καταλαβαίνω, πρέπει να ξεκινήσεις με χαλαζία. Έχω ένα Chelyabinsk PinBoard II με χαλαζία 12 MHz (όλες οι βιβλιοθήκες έχουν σχεδιαστεί για 8 MHz), άλλαξα τον πολλαπλασιαστή PLL από 9 σε 6 (σύνδεσμος με επεξηγήσεις), διαφορετικά το MK θα επιταχυνθεί στα 108 MHz αντί για 72 MHz και USB δεν θα πάει στα 72 MHz αντί για τα απαιτούμενα 48 MHz. Μπορείτε επίσης να επιβραδύνετε την ταχύτητα MK στα 48 MHz αλλάζοντας το διαχωριστικό διαύλου USB από ένα και μισό σε ένα. Οι ειδικοί δεν επιθυμούν να χρησιμοποιούν την εσωτερική γεννήτρια του HSI MK: η συχνότητα μπορεί να μετατοπιστεί ελαφρώς λόγω θέρμανσης και είναι δύσκολο να προβλεφθούν οι συνέπειες για το USB. Λοιπόν, μην ξεχνάτε την περιφέρεια, φυσικά. Χωρίς μνήμη flash SPI/SDIO, από το παράδειγμα μαζικής αποθήκευσης μπορείτε να δημιουργήσετε μόνο ένα αναλογικό του /dev/null, αλλά δεν μπορείτε να το μορφοποιήσετε :-)

Ελέγξτε τις μεταδόσεις και τα κανάλια μηνυμάτων
Σκεπτόμενος το USB, θυμάμαι το παλιό καλό πρωτόκολλο PPP με το LCP, IPCP, CCP και επίσης το xzCP. Η ανταλλαγή μηνυμάτων ειδικού τύπου μεταξύ του κεντρικού υπολογιστή και του τελικού σημείου Νο. 0 είναι το τοπικό ισοδύναμο του x3CP.
Μέσω των εκπομπών ελέγχου, η συσκευή προετοιμάζεται, λαμβάνει μια διεύθυνση και ενημερώνει τον κεντρικό υπολογιστή για τον εαυτό του στη γλώσσα των περιγραφέων (ώστε να μπορεί να βρει και να ενεργοποιήσει το απαιτούμενο πρόγραμμα οδήγησης). Χωρίς λειτουργίες ελέγχου, η απλή ροή δεν θα λειτουργήσει· εάν η συσκευή δεν ανταποκριθεί στη φόρμα, ο κεντρικός υπολογιστής θα κλείσει γρήγορα τη θύρα: πρέπει να ακολουθηθεί το πρωτόκολλο.
Κατ' αρχήν, το πρωτόκολλο δεν απαγορεύει την ανάρτηση σημείο ελέγχουΝο. 0 και ανταλλαγή δεδομένων, παρόμοια με τη λειτουργία διακοπής. Ταυτόχρονα, σκεφτείτε το: πώς θα ενημερώσετε το υλικολογισμικό MK, ας πούμε, στο πεδίο; Έχετε έτοιμο τον προγραμματιστή; Υπάρχει και άλλη λύση.
Παράδειγμα: Αναβάθμιση υλικολογισμικού συσκευής
Διακοπτόμενες μεταδόσεις
Αυτή η ποικιλία ( διακοπή μεταφοράς) προορίζεται για την ανταλλαγή μικρών συναλλαγών παρόμοιων με εκείνων ελέγχου. Όχι, η συσκευή δεν μπορεί να διακόψει τον κεντρικό υπολογιστή, περιμένει για ψηφοφορία, η συχνότητα και τα μεγέθη πακέτων καθορίζονται εκ των προτέρων στην περιγραφή της συσκευής. Κατάλληλο για όλα τα είδη τηλεχειριστηρίων, αισθητήρων, ποντικιών, LED και άλλες καφετιέρες HID. Το κανάλι με διακοπές σε κάθε σημείο είναι μονοκατευθυντικό.
Παραδείγματα: Προσαρμοσμένο HID, Joystick ποντίκι, Εικονική θύρα COM
Ισόχρονες μεταδόσεις
Χρόνος στα ελληνικά σημαίνει «χρόνος». Ισόχρονη μετάδοση ( ισόχρονη μεταφορά) - τοπική υψηλή τεχνολογία που σας επιτρέπει να διαχειρίζεστε τις ροές δεδομένων σε πραγματικό χρόνο. Διαθέτει εγγυημένο (αλλά όχι απαραίτητα μεγάλο) εύρος ζώνης και καμία επιβεβαιωτική συναλλαγή, όπως το UDP με QoS. Σπασμένο πακέτο; Ήταν ο θεός Χρόνος που έσπρωξε τον ΜΚ στο πόδι. Δεν χρειάζεται να προσπαθήσετε να στείλετε ξανά το πακέτο, διαφορετικά ο Θεός θα στεναχωρηθεί. Ωστόσο, ελέγχουμε τα checksums αθόρυβα από το Chronos. Οι ισόχρονες μεταφορές είναι καλές για συστήματα μέτρησης ήχου-βίντεο και σε πραγματικό χρόνο, καθώς και για άλλα παιχνίδια διπλή χρήση. Αν και κάποιοι από αυτούς μπορεί. Είναι πιο ενδιαφέρον να κλείσουμε κάποιο είδος AVR, συνδέοντάς το στο ARM μας μέσω USART ή SPI. Οι ισόχρονες λειτουργίες εμπλέκονται στη σηματοδότηση πλαισίου (θυμηθείτε το τικ σε ένα πακέτο SOF).
Παράδειγμα: Ηχείο φωνής USB
Μεταδόσεις μεγάλων μπλοκ
Όχι, δεν θα κουβαλάμε σακούλες τσιμέντου. Νομίζω ότι όλοι έχουν μάθει τον τρόπο λειτουργίας διαφόρων Μονάδες USB. Μεταγραφές μαζική μεταφοράέχουν στόχο να στείλουν δεδομένα όσο το δυνατόν περισσότερα και όσο το δυνατόν γρηγορότερα, πάντα με τη μεταφορά σπασμένων πακέτων, αλλά χωρίς εγγυήσεις για το εύρος ζώνης, δίνοντάς τα σε ισόχρονες μεταδόσεις εάν είναι απαραίτητο (όπως στο TCP χωρίς QoS). ΣΧΕΤΙΚΑ ΜΕ εσωτερική δομήΜίλησα ήδη για μονάδες flash USB, τώρα μπορείτε να κατεβάσετε και να εκτελέσετε ένα λειτουργικό πρωτότυπο. Δεν το έχω δοκιμάσει ο ίδιος, αλλά ο πίνακας των εντολών SCSI στην περιγραφή του παραδείγματος (όπως ήταν, παρεμπιπτόντως) είναι αρκετά συμβολικός. Δεν βρήκα σημάδια αλγόριθμου διαχείρισης φθοράς για μνήμη NAND :-)
ΣΗΜΕΙΩΣΗ: Η προστασία ευρεσιτεχνίας STM ισχύει κατά τόπους.
Παράδειγμα: Μαζική αποθήκευση

Τι έχει μείνει άγνωστο

Δεν έχω στόχο να φτιάξω άλλο σχολικό βιβλίο σε USB, υπάρχουν αρκετά από αυτά χωρίς εμένα, και περιγράφονται καλά: το ηλεκτρικό μέρος, λεπτομέρειες πρωτοκόλλου, εργασία με διανομείς, γλώσσα περιγραφής και το επίπεδο αφαίρεσης HID, προβλήματα με το VID/ Μοναδικότητα PID, USB 3.0 και πολλά άλλα υπέροχα χαρακτηριστικά του διαύλου USB, άλλα χρήσιμα σε εμάς και άλλα όχι και τόσο χρήσιμα. Για ειδικούς πληροφορικής, προτείνω ιδιαίτερα μια εκδρομή στη σκοτεινή πλευρά με μια επισκόπηση των συσκευών του εχθρού (μια μονάδα flash με ένα μεταμφιεσμένο πληκτρολόγιο HID που θα κάνει τρομερά πράγματα).

Συνδέσεις

Προσαρμογή του παραδείγματος Custom HID στο δωρεάν περιβάλλον Em::Blocks και στην πλακέτα επίδειξης προϋπολογισμού STM32F103C8T6 που παράγεται από την LC-Tech Industrial Electronics και Άνθρωποι πληροφορικής. Αυτό είναι ένα είδος μηχανικής Γιν και Γιανγκ, ο καθένας από εμάς έχει ένα μερίδιο και από τα δύο.

Οι μηχανικοί βιομηχανικών ηλεκτρονικών έχουν εξαιρετικές γνώσεις και δεξιότητες στο υλικό· συγκολλούν εξαρτήματα ραδιοφώνου με λεπτά κόλληση με το αριστερό τους χέρι με κλειστά μάτια (και μετά λειτουργεί). Κοιταζώ ηλεκτρονικό κύκλωμα, σχεδόν φυσικά αρχίζουν να αισθάνονται όλα τα ρεύματα του με δυναμικά, λειτουργούν επίσης με κυκλώματα ισχύος και με (μεγάλα, γρήγορα, επικίνδυνα) βιομηχανικά προϊόντα. Η προσέγγιση για τον προγραμματισμό του MK είναι κατάλληλη: απλά πρέπει να εξάγει τα απαραίτητα λογικά επίπεδα στα σωστά σκέλη τη σωστή στιγμή, δεν έχει σημασία με ποιον τρόπο. Είναι συντηρητικοί στην τεχνολογία (μην παρεμβαίνετε - λειτουργεί), τα βαριά περιφερειακά MK δεν ευνοούνται ιδιαίτερα. Όταν συζητάμε για αντικειμενοστραφή προγραμματισμό, ασφάλεια πληροφοριών, τα γιγαντιαία έργα με ένα εκατομμύριο γραμμές κώδικα και κάθε είδους φανταχτερές γραφικές διεπαφές γίνονται βαρετά. Αντί του διαύλου USB προσανατολισμένου στα πακέτα, προτιμούν τη λειτουργία ροής USART, βελτιωμένη είτε με το συνηθισμένο RS-232 είτε με το πιο βάναυσο RS-485 (σειριακό δίαυλο για βιομηχανικές εφαρμογές, έως 10 Mbit/s στα 15 μέτρα, έως και 100 kbit/s στα 1200μ, έως 32 συσκευές).

Οι άνθρωποι της πληροφορικής ανατρέφονται για να καταλαβαίνουν λειτουργικά συστήματα, δικτυακή υποδομή και περίπλοκες αλληλεπιδράσεις, η ελίτ γνωρίζει καλά την ασφάλεια των πληροφοριών και κατανοεί κάθε είδους αόρατους τρόπους για να διεισδύσει στο σύστημα κάποιου άλλου. Μερικοί άνθρωποι αγαπούν πραγματικά τις γάτες (πώς μπορείς να μην τις αγαπάς; Εγώ, ωστόσο, δεν κρατώ, δεν αναπαράγω ή δεν μαγειρεύω :-). Πολλοί άνθρωποι αγαπούν την ελευθερία της πληροφόρησης, ασκώντας κριτική σε εταιρείες/κυβερνήσεις και νικώντας τις δυνάμεις της φύσης με τη δύναμη της σκέψης. Είναι παθολογικά τεμπέληδες, αλλά λατρεύουν τις νέες τεχνολογίες και τα στριμμένα μηχανικά παζλ με ακριβά παιχνίδια (κατά προτίμηση λυμένα σε επίπεδο λογισμικού ή, σε ακραίες περιπτώσεις, jumpers). Οι σχέσεις με ένα κολλητήρι είναι προστατευμένες: μην ρωτήσετε τον ειδικό πληροφορικής αν του αρέσει ένα κολλητήρι, μπορεί να παρεξηγήσει. Ρωτήστε καλύτερα αν του αρέσει η συγκόλληση ηλεκτρονικών κυκλωμάτων.

Για τι μιλάω; Απλώς βλέπουμε αυτόν τον κόσμο διαφορετικά... Άλλωστε Πυρήνας LinuxΤα ίδια παιδιά το έκοψαν από C modules και ένθετα assembler για συγκεκριμένες πλατφόρμες, και φαινόταν να τα καταφέρνουν χωρίς holivar. Βλέπω ένα πραγματικά σοβαρό έργο ως ένα σύστημα πολλαπλών πυρήνων που συνδυάζει τους πιο πρόσφατους μικροελεγκτές με βαριά περιφερειακά, αλλά δεν αποκλείω συνδυασμούς με κλασικά μοντέλα όπως το AVR: μπορούν να χρησιμοποιηθούν για να κρεμάσουν ορισμένες κρίσιμες, γρήγορα περιστρεφόμενες αιχμές δόρατος τεχνικής προόδου. Εάν ο κωδικός έχει δοκιμαστεί εδώ και χρόνια, τότε γιατί όχι;

Προσθέστε ετικέτες

USB (Universal Serial Bus- "Universal Serial bus") - σειριακή διεπαφήμεταφορά δεδομένων για περιφερειακές συσκευές μεσαίας και χαμηλής ταχύτητας.Για τη σύνδεση χρησιμοποιείται ένα καλώδιο 4 συρμάτων, με δύο καλώδια για τη λήψη και τη μετάδοση δεδομένων και 2 καλώδια για την τροφοδοσία της περιφερειακής συσκευής. Χάρη στις ενσωματωμένες γραμμές Τροφοδοτικό USBσας επιτρέπει να συνδέετε περιφερειακές συσκευές χωρίς δικό της τροφοδοτικό.

Βασικές πληροφορίες

καλώδιο USB αποτελείται από 4 χάλκινους αγωγούς - 2 αγωγούς ισχύος και 2 αγωγούς δεδομένων σε συνεστραμμένο ζεύγος, και μια γειωμένη πλεξούδα (σήτα).

Καλώδια USBέχουν φυσικά διαφορετικές συμβουλές «στη συσκευή» και «στον οικοδεσπότη». Δυνατόν Υλοποίηση USBσυσκευές χωρίς καλώδιο, με μύτη "to-host" ενσωματωμένη στο σώμα. Είναι επίσης δυνατή η μόνιμη ενσωμάτωση του καλωδίου στη συσκευή(για παράδειγμα, πληκτρολόγιο USB, κάμερα web, ποντίκι USB), αν και το πρότυπο το απαγορεύει αυτό για συσκευές πλήρους και υψηλής ταχύτητας.

Δίαυλος USBαυστηρά προσανατολισμένο, δηλαδή έχει την έννοια της «κύριας συσκευής» (οικοδεσπότης, επίσης γνωστός ως ελεγκτής USB, συνήθως ενσωματωμένος στο τσιπ της νότιας γέφυρας στο μητρική πλακέτα) και "περιφερειακές συσκευές".

Οι συσκευές μπορούν να λαμβάνουν ισχύ +5 V από το δίαυλο, αλλά μπορεί επίσης να απαιτούν εξωτερική παροχή ρεύματος. Υποστηρίζεται επίσης μια κατάσταση αναμονής για συσκευές και διαχωριστές κατόπιν εντολής από το δίαυλο, αφαιρώντας την κύρια τροφοδοσία ενώ διατηρείται η ισχύς σε αναμονή και ενεργοποιείται κατόπιν εντολής από το δίαυλο.

Υποστηρίζει USBΖεστή σύνδεση και αποσύνδεση συσκευών. Αυτό είναι δυνατό λόγω της αύξησης του μήκους του αγωγού επαφής γείωσης σε σχέση με τους αγωγούς σήματος. Όταν συνδέεται Υποδοχή USBείναι οι πρώτοι που κλείνουν επαφές γείωσης, τα δυναμικά των περιβλημάτων των δύο συσκευών γίνονται ίσα και η περαιτέρω σύνδεση των αγωγών σήματος δεν οδηγεί σε υπερτάσεις, ακόμη και αν οι συσκευές τροφοδοτούνται από διαφορετικές φάσεις ενός τριφασικού δικτύου ισχύος.

Στο λογικό επίπεδο Συσκευή USBυποστηρίζει συναλλαγές για λήψη και μετάδοση δεδομένων. Κάθε πακέτο κάθε συναλλαγής περιέχει έναν αριθμό τελικό σημείοστη συσκευή. Όταν μια συσκευή είναι συνδεδεμένη, τα προγράμματα οδήγησης στον πυρήνα του λειτουργικού συστήματος διαβάζουν μια λίστα τελικών σημείων από τη συσκευή και δημιουργούν δομές δεδομένων ελέγχου για να επικοινωνούν με κάθε τελικό σημείο της συσκευής. Η συλλογή τελικών σημείων και δομών δεδομένων στον πυρήνα του λειτουργικού συστήματος ονομάζεται σωλήνας.

Καταληκτικά σημεία, και επομένως τα κανάλια, ανήκουν σε μία από τις 4 κατηγορίες:

1) ροή (χύμα),

2) διευθυντής (έλεγχος),

3) ισόχρονος (ισόχ),

4) διακοπή.

Συσκευές χαμηλής ταχύτητας όπως το ποντίκι δεν μπορούν να έχουν ισόχρονα και κανάλια ροής.

Κανάλι ελέγχουσχεδιασμένο για την ανταλλαγή σύντομων πακέτων ερωτήσεων-απαντήσεων με τη συσκευή. Οποιαδήποτε συσκευή έχει κανάλι ελέγχου 0, το οποίο επιτρέπει λογισμικό OS διαβάστηκε σύντομες πληροφορίεςσχετικά με τη συσκευή, συμπεριλαμβανομένων των κωδικών κατασκευαστή και μοντέλων που χρησιμοποιούνται για την επιλογή του προγράμματος οδήγησης και μια λίστα με άλλα τελικά σημεία.

Διακοπή καναλιούσας επιτρέπει να παραδίδετε σύντομα πακέτα και προς τις δύο κατευθύνσεις, χωρίς να λαμβάνετε απάντηση/επιβεβαίωση, αλλά με εγγύηση χρόνου παράδοσης - το πακέτο θα παραδοθεί το αργότερο σε N χιλιοστά του δευτερολέπτου. Για παράδειγμα, χρησιμοποιείται σε συσκευές εισόδου (πληκτρολόγια, ποντίκια ή joysticks).

Ισόχρονο κανάλισας επιτρέπει να παραδίδετε πακέτα χωρίς εγγύηση παράδοσης και χωρίς απαντήσεις/επιβεβαιώσεις, αλλά με εγγυημένη ταχύτητα παράδοσης N πακέτων ανά περίοδο διαύλου (1 KHz για χαμηλή και πλήρη ταχύτητα, 8 KHz για υψηλή ταχύτητα). Χρησιμοποιείται για τη μετάδοση πληροφοριών ήχου και βίντεο.

Κανάλι ροήςπαρέχει εγγύηση παράδοσης κάθε πακέτου, υποστηρίζει την αυτόματη αναστολή μετάδοσης δεδομένων λόγω απροθυμίας της συσκευής (υπερχείλιση buffer ή underrun), αλλά δεν εγγυάται την ταχύτητα παράδοσης και την καθυστέρηση. Χρησιμοποιείται, για παράδειγμα, σε εκτυπωτές και σαρωτές.

Ώρα λεωφορείουχωρίζεται σε περιόδους, στην αρχή της περιόδου ο ελεγκτής μεταδίδει το πακέτο «αρχής περιόδου» σε ολόκληρο το δίαυλο. Στη συνέχεια, κατά τη διάρκεια της περιόδου, μεταδίδονται πακέτα διακοπής, μετά ισόχρονα στην απαιτούμενη ποσότητα· για τον υπόλοιπο χρόνο στην περίοδο, μεταδίδονται πακέτα ελέγχου και, τέλος, πακέτα ροής.

Ενεργή πλευρά του λεωφορείουείναι πάντα ο ελεγκτής, η μεταφορά ενός πακέτου δεδομένων από τη συσκευή στον ελεγκτή υλοποιείται ως σύντομη ερώτηση από τον ελεγκτή και μια μακρά απάντηση από τη συσκευή που περιέχει δεδομένα. Το χρονοδιάγραμμα κίνησης πακέτων για κάθε περίοδο διαύλου δημιουργείται από κοινού από το υλικό του ελεγκτή και το λογισμικό του προγράμματος οδήγησης· για αυτό, πολλοί ελεγκτές χρησιμοποιούν Άμεση πρόσβαση στη μνήμη DMA (Άμεση πρόσβαση στη μνήμη) - τρόπος ανταλλαγής δεδομένων μεταξύ συσκευών ή μεταξύ της συσκευής και της κύριας μνήμης, χωρίς συμμετοχή Κεντρικός Επεξεργαστής(ΕΠΕΞΕΡΓΑΣΤΗΣ). Ως αποτέλεσμα, η ταχύτητα μεταφοράς αυξάνεται καθώς τα δεδομένα δεν αποστέλλονται μπρος-πίσω στην CPU.

Το μέγεθος του πακέτου για ένα τελικό σημείο είναι μια σταθερά ενσωματωμένη στον πίνακα τελικών σημείων της συσκευής και δεν μπορεί να αλλάξει. Επιλέγεται από τον προγραμματιστή συσκευών μεταξύ αυτών που υποστηρίζονται από το πρότυπο USB.


Προδιαγραφές

Δυνατότητες USB:

Υψηλή ταχύτητα μεταφοράς (ρυθμός bit σηματοδότησης πλήρους ταχύτητας) - 12 Mb/s
- Μέγιστο μήκος καλωδίου για υψηλή ταχύτητα μεταφοράς - 5 m
- Ρυθμός bit σηματοδότησης χαμηλής ταχύτητας - 1,5 Mb/s
- Μέγιστο μήκος καλωδίου για χαμηλό ρυθμό baud - 3 m
- Μέγιστες συνδεδεμένες συσκευές (συμπεριλαμβανομένων των πολλαπλασιαστών) - 127
- Είναι δυνατή η σύνδεση συσκευών με διαφορετικούς ρυθμούς baud
- Δεν χρειάζεται ο χρήστης να εγκαταστήσει πρόσθετα στοιχεία όπως τερματιστές SCSI
- Τάση τροφοδοσίας περιφερειακών συσκευών - 5 V
- Μέγιστη κατανάλωση ρεύματος ανά συσκευή - 500 mA

Καλωδίωση υποδοχής USB 1.1 και 2.0

Τα σήματα USB μεταδίδονται μέσω δύο καλωδίων ενός θωρακισμένου καλωδίου τεσσάρων συρμάτων.

Εδώ :

GND- Κύκλωμα «θήκης» για τροφοδοσία περιφερειακών συσκευών
V BUS- +5V και για κυκλώματα τροφοδοσίας
Λάστιχο D+σχεδιασμένο για μετάδοση δεδομένων

Λάστιχο ΡΕ-για λήψη δεδομένων.

Μειονεκτήματα του USB 2.0

Αν και η μέγιστη ταχύτητα μεταφοράς Δεδομένα USBΤο 2.0 είναι 480 Mbit/s (60 MB/s), στην πραγματική ζωή δεν είναι ρεαλιστικό να επιτύχουμε τέτοιες ταχύτητες (~33,5 MB/s στην πράξη). Αυτό οφείλεται στις μεγάλες καθυστερήσεις στο δίαυλο USB μεταξύ της αίτησης για μεταφορά δεδομένων και της πραγματικής έναρξης της μεταφοράς. Για παράδειγμα, το FireWire, αν και έχει χαμηλότερη απόδοση αιχμής 400 Mbps, που είναι 80 Mbps (10 MB/s) μικρότερη από το USB 2.0, στην πραγματικότητα επιτρέπει μεγαλύτερη απόδοση μεταφοράς δεδομένων. σκληροι ΔΙΣΚΟΙκαι άλλες συσκευές αποθήκευσης πληροφοριών. Από αυτή την άποψη, διάφορες μονάδες κινητής τηλεφωνίας έχουν περιοριστεί εδώ και πολύ καιρό λόγω του ανεπαρκούς πρακτικού εύρους ζώνης του USB 2.0.

Παρέχει ανταλλαγή δεδομένων μεταξύ του κεντρικού υπολογιστή και της συσκευής. Σε επίπεδο πρωτοκόλλου, επιλύονται εργασίες όπως η διασφάλιση της αξιοπιστίας και της αξιοπιστίας της μετάδοσης και του ελέγχου ροής. Όλη η κίνηση στο δίαυλο USB μεταφέρεται μέσω συναλλαγών· σε κάθε συναλλαγή, η ανταλλαγή είναι δυνατή μόνο μεταξύ του κεντρικού υπολογιστή και της συσκευής διεύθυνσης (το τελικό σημείο της).

Όλες οι συναλλαγές (ανταλλαγές) με συσκευές USB αποτελούνται από δύο ή τρία πακέτα· τυπικές ακολουθίες πακέτων σε συναλλαγές φαίνονται στο Σχήμα. 1. Κάθε συναλλαγή προγραμματίζεται και ξεκινά από τον κεντρικό ελεγκτή, ο οποίος στέλνει ένα πακέτο διακριτικών συναλλαγής. Το διακριτικό συναλλαγής περιγράφει τον τύπο και την κατεύθυνση της μεταφοράς, τη διεύθυνση της επιλεγμένης συσκευής USB και τον αριθμό τελικού σημείου. Η συσκευή που απευθύνεται από τον δείκτη αναγνωρίζει τη διεύθυνσή της και προετοιμάζεται για ανταλλαγή. Η πηγή δεδομένων που προσδιορίζεται από το διακριτικό μεταδίδει ένα πακέτο δεδομένων. Σε αυτό το σημείο ολοκληρώνονται οι συναλλαγές που σχετίζονται με ισόχρονες μεταφορές - δεν υπάρχει επιβεβαίωση παραλαβής πακέτου. Για άλλους τύπους μεταδόσεων, υπάρχει ένας μηχανισμός επιβεβαίωσης που διασφαλίζει την εγγυημένη παράδοση δεδομένων. Οι μορφές πακέτων φαίνονται στην Εικ. 2, οι τύποι συσκευασίας βρίσκονται στον πίνακα. Σε όλα τα πεδία πακέτων, εκτός από το πεδίο CRC, τα δεδομένα μεταδίδονται πρώτα το λιγότερο σημαντικό bit (το λιγότερο σημαντικό bit εμφανίζεται στα αριστερά στα διαγράμματα χρονισμού). Το πακέτο ξεκινά με την ακολουθία Sync και τελειώνει με τον τερματιστή - EOP. Ο τύπος του πακέτου καθορίζεται από το πεδίο PID. Ο σκοπός των υπόλοιπων πεδίων εξηγείται παρακάτω. Το μήκος των πεδίων Sync και EOP καθορίζεται για μεταδόσεις σε FS/LS, για μεταδόσεις υψηλής ταχύτητας, το πεδίο Sync επεκτείνεται σε διαστήματα 32 bit και το EOP σε 8 (στα πακέτα SOF, το πεδίο EOP έχει μήκος 40 bit ).

Όλα τα ληφθέντα πακέτα ελέγχονται για σφάλματα, καθώς οι αποδεκτές μορφές πακέτων και ορισμένες συμβάσεις επιτρέπουν:

  • ένα πακέτο ξεκινά με μια ακολουθία συγχρονισμού που ακολουθείται από το PID του (Packet Identifier). Το αναγνωριστικό ακολουθείται από το αντίστροφο αντίγραφό του - Έλεγχος. Μια ασυμφωνία μεταξύ δύο αντιγράφων θεωρείται ένδειξη σφάλματος.
  • Το σώμα του πακέτου (όλα τα πεδία του πακέτου, εξαιρουμένου του PID και του χαρακτηριστικού EOP) προστατεύεται από έναν κωδικό CRC: 5-bit για πακέτα δεικτών, 16-bit για πακέτα δεδομένων. Ένα CRC που δεν ταιριάζει με την αναμενόμενη τιμή θεωρείται σφάλμα.
  • το πακέτο τελειώνει με ένα ειδικό σήμα EOP. Εάν το πακέτο περιέχει έναν μη ακέραιο αριθμό byte, θεωρείται λανθασμένο. Ένα λανθασμένο EOP, ακόμη και σε ένα όριο byte, δεν θα επιτρέψει τη λήψη του πακέτου λόγω ενός σχεδόν αναπόφευκτου σφάλματος CRC σε αυτήν την κατάσταση.
  • Τα δεδομένα πακέτων μεταδίδονται στο φυσικό στρώμα (στον δίαυλο) χρησιμοποιώντας γέμιση bit (εμφανίζεται ένα μηδέν μετά από έξι ένα bit), το οποίο αποτρέπει την απώλεια συγχρονισμού bit κατά τη διάρκεια ενός μονοτονικού σήματος. Η λήψη περισσότερων από έξι ένα bit στη σειρά θεωρείται σφάλμα (στο HS - ένα σημάδι του τέλους του πλαισίου).

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

Για να ανιχνεύσει την αποτυχία του ομότιμου να ανταποκριθεί σε ένα πακέτο, κάθε συσκευή έχει έναν μετρητή χρονικού ορίου που σταματά να περιμένει μια απάντηση μετά την πάροδο κάποιου χρόνου. Το USB έχει ένα όριο στον χρόνο μετ' επιστροφής του διαύλου: ο χρόνος από το τέλος του EOP του παραγόμενου πακέτου μέχρι την έναρξη του πακέτου απόκρισης. Για την τελική συσκευή (και τον κεντρικό ελεγκτή), η μέγιστη καθυστέρηση απόκρισης (χρόνος απόκρισης) από το τέλος του προβλεπόμενου EOP έως την εισαγωγή της αρχής του πακέτου κανονικοποιείται. Για τους διανομείς, η καθυστέρηση μετάδοσης πακέτων κανονικοποιείται, ενώ για τα καλώδια, η καθυστέρηση μετάδοσης του σήματος κανονικοποιείται. Ο μετρητής χρονικού ορίου πρέπει να λαμβάνει υπόψη τη μέγιστη δυνατή καθυστέρηση για μια έγκυρη διαμόρφωση διαύλου: έως 5 ενδιάμεσοι κόμβοι, έως 5 μέτρα κάθε καλώδιο. Η επιτρεπόμενη τιμή χρονικού ορίου, εκφρασμένη σε διαστήματα bit (bt), εξαρτάται από την ταχύτητα:

  • Για ταχύτητες FS/LS, η καθυστέρηση που εισάγεται από ένα τμήμα καλωδίου είναι μικρή σε σύγκριση με το διάστημα bit (bt). Με βάση αυτό, το USB 1.0 χρησιμοποιεί το ακόλουθο μοντέλο για τον υπολογισμό των επιτρεπόμενων καθυστερήσεων. Μια επιτρεπόμενη καθυστέρηση 30 ns εκχωρείται για κάθε τμήμα καλωδίου και 40 ns για τον διανομέα. Έτσι, πέντε ενδιάμεσοι διανομείς με τα καλώδιά τους εισάγουν καθυστέρηση 700 ns κατά τη διάρκεια μιας διπλής περιστροφής, η οποία αντιστοιχεί περίπου σε 8,5 bt στο FS. Για μια συσκευή FS, η καθυστέρηση απόκρισης δεν πρέπει να υπερβαίνει τα 6,5 bt (και λαμβανομένου υπόψη του καλωδίου της - 7,5 bt). Με βάση αυτό, η προδιαγραφή απαιτεί από τους πομπούς στο FS να χρησιμοποιούν μετρητή χρονικού ορίου 16-18 bt.
  • στην ταχύτητα HS, η καθυστέρηση στο τμήμα καλωδίου είναι πολύ μεγαλύτερη από το διάστημα bit και στο USB 2.0 το μοντέλο υπολογισμού είναι ελαφρώς διαφορετικό. Εδώ, εκχωρούνται 26 ns για κάθε τμήμα καλωδίου και 4 ns συν 36 bt για τον διανομέα. Έτσι, η διέλευση από 6 τμήματα καλωδίου δύο φορές (2×6×26 = 312 ns ≈ 150 bt) και πέντε κόμβους (2×5×4 = 40 ns ≈ 19 bt συν 2×5×36 = 360 bt) διαρκεί έως και 529 bt . Η καθυστέρηση απόκρισης της συσκευής είναι αποδεκτή έως και 192 bt και η συνολική καθυστέρηση λαμβάνοντας υπόψη τα καλώδια και τους διανομείς θα είναι έως 721 bt. Με βάση αυτό, η προδιαγραφή απαιτεί από τους πομπούς στο HS να χρησιμοποιούν μετρητή χρονικού ορίου 736-816 bt.

Ο κεντρικός ελεγκτής έχει τον δικό του μετρητή σφαλμάτων που σχετίζεται με κάθε τελικό σημείο όλων των συσκευών, ο οποίος μηδενίζεται όταν προγραμματίζεται κάθε συναλλαγή. Αυτός ο μετρητής μετράει όλα τα σφάλματα πρωτοκόλλου (συμπεριλαμβανομένων των σφαλμάτων χρονικού ορίου λήξης) και εάν ο αριθμός των σφαλμάτων υπερβαίνει το όριο (3), τότε το κανάλι με αυτό το τελικό σημείο διακόπτεται και ο κάτοχός του (πρόγραμμα οδήγησης συσκευής ή USBD) ειδοποιείται. Μέχρι να ξεπεραστεί το όριο, ο κεντρικός υπολογιστής χειρίζεται σφάλματα για μη ισόχρονες μεταφορές επιχειρώντας να δοκιμάσει ξανά τις συναλλαγές, χωρίς να ειδοποιήσει το λογισμικό πελάτη. Οι ισόχρονες μεταφορές δεν επαναλαμβάνονται· ο κεντρικός υπολογιστής αναφέρει αμέσως σφάλματα.

Τα πακέτα χειραψίας χρησιμοποιούνται για επιβεβαίωση, έλεγχο ροής και σηματοδότηση σφαλμάτων. Από αυτά τα πακέτα, ο κεντρικός ελεγκτής μπορεί να στείλει στη συσκευή μόνο ένα πακέτο ACK, επιβεβαιώνοντας την χωρίς σφάλματα λήψη του πακέτου δεδομένων. Η συσκευή χρησιμοποιεί τα ακόλουθα πακέτα χειραψίας για να απαντήσει στον κεντρικό υπολογιστή:

ACK - επιβεβαίωση (θετική) επιτυχούς ολοκλήρωσης μιας συναλλαγής εξόδου ή ελέγχου.
NAK - αρνητική επιβεβαίωση, είναι ένα σημάδι ότι η συσκευή δεν είναι έτοιμη να εκτελέσει αυτήν τη συναλλαγή (δεν υπάρχουν δεδομένα για μετάδοση στον κεντρικό υπολογιστή, δεν υπάρχει χώρος στο buffer για λήψη, η λειτουργία ελέγχου δεν έχει ολοκληρωθεί). Αυτή είναι μια κανονική απόκριση που κανείς δεν θα γνωρίζει εκτός από τον ελεγκτή κεντρικού υπολογιστή, ο οποίος αναγκάζεται να επαναλάβει τη συναλλαγή αργότερα. Στις συναλλαγές εισόδου, η συσκευή δίνει μια απάντηση NAK αντί για ένα πακέτο δεδομένων εάν δεν είναι έτοιμες.
Το STALL είναι ένα σοβαρό μήνυμα σφάλματος που σημαίνει ότι χωρίς ειδική παρέμβαση λογισμικού, η εργασία με αυτό το τελικό σημείο καθίσταται αδύνατη. Αυτή η απόκριση κοινοποιείται τόσο στο πρόγραμμα οδήγησης USBD, το οποίο ακυρώνει περαιτέρω συναλλαγές με αυτό το σημείο, όσο και στο πρόγραμμα οδήγησης πελάτη, από το οποίο η παρέμβαση λογισμικού αναμένεται να ξεμπλοκάρει το σημείο. Στις συναλλαγές ελέγχου (Control), η απόκριση STALL σημαίνει μη εκτελέσιμο αυτού του αιτήματος; Δεν απαιτείται ξεμπλοκάρισμα του σημείου.

Ο έλεγχος ροής εξόδου που βασίζεται αποκλειστικά στην ικανότητα απόκρισης με ένα NAK εάν η συσκευή δεν είναι έτοιμη είναι μια πολύ αναποτελεσματική χρήση του εύρους ζώνης του διαύλου: ένα μεγάλο πακέτο δεδομένων σπαταλάται στον δίαυλο για να διασφαλιστεί ότι η συσκευή δεν είναι έτοιμη. Στο USB 2.0, αυτό το πρόβλημα αποφεύγεται στις συναλλαγές μαζικής εξόδου και ελέγχου χρησιμοποιώντας το πρωτόκολλο Ping. Ο κεντρικός υπολογιστής μπορεί να ελέγξει την ετοιμότητα της συσκευής να λάβει ένα μέγιστο μέγεθος πακέτου στέλνοντάς της ένα διακριτικό PING probe. Η συσκευή μπορεί να ανταποκριθεί σε αυτό το διακριτικό με ένα ACK (αν είναι έτοιμο) ή NAK (αν δεν μπορεί να λάβει το μέγιστο μέγεθος πακέτου). Μια αρνητική απάντηση θα αναγκάσει τον κεντρικό υπολογιστή να προσπαθήσει ξανά αργότερα, μια θετική απάντηση θα του επιτρέψει να εκτελέσει μια συναλλαγή εξόδου. Σε μια συναλλαγή ανάληψης μετά από θετική απάντηση στη δοκιμή, οι απαντήσεις της συσκευής ποικίλλουν περισσότερο:

  • ACK σημαίνει επιτυχημένη λήψη και ετοιμότητα για αποδοχή του επόμενου πακέτου πλήρους μεγέθους.
  • NYET σημαίνει επιτυχημένη λήψη αλλά όχι έτοιμο για το επόμενο πακέτο.
  • Το NAK είναι μια απροσδόκητη απόκριση (αντίκειται στην επιτυχία της δοκιμής), αλλά είναι δυνατό εάν η συσκευή ξαφνικά καταστεί προσωρινά μη διαθέσιμη.

Η συσκευή υψηλής ταχύτητας στους περιγραφείς τελικού σημείου αναφέρει την πιθανή ένταση των αποστολών NAK: το πεδίο bInterval για τα τελικά σημεία Bulk and Control υποδεικνύει τον αριθμό των μικροπλαισίων ανά NAK (0 σημαίνει ότι η συσκευή δεν θα απαντήσει ποτέ με NAK σε μια συναλλαγή εξόδου).

Οι μεταφορές συστοιχίας, διακοπής και ελέγχου διασφαλίζουν αξιόπιστη παράδοση δεδομένων. Μετά την επιτυχή λήψη του πακέτου, ο παραλήπτης δεδομένων στέλνει μια επιβεβαίωση - ένα πακέτο επιβεβαίωσης ACK. Εάν ο δέκτης δεδομένων εντοπίσει σφάλμα, το πακέτο αγνοείται και δεν του αποστέλλεται απάντηση. Η πηγή δεδομένων θεωρεί ότι το επόμενο πακέτο έχει μεταδοθεί με επιτυχία όταν λαμβάνει ένα ACK από τον δέκτη. Εάν δεν φτάσει η επιβεβαίωση, τότε στην επόμενη συναλλαγή η πηγή επαναλαμβάνει στέλνοντας το ίδιο πακέτο. Ωστόσο, το πακέτο επιβεβαίωσης μπορεί να χαθεί λόγω παρεμβολών. έτσι ώστε στην περίπτωση αυτή η επαναλαμβανόμενη αποστολή του πακέτου από τον παραλήπτη να μην γίνεται αντιληπτή ως το επόμενο τμήμα δεδομένων, τα πακέτα δεδομένων είναι αριθμημένα. Η αρίθμηση είναι modulo 2 (αριθμός 1 bit): τα πακέτα χωρίζονται σε ζυγά (με αναγνωριστικό DATA0) και περιττά (DATA1). Για κάθε τελικό σημείο (εκτός από το ισόχρονο), ο κεντρικός υπολογιστής και η συσκευή έχουν Bits Εναλλαγής, οι αρχικές τους καταστάσεις είναι συνεπείς με τον ένα ή τον άλλο τρόπο. Οι συναλλαγές IN και OUT μεταδίδουν και αναμένουν πακέτα δεδομένων με αναγνωριστικά DATA0 ή DATA1, που αντιστοιχούν στην τρέχουσα κατάσταση αυτών των bit. Ο δέκτης δεδομένων αλλάζει το bit του σε περίπτωση λήψης δεδομένων χωρίς σφάλματα με το αναμενόμενο αναγνωριστικό, η πηγή δεδομένων αλλάζει κατά τη λήψη της επιβεβαίωσης. Εάν ο παραλήπτης λάβει ένα πακέτο χωρίς σφάλματα με απροσδόκητο αναγνωριστικό, στέλνει ένα ACK, αλλά αγνοεί τα δεδομένα στο πακέτο επειδή το πακέτο είναι μια αναμετάδοση δεδομένων που έχουν ήδη ληφθεί.

Συναλλαγές για διάφοροι τύποιοι μεταδόσεις έχουν διαφορές πρωτοκόλλου λόγω της εγγύησης ή μη εγγύησης απόδοσης, χρόνου απόκρισης, αξιοπιστίας παράδοσης και συγχρονισμού εισόδου και εξόδου. Ανάλογα με αυτά τα χαρακτηριστικά, οι συναλλαγές χρησιμοποιούν έναν ή τον άλλο από τους μηχανισμούς πρωτοκόλλου που περιγράφονται παραπάνω. Σημειώστε ότι η ανίχνευση σφαλμάτων μετάδοσης λειτουργεί σε όλες τις συναλλαγές, επομένως τα δεδομένα που λαμβάνονται κατά λάθος αγνοούνται πάντα. Το ποιοι μηχανισμοί πρωτοκόλλου χρησιμοποιούνται στην τρέχουσα συναλλαγή είναι "γνωστοί" τόσο από τον ελεγκτή κεντρικού υπολογιστή (με βάση τον περιγραφέα τελικού σημείου που ελήφθη προηγουμένως) όσο και από τη συσκευή USB στην οποία υλοποιείται αυτό το τελικό σημείο.

Οι ισόχρονες συναλλαγές παρέχουν εγγυημένες συναλλαγματικές ισοτιμίες, αλλά δεν παρέχουν αξιόπιστη παράδοση. Για το λόγο αυτό, δεν υπάρχουν επιβεβαιώσεις στο πρωτόκολλο, καθώς η επανάληψη πακέτων θα προκαλέσει την αποτυχία των σχεδίων παράδοσης δεδομένων. Δεν υπάρχει έλεγχος ροής που να βασίζεται σε επιβεβαίωση—η συσκευή πρέπει να διατηρεί τον ρυθμό κυκλοφορίας που δηλώνεται στον ισόχρονο περιγραφέα τελικού σημείου.

Οι ισόχρονες συναλλαγές εξόδου αποτελούνται από δύο πακέτα που αποστέλλονται από τον κεντρικό ελεγκτή, ένα διακριτικό OUT και ένα πακέτο δεδομένων DATA. Σε μια συναλλαγή εισόδου, ο κεντρικός υπολογιστής στέλνει ένα διακριτικό IN, στο οποίο η συσκευή αποκρίνεται με ένα πακέτο δεδομένων, πιθανώς με μήκος πεδίου δεδομένων μηδέν (αν δεν υπάρχουν έτοιμα δεδομένα). Οποιαδήποτε άλλη απάντηση από τη συσκευή (καθώς και η "σιωπή") θεωρείται από τον κεντρικό υπολογιστή ως σφάλμα που οδηγεί στη διακοπή αυτού του καναλιού.

Με την ισόχρονη ανταλλαγή, υπάρχει έλεγχος αξιοπιστίας (απόρριψη πακέτων με σφάλματα) και ακεραιότητας δεδομένων (ανίχνευση του γεγονότος ενός πακέτου που λείπει). Ο έλεγχος ακεραιότητας βασίζεται στον αυστηρό ντετερμινισμό της συναλλαγματικής ισοτιμίας - σύμφωνα με την περιγραφή του, το σημείο αναμένει μια συναλλαγή με περίοδο μικροπλαισίων 2bInterval-1. Για ένα τυπικό ισόχρονο τελικό σημείο, μόνο μία συναλλαγή είναι δυνατή ανά μικροπλαίσιο και ένα σφάλμα κατά τη λήψη ενός πακέτου έχει ως αποτέλεσμα τη μη λήψη δεδομένων λήψης στο μικροπλαίσιο στο οποίο αναμενόταν. Επομένως, δεν απαιτείται αρίθμηση πακέτων (διακόπτης Toggle Bit). Οι συσκευές πλήρους ταχύτητας και οι ελεγκτές κεντρικού υπολογιστή θα πρέπει να στέλνουν μόνο πακέτα τύπου DATA01. Για ισοχρονισμένα τελικά σημεία ευρείας ζώνης (USB 2.0), μπορούν να μεταδοθούν έως τρία πακέτα δεδομένων σε κάθε μικροπλαίσιο. Οποιοδήποτε από αυτά τα πακέτα μπορεί να χαθεί και απαιτείται αρίθμηση πακέτων εντός του μικροπλαισίου για τον εντοπισμό αυτής της κατάστασης. Για αυτήν την αρίθμηση, έχουν εισαχθεί δύο νέοι τύποι πακέτων δεδομένων: DATA2 και MDATA. Η ποικιλία των τύπων πακέτων, εκτός από την αρίθμηση, σας επιτρέπει επίσης να ενημερώσετε τον συνεργάτη επικοινωνίας σας για τα σχέδιά σας για ένα συγκεκριμένο μικροπλαίσιο. Στις συναλλαγές IN, η συσκευή υποδεικνύει με το αναγνωριστικό πακέτου πόσα ακόμη πακέτα σκοπεύει να εκδώσει στο ίδιο μικροπλαίσιο, γεγονός που επιτρέπει στον κεντρικό υπολογιστή να αποφύγει περιττές προσπάθειες εισαγωγής. Έτσι, εάν ένα πακέτο μεταδίδεται σε ένα μικροπλαίσιο, τότε θα είναι DATA0. Εάν δύο, η ακολουθία θα είναι DATA1, DATA0. τρία - DATA2, DATA1, DATA0. Οι συναλλαγές OUT χρησιμοποιούν ένα πακέτο MDATA (Περισσότερα δεδομένα) για την έξοδο του μη τελευταίου πακέτου σε ένα μικροπλαίσιο και το τελευταίο αναγνωριστικό πακέτου υποδεικνύει πόσα πακέτα μεταδόθηκαν πριν από αυτό. Έτσι, με μία συναλλαγή εξόδου χρησιμοποιείται το πακέτο DATA0, με δύο - η ακολουθία MDATA, DATA1, με τρία - MDATA, MDATA, DATA2. Όλες οι συναλλαγές εκτός από την τελευταία σε μικροπλαίσιο πρέπει να χρησιμοποιούν το μέγιστο μέγεθος πακέτου. Λάβετε υπόψη ότι άλλες συναλλαγές ενδέχεται να εναλλάσσονται μεταξύ ευρυζωνικών συναλλαγών σε μικροπλαίσιο.