Σήματα φλας Spi κατά την κανονική λειτουργία. Τι είναι η διεπαφή SPI

Το SPI (Serial Peripheral Interface) είναι ένα πρότυπο σειριακής σύγχρονης μετάδοσης δεδομένων σε λειτουργία full duplex, που αναπτύχθηκε από τη Motorola για να παρέχει απλή και φθηνή διασύνδεση μικροελεγκτών και περιφερειακών. Το SPI ονομάζεται επίσης μια διασύνδεση τεσσάρων καλωδίων. Το SPI είναι ένα σύγχρονο πρωτόκολλο στο οποίο κάθε μετάδοση συγχρονίζεται με ένα κοινό σήμα ρολογιού που παράγεται από τη συσκευή υποδοχής (επεξεργαστή). Το περιφερειακό λήψης (slave) συγχρονίζει τη λήψη της ακολουθίας bit με το σήμα ρολογιού. Πολλά τσιπ μπορούν να συνδεθούν σε μία σειριακή περιφερειακή διεπαφή ενός πλοιάρχου chip. Ο κύριος επιλέγει το slave για μετάδοση ενεργοποιώντας το σήμα επιλογής chip στο slave chip. Τα περιφερειακά που δεν έχουν επιλεγεί από τον επεξεργαστή δεν συμμετέχουν στη μετάδοση SPI.
Το SPI χρησιμοποιεί τέσσερα ψηφιακά σήματα:

  • MOSIή SI – κύρια έξοδος, υποτελής είσοδος (Αγγλικά: Master Out Slave In). Χρησιμεύει για τη μεταφορά δεδομένων από την κύρια συσκευή στην υποτελή συσκευή.
  • MISOή SO – κύρια είσοδος, υποτελής έξοδος (Αγγλικά: Master In Slave Out). Χρησιμεύει για τη μεταφορά δεδομένων από μια εξαρτημένη συσκευή σε μια κύρια συσκευή.
  • SCKή SCLK – σήμα σειριακού ρολογιού (Αγγλικά Serial CLocK). Χρησιμεύει για τη μετάδοση σήματος ρολογιού για εξαρτημένες συσκευές.
  • C.S.ή SS – επιλογή chip, επιλογή slave (Αγγλικά: Chip Select, Slave Select) Κατά κανόνα, η επιλογή ενός chip γίνεται σε χαμηλό λογικό επίπεδο.

Ανάλογα με τους συνδυασμούς πολικότητας και φάσης ρολογιού, είναι δυνατοί τέσσερις τρόποι λειτουργίας SPI.

Λειτουργία SPI Διάγραμμα χρονισμού
Λειτουργία SPI0

Λειτουργία SPI1
Το επίπεδο ενεργητικής παρόρμησης είναι υψηλό.

Λειτουργία SPI2

Πρώτα κουμπώστε και μετά σύρετε.

Λειτουργία SPI3
Το επίπεδο ενεργητικής ώθησης είναι χαμηλό.
Πρώτη μετατόπιση, μετά απότομη.

Ο πίνακας προϋποθέτει:

  • MSB - το πιο σημαντικό κομμάτι.
  • LSB - λιγότερο σημαντικό κομμάτι.

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

  • τρόπο λειτουργίας σύμφωνα με τον πίνακα.
  • ταχύτητα μετάδοσης;
  • μορφή μετάδοσης (από το λιγότερο σημαντικό bit στο πιο σημαντικό bit ή αντίστροφα).

Η σύνδεση δύο μικροελεγκτών σε μια δομή master-slave μέσω της διεπαφής SPI πραγματοποιείται σύμφωνα με το ακόλουθο σχήμα.

Οι ακίδες SCK, CS για τον κύριο μικροελεγκτή είναι έξοδοι και για τον εξαρτημένο μικροελεγκτή είναι είσοδοι.

Η μεταφορά δεδομένων πραγματοποιείται ως εξής. Κατά την εγγραφή στον καταχωρητή δεδομένων SPI του κύριου μικροελεγκτή, ξεκινά η γεννήτρια ρολογιού της μονάδας SPI και τα δεδομένα αρχίζουν να εξάγονται κομμάτι-κομμάτι στον ακροδέκτη MOSI και, κατά συνέπεια, στον ακροδέκτη MOSI του βοηθητικού μικροελεγκτή. Μετά την έκδοση του τελευταίου bit του τρέχοντος byte, η γεννήτρια σήματος ρολογιού σταματά ενώ ταυτόχρονα θέτει τη σημαία "Τέλος μετάδοσης" σε "1". Εάν υποστηρίζονται και ενεργοποιούνται διακοπές από τη μονάδα SPI, δημιουργείται ένα αίτημα διακοπής. Μετά από αυτό, ο κύριος μικροελεγκτής μπορεί να ξεκινήσει τη μετάδοση του επόμενου byte ή, εφαρμόζοντας ένα επίπεδο τάσης λογικού "1" στην είσοδο SS του slave, να τον θέσει σε κατάσταση αναμονής.

Ταυτόχρονα με τη μετάδοση δεδομένων από το κύριο στο slave, η μετάδοση πραγματοποιείται επίσης προς την αντίθετη κατεύθυνση, υπό την προϋπόθεση ότι υπάρχει χαμηλή τάση στην είσοδο SS του slave. Έτσι, σε κάθε κύκλο βάρδιας, τα δεδομένα ανταλλάσσονται μεταξύ συσκευών. Στο τέλος κάθε κύκλου, η σημαία διακοπής ορίζεται σε "1" τόσο στον κύριο όσο και στον υποτελή μικροελεγκτή. Τα ληφθέντα byte αποθηκεύονται σε buffer λήψης για μελλοντική χρήση.

Κατά τη λήψη δεδομένων, το ληφθέν byte πρέπει να διαβαστεί από τον καταχωρητή δεδομένων SPI πριν φτάσει το τελευταίο bit του επόμενου byte στον καταχωρητή μετατόπισης. Διαφορετικά το πρώτο byte θα χαθεί.

Η ακίδα SS προορίζεται για την επιλογή της ενεργής εξαρτημένης συσκευής και είναι πάντα μια είσοδος στη λειτουργία εξαρτημένης λειτουργίας. Κάθε φορά που εφαρμόζεται η ακίδα SS στη λογική 1, η μονάδα SPI επαναφέρεται. Εάν συμβεί μια αλλαγή στην κατάσταση αυτής της ακίδας κατά τη μετάδοση δεδομένων, τόσο η αποστολή όσο και η λήψη θα σταματήσουν αμέσως και τα byte που μεταδίδονται και λαμβάνονται θα χαθούν.

Εάν ο μικροελεγκτής βρίσκεται σε λειτουργία Master, η κατεύθυνση μεταφοράς δεδομένων μέσω του ακροδέκτη SS ορίζεται από το χρήστη. Εάν η ακίδα έχει διαμορφωθεί ως έξοδος, λειτουργεί ως ακροδέκτης γενικής χρήσης και δεν επηρεάζει τη λειτουργία της μονάδας SPI. Κατά κανόνα, σε αυτήν την περίπτωση χρησιμοποιείται για τον έλεγχο του ακροδέκτη SS ενός μικροελεγκτή που λειτουργεί σε λειτουργία Slave.

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

Ένα παράδειγμα χρήσης της διεπαφής SPI για μικροελεγκτές STM32 περιγράφεται καλά στο

Με βαθμολογίες από 10 Ohm έως 1 MOhm).

  • καλώδια σύνδεσης (για παράδειγμα, αυτό είναι ένα καλό σετ).
  • προσωπικός υπολογιστής με περιβάλλον ανάπτυξης Arduino IDE.
  • 1 Περιγραφή της σειράςΔιεπαφή SPI

    SPI - Σειριακή περιφερειακή διεπαφή ή "Σειριακή περιφερειακή διεπαφή"είναι ένα πρωτόκολλο σύγχρονης μεταφοράς δεδομένων για σύζευξη κύρια συσκευήΜε περιφερειακές συσκευές(Δούλος). Η κύρια συσκευή είναι συχνά ένας μικροελεγκτής. Η επικοινωνία μεταξύ συσκευών πραγματοποιείται μέσω τεσσάρων καλωδίων, γι' αυτό το SPI ονομάζεται μερικές φορές "διασύνδεση τεσσάρων συρμάτων". Αυτά είναι τα ελαστικά:

    Υπάρχουν τέσσερις τρόποι μεταφοράς δεδομένων ( SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), που προκαλείται από το συνδυασμό της πολικότητας των παλμών ρολογιού (εργαζόμαστε σε ΥΨΗΛΟ ή ΧΑΜΗΛΟ επίπεδο), Πολικότητα ρολογιού, CPOLκαι τη φάση των παλμών ρολογιού (συγχρονισμός στην ανερχόμενη ή καθοδική άκρη του παλμού ρολογιού), Φάση ρολογιού, CPHA.

    Το σχήμα εξηγεί αυτόν τον πίνακα.

    Η διεπαφή SPI παρέχει πολλές επιλογές για τη σύνδεση εξαρτημένων συσκευών: ανεξάρτητοςΚαι αλληλουχία. Όταν συνδέεται ανεξάρτητα με το δίαυλο SPI, η κύρια συσκευή έχει πρόσβαση σε κάθε εξαρτημένη συσκευή ξεχωριστά. Με σύνδεση καταρράκτη, οι εξαρτημένες συσκευές λειτουργούν μία προς μία, σαν σε καταρράκτη.


    Τύποι σύνδεσης συσκευής για λειτουργία μέσω της διεπαφής SPI: ανεξάρτητοι και διαδοχικοί

    2 Υλοποίηση της διεπαφής SPIσε πλακέτες οικογένειας Arduino

    Στο Arduino, οι διαύλους διασύνδεσης SPI βρίσκονται σε συγκεκριμένες θύρες. Κάθε πίνακας έχει τη δική του ανάθεση καρφίτσας. Για ευκολία, τα συμπεράσματα είναι διπλά και τοποθετούνται επίσης σε ξεχωριστό Υποδοχή ICSP(Σε Circuit Serial Programming, προγραμματισμός μιας συσκευής που περιλαμβάνεται σε ένα κύκλωμα χρησιμοποιώντας ένα σειριακό πρωτόκολλο). Λάβετε υπόψη ότι η υποδοχή ICSP δεν διαθέτει υποτελή καρφίτσα επιλογής - SS, επειδή Υποτίθεται ότι το Arduino θα χρησιμοποιηθεί ως κύρια συσκευή στο δίκτυο. Αλλά εάν είναι απαραίτητο, μπορείτε να αντιστοιχίσετε οποιοδήποτε ψηφιακό pin του Arduino ως SS.

    Το σχήμα δείχνει την τυπική αντιστοιχία των ακίδων στους διαύλους SPI για το Arduino UNO και το Nano.


    3 Βιβλιοθήκη για εργασίαμε διεπαφή SPI

    Μια ειδική βιβλιοθήκη έχει γραφτεί για το Arduino που υλοποιεί το πρωτόκολλο SPI. Συνδέεται ως εξής: στην αρχή του προγράμματος προσθέτουμε #include SPI.h.

    Για να ξεκινήσετε να χρησιμοποιείτε το πρωτόκολλο SPI, πρέπει να ορίσετε τις ρυθμίσεις και στη συνέχεια να αρχικοποιήσετε το πρωτόκολλο χρησιμοποιώντας τη διαδικασία SPI.beginTransaction(). Μπορείτε να το κάνετε αυτό με μία οδηγία: SPI.beginTransaction(SPISsettings(14000000, MSBFIRST, SPI_MODE0))

    Αυτό σημαίνει ότι αρχικοποιούμε το πρωτόκολλο SPI σε συχνότητα 14 MHz, η μετάδοση δεδομένων πραγματοποιείται ξεκινώντας από το MSB (το πιο σημαντικό bit), στη λειτουργία SPI_MODE0.

    Μετά την προετοιμασία, επιλέξτε τη εξαρτημένη συσκευή μετακινώντας την αντίστοιχη ακίδα SS στην κατάσταση ΧΑΜΗΛΟΣ.

    Στη συνέχεια μεταφέρουμε τα δεδομένα στη slave συσκευή με την εντολή SPI.transfer().

    Μετά τη μεταφορά επιστρέφουμε το SS στην κατάσταση ΥΨΗΛΟΣ.


    Η εργασία με το πρωτόκολλο ολοκληρώνεται με την εντολή SPI.endTransaction().

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

    4 Σύνδεση καταχωρητή αλλαγής ταχυτήτωνστο Arduino

    Ας σκεφτούμε πρακτική χρήσηΔιεπαφή SPI. Θα ανάψουμε τα LED ελέγχοντας έναν καταχωρητή μετατόπισης 8 bit μέσω του διαύλου SPI. Ας συνδεθούμε στο Arduino καταχωρητής αλλαγής ταχυτήτων 74HC595. Θα συνδέσουμε ένα LED με ονομαστική τιμή 220 Ohms σε κάθε μία από τις 8 εξόδους καταχωρητή μέσω μιας περιοριστικής αντίστασης. Το διάγραμμα φαίνεται στο σχήμα.


    5 Σκίτσο για τον έλεγχο ενός καταχωρητή μετατόπισηςμέσω διασύνδεσης SPI

    Ας γράψουμε ένα σκίτσο σαν αυτό.

    #περιλαμβάνω const int pinSelect = 8; // εγγραφή καρφίτσα επιλογής void setup() ( SPI.begin(); // προετοιμασία της διεπαφής SPI pinMode(pinSelect, OUTPUT); // digitalWrite(pinSelect, LOW); // επιλογή υποτελών συσκευών (καταχώριση) SPI.transfer(0); // διαγραφή των περιεχομένων του καταχωρητή digitalWrite(pinSelect, HIGH); // τέλος μετάδοσης Serial.begin(9600); } void loop() (για (int i=0; i )

    Αρχικά, ας συνδέσουμε τη βιβλιοθήκη SPI και ας αρχικοποιήσουμε τη διεπαφή SPI. Ας ορίσουμε τον ακροδέκτη 8 ως τον ακροδέκτη επιλογής SS. Ας διαγράψουμε τον καταχωρητή shift στέλνοντας την τιμή "0" σε αυτόν. Αρχικοποιήστε τη σειριακή θύρα.

    Για να ανάψετε ένα συγκεκριμένο LED χρησιμοποιώντας μητρώο βάρδιας, πρέπει να δώσετε έναν αριθμό 8-bit στην είσοδό του. Για παράδειγμα, για να ανάψει το πρώτο LED, παρέχουμε τον δυαδικό αριθμό 00000001, για το δεύτερο - 00000010, για το τρίτο - 00000100, κ.λπ. Αυτοί οι δυαδικοί αριθμοί, όταν μετατρέπονται στο δεκαδικό σύστημα αριθμών, σχηματίζουν την ακόλουθη ακολουθία: 1, 2, 4, 8, 16, 32, 64, 128 και είναι δυνάμεις του δύο από το 0 έως το 7.

    Αντίστοιχα, στον κύκλο βρόχος()Με βάση τον αριθμό των LED, υπολογίζουμε εκ νέου από το 0 έως το 7. Λειτουργία δύναμη (βάση, πτυχίο)Αυξάνει το 2 στην ισχύ του μετρητή βρόχου. Οι μικροελεγκτές δεν λειτουργούν με μεγάλη ακρίβεια με αριθμούς τύπου "διπλού", επομένως χρησιμοποιούμε τη συνάρτηση στρογγυλοποίησης για να μετατρέψουμε το αποτέλεσμα σε ακέραιο γύρος(). Και μεταφέρουμε τον αριθμό που προκύπτει στον καταχωρητή μετατόπισης. Για λόγους σαφήνειας, η οθόνη σειριακής θύρας εμφανίζει τις τιμές που λαμβάνονται κατά τη διάρκεια αυτής της λειτουργίας: Η μονάδα "τρέχει" μέσα από τις εκκενώσεις - τα LED ανάβουν σε ένα κύμα.

    6 "Κύμα που τρέχει"από LED

    Τα LED ανάβουν ένα προς ένα και παρατηρούμε ένα τρέχον «κύμα» φώτων. Οι λυχνίες LED ελέγχονται χρησιμοποιώντας έναν καταχωρητή μετατόπισης, στον οποίο συνδεθήκαμε μέσω της διεπαφής SPI. Ως αποτέλεσμα, μόνο 3 ακίδες Arduino χρησιμοποιούνται για τον έλεγχο 8 LED.Εάν συνδέαμε τα LED απευθείας στις ψηφιακές θύρες του Arduino, θα χρειαζόταν να χρησιμοποιήσουμε μια ξεχωριστή θύρα για κάθε LED.

    Μελετήσαμε το απλούστερο παράδειγμα εργασίας του Arduino με το δίαυλο SPI. Θα εξετάσουμε λεπτομερέστερα τη λειτουργία πολλών καταχωρητών μετατόπισης με ανεξάρτητες και διαδοχικές συνδέσεις σε ξεχωριστό άρθρο.

    SPI - Serial Peripheral Interface - σειριακό

    περιφερειακή διεπαφή

    Το SPI είναι ένα σειριακό σύγχρονο πρότυπο για μεταφορά δεδομένων μεταξύ μικροκυκλωμάτων σε λειτουργία full duplex.

    Αυτή η διεπαφή αναπτύχθηκε αρχικά από τη Motorola για να παρέχει απλή και φθηνή διασύνδεση μικροελεγκτών και περιφερειακών και χρησιμοποιείται επί του παρόντος σε προϊόντα πολλών κατασκευαστών.

    Η διεπαφή SPI, μαζί με το I2C, είναι μια από τις πιο ευρέως χρησιμοποιούμενες διεπαφές για τη σύνδεση μικροκυκλωμάτων. Το όνομά του είναι συντομογραφία του «Serial Peripheral Interface» (SPI bus).

    SPI bus), το οποίο αντικατοπτρίζει τον σκοπό του - ένα δίαυλο για τη σύνδεση εξωτερικών συσκευών. Ο δίαυλος SPI είναι οργανωμένος σε βάση master-slave. Ο κύριος διαύλου είναι συνήθως ένας μικροελεγκτής, αλλά μπορεί επίσης να είναι προγραμματιζόμενος λογικός, ελεγκτής DSP ή ASIC. Λεωφορεία που συνδέονται με τον πλοίαρχο εξωτερικές συσκευέςσχηματίζουν λεωφορεία σκλάβων. Ο ρόλος τους διαδραματίζεται από διάφορα είδη μικροκυκλωμάτων, περιλαμβανομένων. συσκευές αποθήκευσης (EEPROM, μνήμη Flash, SRAM), ρολόι πραγματικού χρόνου (RTC), ADC/DAC, ψηφιακά ποτενσιόμετρα, εξειδικευμένοι ελεγκτές κ.λπ.

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

    1. Ηλεκτρική σύνδεση

    ΣΕ διαφορά από μια τυπική σειριακή θύρατυπική σειριακή θύρα), το SPI είναι μια σύγχρονη διεπαφή στην οποία οποιαδήποτε μετάδοση συγχρονίζεται με ένα κοινό σήμα ρολογιού που παράγεται από την κύρια συσκευή (επεξεργαστή). Το περιφερειακό λήψης (slave) συγχρονίζει τη λήψη της ακολουθίας bit με το σήμα ρολογιού. Πολλά τσιπ μπορούν να συνδεθούν σε μία σειριακή περιφερειακή διεπαφή ενός πλοιάρχου chip. Ο κύριος επιλέγει το slave για μετάδοση ενεργοποιώντας το σήμα επιλογής chip στο slave chip. Περιφερειακά που δεν έχουν επιλεγεί από τον επεξεργαστή δεν συμμετέχουν

    στη μετάδοση SPI.

    Το SPI χρησιμοποιεί τέσσερα ψηφιακά σήματα:

    MOSI (eng. Master Out Slave In) - έξοδος της κύριας συσκευής (εναλλακτική ονομασία DO, SDO, DOUT), είσοδος της εξαρτημένης συσκευής για λήψη σειριακών δεδομένων (εναλλακτική ονομασία DI, SDI, DIN). Χρησιμεύει για τη μεταφορά δεδομένων από την κύρια συσκευή στην υποτελή.

    MISO (eng. Master In Slave Out) - είσοδος της κύριας συσκευής για λήψη σειριακών δεδομένων (εναλλακτική ονομασία DI, SDI, DIN), έξοδος της εξαρτημένης συσκευής για σειριακή μετάδοση δεδομένων (εναλλακτική ονομασία DO, SDO, DOUT). Χρησιμεύει για τη μεταφορά δεδομένων από μια εξαρτημένη συσκευή σε μια κύρια συσκευή.

    SCLK (αγγλ. Serial Clock) - σήμα σειριακού ρολογιού (εναλλακτική ονομασία DCLOCK, CLK, SCK). Χρησιμεύει για τη μετάδοση σήματος ρολογιού για εξαρτημένες συσκευές.

    CS ή SS - επιλογή chip, επιλογή υποτελούς

    (eng. Chip Select, Slave Select).

    Υπάρχουν τρεις τύποι σύνδεσης με το δίαυλο SPI, καθένας από τους οποίους περιλαμβάνει τέσσερα σήματα. Η απλούστερη σύνδεση, η οποία περιλαμβάνει μόνο δύο μικροκυκλώματα, φαίνεται στο Σχήμα 1.

    Ρύζι. 1. Η απλούστερη σύνδεση με το δίαυλο SPI

    Εδώ, ο κύριος δίαυλος μεταδίδει δεδομένα κατά μήκος της γραμμής MOSI συγχρονισμένα με το σήμα SCLK που δημιουργείται από αυτόν και ο εξαρτημένος συλλαμβάνει τα μεταδιδόμενα bit δεδομένων σε ορισμένες άκρες του λαμβανόμενου σήματος συγχρονισμού. Ταυτόχρονα, ο slave στέλνει το πακέτο δεδομένων του. Το παρουσιαζόμενο κύκλωμα μπορεί να απλοποιηθεί με την εξάλειψη της γραμμής MISO εάν το εξαρτώμενο IC που χρησιμοποιείται δεν παρέχει μετάδοση δεδομένων απόκρισης ή δεν υπάρχει ανάγκη για αυτό. Η μονόδρομη μεταφορά δεδομένων μπορεί να βρεθεί σε τσιπ όπως DAC, ψηφιακά ποτενσιόμετρα, προγραμματιζόμενους ενισχυτές και προγράμματα οδήγησης. Έτσι, η εξεταζόμενη επιλογή για τη σύνδεση ενός slave IC απαιτεί 3 ή 4 γραμμές επικοινωνίας. Για να μπορεί το slave IC να λαμβάνει και να μεταδίδει δεδομένα, εκτός από το σήμα ρολογιού, η γραμμή SS πρέπει επίσης να οδηγείται χαμηλά. Διαφορετικά, το slave IC θα είναι ανενεργό. Όταν χρησιμοποιείται μόνο ένα εξωτερικό IC, μπορεί να είναι δελεαστικό να εξαλειφθεί η γραμμή SS οδηγώντας την επιλεγμένη είσοδο του βοηθητικού IC σε πολύ χαμηλά επίπεδα. Αυτή η λύση είναι εξαιρετικά ανεπιθύμητη και μπορεί να οδηγήσει σε αστοχίες ή ακόμα και σε αδυναμία μεταφοράς δεδομένων, επειδή Η είσοδος επιλογής chip χρησιμεύει για την επαναφορά του IC στην αρχική του κατάσταση και μερικές φορές εκκινεί την έξοδο του πρώτου bit δεδομένων.

    Εάν είναι απαραίτητο να συνδέσετε πολλά μικροκυκλώματα στο δίαυλο SPI, χρησιμοποιείται είτε μια ανεξάρτητη (παράλληλη) σύνδεση (Εικ. 2) είτε μια διαδοχική (σειριακή) σύνδεση (Εικ. 3).

    Ρύζι. 2. Ανεξάρτητη σύνδεση με το δίαυλο SPI

    Ρύζι. 3. Διαδοχική σύνδεση με το δίαυλο SPI

    Η ανεξάρτητη σύνδεση είναι πιο συνηθισμένη, γιατί επιτυγχάνεται όταν χρησιμοποιείτε τσιπ συμβατά με SPI. Εδώ, όλα τα σήματα, εκτός από την επιλογή μικροκυκλωμάτων, συνδέονται παράλληλα και ο κύριος διαύλου, μεταφέροντας ένα ή άλλο σήμα SS σε χαμηλή κατάσταση, καθορίζει με ποιο slave IC θα ανταλλάξει δεδομένα. Το κύριο μειονέκτημα αυτής της σύνδεσης είναι η ανάγκη για πρόσθετες γραμμές για τη διευθυνσιοδότηση υποτελών τσιπ (ο συνολικός αριθμός γραμμών επικοινωνίας είναι 3+n, όπου n είναι ο αριθμός των υποτελών τσιπ). Η εναλλαγή καταρράκτη είναι απαλλαγμένη από αυτό το μειονέκτημα, επειδή εδώ από

    πολλά τσιπ σχηματίζουν έναν μεγάλο καταχωρητή μετατόπισης. Για να γίνει αυτό, η έξοδος δεδομένων μετάδοσης του ενός IC συνδέεται με την είσοδο λήψης δεδομένων του άλλου, όπως φαίνεται στο σχήμα 3. Οι είσοδοι επιλογής chip εδώ συνδέονται παράλληλα και, επομένως, ο συνολικός αριθμός των γραμμών επικοινωνίας διατηρείται ίσος έως 4. Ωστόσο, η χρήση της σύνδεσης καταρράκτη είναι δυνατή μόνο εάν η υποστήριξή της υποδεικνύεται στην τεκμηρίωση για τα τσιπ που χρησιμοποιούνται. Για να το μάθετε, είναι σημαντικό να γνωρίζετε ότι μια τέτοια σύνδεση ονομάζεται "daisy-chaining" στα αγγλικά.

    2. Πρωτόκολλο μεταφοράς

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

    CPOL - το αρχικό επίπεδο του σήματος συγχρονισμού (εάν CPOL=0, τότε η γραμμή συγχρονισμού πριν από την έναρξη του κύκλου μετάδοσης και μετά το τέλος της έχει χαμηλό επίπεδο (δηλαδή η πρώτη άκρη ανεβαίνει και η τελευταία πέφτει), διαφορετικά , αν CPOL=1, είναι υψηλό (δηλαδή το πρώτο μέτωπο πέφτει και το τελευταίο ανεβαίνει)).

    CPHA - φάση συγχρονισμού. αυτή η παράμετρος καθορίζει τη σειρά με την οποία εκτελείται η ρύθμιση και η δειγματοληψία δεδομένων (εάν CPHA = 0, τότε στην ανερχόμενη άκρη στον κύκλο συγχρονισμού θα γίνει δειγματοληψία των δεδομένων και στη συνέχεια, στην πτώση, η ρύθμιση

    δεδομένα; εάν CPHA=1, τότε η εγκατάσταση δεδομένων θα εκτελεστεί στην ανερχόμενη ακμή του κύκλου συγχρονισμού και η δειγματοληψία θα εκτελεστεί στην πτώση).

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

    Τραπέζι 1. Λειτουργίες SPI

    Προσωρινός

    διάγραμμα

    συγχρονισμός

    3. Σύγκριση με δίαυλο I2 C

    Όπως ήδη αναφέρθηκε, το 2-σύρμα δεν είναι λιγότερο δημοφιλές για τη σύνδεση μικροκυκλωμάτων. σειριακό λεωφορείο I2 C. Παρακάτω μπορείτε να δείτε τα πλεονεκτήματα που παρέχει αυτός ή εκείνος ο σειριακός δίαυλος.

    Πλεονεκτήματα του διαύλου SPI

    Πλεονεκτήματα του λεωφορείου I2C

    Εξαιρετική απλότητα του πρωτοκόλλου

    μεταδόσεις φυσικού επιπέδου

    παρέχει υψηλή αξιοπιστία και

    ταχύτητα μετάδοσης. Οριο

    Μετράται η απόδοση του διαύλου SPI

    Ο δίαυλος I2 C παραμένει δύο καλωδίων,

    δεκάδες megahertz και, ως εκ τούτου, αυτό

    ανεξαρτήτως ποσότητας

    ιδανικό για streaming

    μικροκυκλώματα που συνδέονται με αυτό.

    μεγάλες ποσότητες δεδομένων και ευρέως

    χρησιμοποιείται σε υψηλή ταχύτητα

    DAC/ADC, προγράμματα οδήγησης LED

    οθόνες και τσιπ μνήμης

    Όλες οι γραμμές λεωφορείων SPI είναι

    μονής κατεύθυνσης, κάτι που είναι απαραίτητο

    Δυνατότητα multi-master

    απλοποιεί τη λύση του προβλήματος

    λειτουργία όταν συνδέεται στο λεωφορείο

    μετατροπές επιπέδου και

    πολλά κορυφαία μικροκυκλώματα.

    γαλβανική απομόνωση μικροκυκλωμάτων

    Το πρωτόκολλο I2C είναι περισσότερο

    τυποποιημένο, επομένως

    Απλότητα υλοποίησης λογισμικού

    χρήστης τσιπ I2C περισσότερο από

    Πρωτόκολλο SPI.

    προστατευμένο από προβλήματα

    ασυμβατότητα επιλεγμένων

    συστατικά.

    4. Παράγωγα και συμβατά πρωτόκολλα

    MICROWIRE.

    Το πρωτόκολλο MICROWIRE του National Semiconductor είναι πανομοιότυπο με το πρωτόκολλο SPI στη λειτουργία 0 (CPOL = 0, CPHA = 0).

    Maxim 3-wire interface

    Η διαφορά μεταξύ αυτής της διεπαφής είναι ότι αντί για μετάδοση πλήρους διπλής όψης σε δύο γραμμές μονής κατεύθυνσης, εκτελεί μετάδοση μισής διπλής όψης σε μία αμφίδρομη γραμμή DQ.

    QSPI

    Ένα πρωτόκολλο υψηλότερου επιπέδου από το SPI, που επιτρέπει την αυτοματοποιημένη μεταφορά δεδομένων χωρίς τη συμμετοχή της CPU.

    Επιπλέον, η διεπαφή SPI είναι η βάση για τη δημιουργία μιας σειράς εξειδικευμένων διεπαφών, συμπεριλαμβανομένου. Διασύνδεση εντοπισμού σφαλμάτων JTAG και διεπαφές κάρτας μνήμης Flash, συμ. SD και MMC.

    Οδηγίες

    SPI- Σειριακή περιφερειακή διεπαφήή "Σειριακή περιφερειακή διεπαφή"είναι ένα πρωτόκολλο σύγχρονης μετάδοσης για τη διασύνδεση μιας κύριας συσκευής με περιφερειακές συσκευές (Slave). Η κύρια συσκευή είναι συχνά . Η επικοινωνία μεταξύ συσκευών πραγματοποιείται μέσω τεσσάρων καλωδίων, γι' αυτό το SPI ονομάζεται μερικές φορές "διασύνδεση τεσσάρων συρμάτων". Αυτά είναι τα ελαστικά:
    MOSI (Master Out Slave In)- Γραμμή μετάδοσης δεδομένων από συσκευές κύριας σε βοηθητικές συσκευές.
    MISO (Master In Slave Out)- γραμμή μετάδοσης από το slave στην κύρια συσκευή.
    SCLK (σειριακό ρολόι)- παλμοί ρολογιού συγχρονισμού που παράγονται από την κύρια συσκευή.
    SS (Slave Select)- γραμμή επιλογής εξαρτημένης συσκευής. όταν η γραμμή είναι "0", η εξαρτημένη συσκευή "καταλαβαίνει" ότι τώρα απευθύνεται.
    Υπάρχουν τέσσερις τρόποι μεταφοράς δεδομένων (SPI_MODE0, SPI_MODE1, SPI_MODE2, SPI_MODE3), που καθορίζονται από το συνδυασμό της πολικότητας των παλμών ρολογιού (εργαζόμαστε σε ΥΨΗΛΟ ή ΧΑΜΗΛΟ επίπεδο), Πολικότητα ρολογιού, CPOLκαι τη φάση των παλμών ρολογιού (συγχρονισμός στην ανερχόμενη ή καθοδική άκρη του παλμού ρολογιού), Φάση ρολογιού, CPHA.
    Το σχήμα δείχνει δύο επιλογές για τη σύνδεση συσκευών μέσω του πρωτοκόλλου SPI: ανεξάρτητη και διαδοχική. Όταν συνδέεται ανεξάρτητα με το δίαυλο SPI, η κύρια συσκευή έχει πρόσβαση σε κάθε εξαρτημένη συσκευή ξεχωριστά. Με το cascade, οι συσκευές πυροδοτούνται μία-μία, σε καταρράκτη.

    Στο Arduino, οι διαύλους διασύνδεσης SPI βρίσκονται σε συγκεκριμένες θύρες. Κάθε πίνακας έχει τη δική του ανάθεση καρφίτσας. Για ευκολία, οι ακίδες διπλασιάζονται και τοποθετούνται επίσης σε ξεχωριστή υποδοχή ICSP (In Circuit Serial Programming, μια συσκευή που περιλαμβάνεται σε ένα κύκλωμα χρησιμοποιώντας ένα σειριακό πρωτόκολλο). Λάβετε υπόψη ότι η υποδοχή ICSP δεν διαθέτει υποτελή καρφίτσα επιλογής - SS, επειδή Υποτίθεται ότι το Arduino θα χρησιμοποιηθεί ως κύρια συσκευή στο δίκτυο. Αλλά εάν είναι απαραίτητο, μπορείτε να αντιστοιχίσετε οποιοδήποτε pin Arduino ως SS.
    Το σχήμα δείχνει την τυπική αντιστοιχία των ακίδων στους διαύλους SPI για το Arduino UNO και το Nano.

    Έχει γραφτεί ένα ειδικό για το Arduino που υλοποιεί το πρωτόκολλο SPI. Συνδέεται ως εξής: στην αρχή του προγράμματος προσθέτουμε #include SPI.h
    Για να ξεκινήσετε να χρησιμοποιείτε το πρωτόκολλο SPI, πρέπει να ορίσετε τις ρυθμίσεις και στη συνέχεια να αρχικοποιήσετε το πρωτόκολλο χρησιμοποιώντας τη διαδικασία SPI.beginTransaction(). Μπορείτε να το κάνετε αυτό με μία οδηγία: SPI.beginTransaction(SPISsettings(14000000, MSBFIRST, SPI_MODE0)).
    Αυτό σημαίνει ότι αρχικοποιούμε το πρωτόκολλο SPI σε συχνότητα 14 MHz, η μετάδοση δεδομένων πραγματοποιείται ξεκινώντας από το MSB (το πιο σημαντικό bit), στη λειτουργία "0".
    Μετά την προετοιμασία, επιλέξτε τη εξαρτημένη συσκευή μετακινώντας την αντίστοιχη ακίδα SS στην κατάσταση LOW.
    Στη συνέχεια μεταφέρουμε τα δεδομένα στη εξαρτημένη συσκευή χρησιμοποιώντας την εντολή SPI.transfer().
    Μετά τη μετάδοση, επιστρέψτε το SS στην κατάσταση HIGH.
    Η εργασία με το πρωτόκολλο ολοκληρώνεται με την εντολή SPI.endTransaction(). Συνιστάται να ελαχιστοποιήσετε τον χρόνο μεταφοράς μεταξύ των οδηγιών SPI.beginTransaction() και SPI.endTransaction() για να αποφύγετε προβλήματα εάν μια άλλη συσκευή προσπαθήσει να ξεκινήσει μια μεταφορά δεδομένων χρησιμοποιώντας διαφορετικές ρυθμίσεις.

    Ας εξετάσουμε την πρακτική εφαρμογή της διεπαφής SPI. Θα ανάψουμε τα LED ελέγχοντας τον καταχωρητή μετατόπισης 8-bit μέσω του διαύλου SPI. Ας συνδέσουμε τον καταχωρητή 74HC595 στο Arduino. Θα συνδέσουμε ένα LED σε κάθε μία από τις 8 εξόδους (μέσω μιας περιοριστικής αντίστασης). Το διάγραμμα φαίνεται στο σχήμα.

    Ας γράψουμε ένα σκίτσο σαν αυτό.
    Αρχικά, ας συνδέσουμε τη βιβλιοθήκη SPI και ας αρχικοποιήσουμε τη διεπαφή SPI. Ας ορίσουμε τον ακροδέκτη 8 ως τον ακροδέκτη επιλογής υποτελούς συσκευής. Ας διαγράψουμε τον καταχωρητή shift στέλνοντας την τιμή "0" σε αυτόν. Αρχικοποιήστε τη σειριακή θύρα.
    Για να ανάψετε ένα συγκεκριμένο LED χρησιμοποιώντας έναν καταχωρητή μετατόπισης, πρέπει να εφαρμόσετε έναν αριθμό 8-bit στην είσοδό του. Για παράδειγμα, για να ανάψει το πρώτο LED, παρέχουμε τον δυαδικό αριθμό 00000001, για το δεύτερο - 00000010, για το τρίτο - 00000100, κ.λπ. Αυτοί οι δυαδικοί αριθμοί, όταν μετατρέπονται στο δεκαδικό σύστημα αριθμών, σχηματίζουν την ακόλουθη ακολουθία: 1, 2, 4, 8, 16, 32, 64, 128 και είναι δυνάμεις από το 0 έως το 7.
    Αντίστοιχα, στον κύκλο loop() υπολογίζουμε εκ νέου από το 0 στο 7 με βάση τον αριθμό των LED. δύναμη (βάση, πτυχίο)Αυξάνει το 2 στην ισχύ του μετρητή βρόχου. Οι μικροελεγκτές δεν λειτουργούν με μεγάλη ακρίβεια με αριθμούς του τύπου "double", επομένως χρησιμοποιούμε τη συνάρτηση round() για να μετατρέψουμε το αποτέλεσμα σε ακέραιο. Και μεταφέρουμε τον αριθμό που προκύπτει στον καταχωρητή μετατόπισης. Για λόγους σαφήνειας, η οθόνη σειριακής θύρας εμφανίζει τις τιμές που λήφθηκαν κατά τη διάρκεια αυτής της λειτουργίας: το ένα διατρέχει τα ψηφία - τα LED ανάβουν σε ένα κύμα.

    Εισαγωγή

    Το SPI (3-wire) είναι μια δημοφιλής διεπαφή για σειριακή ανταλλαγή δεδομένων μεταξύ τσιπ. Η διεπαφή SPI, μαζί με το I 2 C, είναι μια από τις πιο ευρέως χρησιμοποιούμενες διεπαφές για τη σύνδεση μικροκυκλωμάτων. Εφευρέθηκε αρχικά από τη Motorola και σήμερα χρησιμοποιείται σε προϊόντα πολλών κατασκευαστών. Το όνομά του είναι συντομογραφία του "Serial Peripheral Bus", το οποίο αντικατοπτρίζει τον σκοπό του - έναν δίαυλο για τη σύνδεση εξωτερικών συσκευών. Ο δίαυλος SPI είναι οργανωμένος σύμφωνα με την αρχή master-slave. Ο κύριος διαύλου είναι συνήθως ένας μικροελεγκτής, αλλά μπορεί επίσης να είναι προγραμματιζόμενος λογικός, ελεγκτής DSP ή ASIC. Οι εξωτερικές συσκευές που είναι συνδεδεμένες στην κύρια μονάδα διαύλου σχηματίζουν σκλάβους διαύλου. Ο ρόλος τους διαδραματίζεται από διάφορα είδη μικροκυκλωμάτων, περιλαμβανομένων. συσκευές αποθήκευσης (EEPROM, μνήμη Flash, SRAM), ρολόι πραγματικού χρόνου (RTC), ADC/DAC, ψηφιακά ποτενσιόμετρα, εξειδικευμένοι ελεγκτές κ.λπ.

    Το κύριο δομικό στοιχείο της διεπαφής SPI είναι ένας συμβατικός καταχωρητής μετατόπισης, του οποίου ο συγχρονισμός και τα σήματα εισόδου/εξόδου ροής bit σχηματίζουν τα σήματα διασύνδεσης. Έτσι, είναι πιο σωστό να ονομάζουμε το πρωτόκολλο SPI όχι πρωτόκολλο μεταφοράς δεδομένων, αλλά πρωτόκολλο ανταλλαγής δεδομένων μεταξύ δύο καταχωρητών μετατόπισης, καθένας από τους οποίους εκτελεί ταυτόχρονα και τη λειτουργία ενός δέκτη και ενός πομπού. Απαραίτητη προϋπόθεση για τη μετάδοση δεδομένων στο δίαυλο SPI είναι η παραγωγή ενός σήματος συγχρονισμού διαύλου. Μόνο ο κύριος του διαύλου έχει το δικαίωμα να παράγει αυτό το σήμα και η λειτουργία του slave του διαύλου εξαρτάται πλήρως από αυτό το σήμα.

    Ηλεκτρική σύνδεση

    Υπάρχουν τρεις τύποι συνδέσεων με τον δίαυλο SPI, καθένας από τους οποίους περιλαμβάνει τέσσερα σήματα (βλ. Πίνακα 1 για την κύρια και εναλλακτική ονομασία τους). Η απλούστερη σύνδεση, στην οποία εμπλέκονται μόνο δύο μικροκυκλώματα, φαίνεται στο Σχήμα 1. Εδώ, ο κύριος δίαυλος μεταδίδει δεδομένα κατά μήκος της γραμμής MOSI συγχρονισμένα με το σήμα SCLK που δημιουργείται από αυτόν και ο εξαρτημένος καταγράφει τα μεταδιδόμενα bit δεδομένων σε ορισμένες άκρες του το λαμβανόμενο σήμα συγχρονισμού. Ταυτόχρονα, ο slave στέλνει το πακέτο δεδομένων του. Το παρουσιαζόμενο κύκλωμα μπορεί να απλοποιηθεί με την εξάλειψη της γραμμής MISO εάν το εξαρτώμενο IC που χρησιμοποιείται δεν παρέχει μετάδοση δεδομένων απόκρισης ή δεν υπάρχει ανάγκη για αυτό. Η μονόδρομη μεταφορά δεδομένων μπορεί να βρεθεί σε τσιπ όπως DAC, ψηφιακά ποτενσιόμετρα, προγραμματιζόμενους ενισχυτές και προγράμματα οδήγησης. Έτσι, η εξεταζόμενη επιλογή για τη σύνδεση ενός slave IC απαιτεί 3 ή 4 γραμμές επικοινωνίας. Για να μπορεί το slave IC να λαμβάνει και να μεταδίδει δεδομένα, εκτός από το σήμα ρολογιού, η γραμμή SS πρέπει επίσης να οδηγείται χαμηλά. Διαφορετικά, το slave IC θα είναι ανενεργό. Όταν χρησιμοποιείται μόνο ένα εξωτερικό IC, μπορεί να είναι δελεαστικό να εξαλειφθεί η γραμμή SS οδηγώντας την επιλεγμένη είσοδο του βοηθητικού IC σε πολύ χαμηλά επίπεδα. Αυτή η λύση είναι εξαιρετικά ανεπιθύμητη και μπορεί να οδηγήσει σε αστοχίες ή ακόμα και σε αδυναμία μεταφοράς δεδομένων, επειδή Η είσοδος επιλογής chip χρησιμεύει για την επαναφορά του IC στην αρχική του κατάσταση και μερικές φορές εκκινεί την έξοδο του πρώτου bit δεδομένων.


    Ρύζι. 1. Η απλούστερη σύνδεση με το δίαυλο SPI

    Εάν είναι απαραίτητο να συνδέσετε πολλά μικροκυκλώματα στο δίαυλο SPI, χρησιμοποιείται είτε μια ανεξάρτητη (παράλληλη) σύνδεση (Εικ. 2) είτε μια διαδοχική (σειριακή) σύνδεση (Εικ. 3). Η ανεξάρτητη σύνδεση είναι πιο συνηθισμένη, γιατί επιτυγχάνεται όταν χρησιμοποιείτε τσιπ συμβατά με SPI. Εδώ, όλα τα σήματα, εκτός από την επιλογή μικροκυκλωμάτων, συνδέονται παράλληλα και ο κύριος διαύλου, μεταφέροντας ένα ή άλλο σήμα SS σε χαμηλή κατάσταση, καθορίζει με ποιο slave IC θα ανταλλάξει δεδομένα. Το κύριο μειονέκτημα αυτής της σύνδεσης είναι η ανάγκη για πρόσθετες γραμμές για τη διευθυνσιοδότηση υποτελών τσιπ (ο συνολικός αριθμός γραμμών επικοινωνίας είναι 3+n, όπου n είναι ο αριθμός των υποτελών τσιπ). Η εναλλαγή καταρράκτη είναι απαλλαγμένη από αυτό το μειονέκτημα, επειδή Εδώ, πολλές μάρκες σχηματίζουν έναν μεγάλο καταχωρητή μετατόπισης. Για να γίνει αυτό, η έξοδος δεδομένων μετάδοσης του ενός IC συνδέεται με την είσοδο λήψης δεδομένων του άλλου, όπως φαίνεται στο σχήμα 3. Οι είσοδοι επιλογής chip εδώ συνδέονται παράλληλα και, επομένως, ο συνολικός αριθμός των γραμμών επικοινωνίας διατηρείται ίσος έως 4. Ωστόσο, η χρήση της σύνδεσης καταρράκτη είναι δυνατή μόνο εάν η υποστήριξή της υποδεικνύεται στην τεκμηρίωση για τα τσιπ που χρησιμοποιούνται. Για να το μάθετε, είναι σημαντικό να γνωρίζετε ότι μια τέτοια σύνδεση ονομάζεται "daisy-chaining" στα αγγλικά.


    Ρύζι. 2. Ανεξάρτητη σύνδεση με το δίαυλο SPI


    Ρύζι. 3. Διαδοχική σύνδεση με το δίαυλο SPI

    Πρωτόκολλο μεταφοράς

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

    • CPOL - το αρχικό επίπεδο του σήματος συγχρονισμού (εάν CPOL=0, τότε η γραμμή συγχρονισμού πριν από την έναρξη του κύκλου μετάδοσης και μετά το τέλος της έχει χαμηλό επίπεδο (δηλαδή η πρώτη άκρη ανεβαίνει και η τελευταία πέφτει), διαφορετικά , αν CPOL=1, είναι υψηλό (δηλαδή το πρώτο μέτωπο πέφτει και το τελευταίο ανεβαίνει)).
    • CPHA - φάση συγχρονισμού. αυτή η παράμετρος καθορίζει τη σειρά με την οποία ορίζονται και ανακτώνται τα δεδομένα (εάν CPHA=0, τότε γίνεται δειγματοληψία δεδομένων στην ανερχόμενη ακμή στον κύκλο συγχρονισμού και, στη συνέχεια, ορίζονται τα δεδομένα στην πτώση, εάν CPHA=1, τότε τα δεδομένα ορίζονται να πραγματοποιηθεί στην ανερχόμενη άκρη του κύκλου του ρολογιού και η δειγματοληψία στην ακμή που πέφτει). Οι πληροφορίες για τις λειτουργίες SPI συνοψίζονται στον Πίνακα 2.

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

    Σύγκριση με λεωφορείο I 2 C

    Όπως αναφέρθηκε ήδη, ο σειριακός δίαυλος 2 συρμάτων I 2 C δεν είναι λιγότερο δημοφιλής για τη σύνδεση μικροκυκλωμάτων. Παρακάτω μπορείτε να δείτε τα πλεονεκτήματα που παρέχει το ένα ή το άλλο σειριακό λεωφορείο.

    Πλεονεκτήματα του διαύλου SPI Πλεονεκτήματα του λεωφορείου I2C
    Η εξαιρετική απλότητα του πρωτοκόλλου μετάδοσης σε φυσικό επίπεδο εξασφαλίζει υψηλή αξιοπιστία και ταχύτητα μετάδοσης. Η μέγιστη ταχύτητα του διαύλου SPI μετριέται σε δεκάδες megahertz και, ως εκ τούτου, είναι ιδανικό για ροή μεγάλων ποσοτήτων δεδομένων και χρησιμοποιείται ευρέως σε DAC/ADC υψηλής ταχύτητας, προγράμματα οδήγησης οθόνης LED και τσιπ μνήμης Ο δίαυλος I 2 C παραμένει δύο καλωδίων, ανεξάρτητα από τον αριθμό των μικροκυκλωμάτων που συνδέονται σε αυτόν.
    Όλες οι γραμμές διαύλου SPI είναι μονής κατεύθυνσης, γεγονός που απλοποιεί σημαντικά το πρόβλημα της μετατροπής στάθμης και της γαλβανικής απομόνωσης των μικροκυκλωμάτων Δυνατότητα λειτουργίας multimaster όταν είναι συνδεδεμένα πολλά κύρια τσιπ στο δίαυλο.
    Απλότητα εφαρμογής λογισμικού του πρωτοκόλλου SPI. Το πρωτόκολλο I2C είναι πιο τυποποιημένο, επομένως, ο χρήστης των τσιπ I2C προστατεύεται περισσότερο από προβλήματα ασυμβατότητας επιλεγμένων στοιχείων.

    Παράγωγα και συμβατά πρωτόκολλα

    • MICROWIRE.

      Το πρωτόκολλο MICROWIRE του National Semiconductor είναι πανομοιότυπο με το πρωτόκολλο SPI στη λειτουργία 0 (CPOL = 0, CPHA = 0).

    • Maxim 3-wire interface

      Η διαφορά μεταξύ αυτής της διεπαφής είναι ότι αντί για μετάδοση πλήρους διπλής όψης σε δύο γραμμές μονής κατεύθυνσης, εκτελεί μετάδοση μισής διπλής όψης σε μία αμφίδρομη γραμμή DQ.

    • QSPI

      Ένα πρωτόκολλο υψηλότερου επιπέδου από το SPI, που επιτρέπει την αυτοματοποιημένη μεταφορά δεδομένων χωρίς τη συμμετοχή της CPU.

    Επιπλέον, η διεπαφή SPI είναι η βάση για τη δημιουργία μιας σειράς εξειδικευμένων διεπαφών, συμπεριλαμβανομένου. Διασύνδεση εντοπισμού σφαλμάτων JTAG και διεπαφές κάρτας μνήμης Flash, συμ. SD και MMC.

    Τραπέζι 1. Ηλεκτρικά σήματα του διαύλου SPI

    Πλοίαρχος λεωφορείου Σκλάβος λεωφορείου
    Βασικός προσδιορισμός Εναλλακτικός προσδιορισμός Περιγραφή Βασικός προσδιορισμός Εναλλακτικός προσδιορισμός Περιγραφή
    MOSI DO, SDO, DOUT MOSI DI, SDI, DIN
    MISO DI, SDI, DIN Εισαγωγή σειριακών δεδομένων MISO DO, SDO, DOUT Έξοδος σειριακών δεδομένων
    SCLK DCLOCK, CLK, SCK Έξοδος συγχρονισμού δεδομένων SCLK DCLOCK, CLK, SCK Λήψη εισόδου συγχρονισμού
    SS C.S. Έξοδος Slave Select (επιλογή chip) SS C.S. Είσοδος Slave Select (επιλογή chip)


    Φόρτωση...
    Μπλουζα