PDA

Επιστροφή στο Forum : I2C ή SPI επικοινωνία



VirusX2
23-10-14, 20:53
καλησπέρα στην παρέα, θα μπορούσε κάποιος να αναλύσει τις διαφορές μεταξύ των 2 πρωτοκόλλων επικοινωνίας? Κάνω μια εφαρμογή με PIC και θέλω να επικοινωνώ με ADC μνήμες και λοιπά περιφερειακά. Έχω κάνει κάποια αρχή με το i2c που πιστεύω ότι είναι πιο εύκολο αλλά θα ήθελα και την δική σας γνώμη..:lool::lool:

bchris
23-10-14, 20:59
Το I2C δεν θα ελεγα οτι ειναι πιο ευκολο, μαλλον το ιδιο με το SPI ειναι.

Η διαφορα τους ειναι στην ταχυτητα. Το SPI ειναι πολυ πιο γρηγορο (10 με 20 φορες).
Απο την αλλη, το SPI θελει 3 κοινα pins και ενα για καθε περιφερειακο, ενω το I2C θελει μονο 2.

Βασικα αν μιλας σε κατι γρηγορο, μιλα του με SPI.
Αν μιλας σε περιφερειακα που δεν σε ενδιαφερει τοσο η ταχυτητα, τοτε I2C.

VirusX2
23-10-14, 21:16
Το I2C δεν θα ελεγα οτι ειναι πιο ευκολο, μαλλον το ιδιο με το SPI ειναι.

Η διαφορα τους ειναι στην ταχυτητα. Το SPI ειναι πολυ πιο γρηγορο (10 με 20 φορες).
Απο την αλλη, το SPI θελει 3 κοινα pins και ενα για καθε περιφερειακο, ενω το I2C θελει μονο 2.

Βασικα αν μιλας σε κατι γρηγορο, μιλα του με SPI.
Αν μιλας σε περιφερειακα που δεν σε ενδιαφερει τοσο η ταχυτητα, τοτε I2C.

Θα μιλάω με A/D Converters και θέλω αρκετά μεγάλο SPS (Samples per second) οπότε προτείνετε το SPI?

Δεν γίνετε να έχω κοινό SS pin σε όλα τα slaves και να δηλώνω προγραματιστικα σε ποιο θέλω να μιλήσω..? δηλαδή να έχω ένα κοινό bus όπως στο I2C..?

bchris
24-10-14, 00:15
Απ' οσο ξερω οχι.
Πολλες συσκευες υποστηριζουν daisy chain (cascade), οπου η εξοδος του ενος, παει στο αλλο.
Για παραδειγμα το MAX6957.

VirusX2
30-11-14, 16:31
Ποιος τύπος καλωδίου ενδείκνυται για επικοινωνία μέσω SPI (το πολύ 5MHz) , για μήκος καλωδίου το πολύ 0.4 - 0.5m. Σκεφτόμουν για UTP CAT5, τι λέτε είναι εφικτό??

manolena
30-11-14, 17:21
Έχε πάντα στο μυαλό σου ένα μεγάλο μειονέκτημα του SPI: επειδή οι συσκευές-εξαρτήματά του διασυνδέονται με σειριακό τρόπο (daisy chain), αν κάποιο απο την αλυσίδα πάθει κάτι, αυτομάτως βγαίνουν εκτός λειτουργίας τα υπόλοιπα. Στο I2C δεν σε απασχολεί αυτό, απλά βγαίνει εκτός η προβληματική συσκευή ενώ όλες οι υπόλοιπες εργάζονται κανονικά.

Εκτός αυτού, χρειάζεσαι για κάθε SPI εξάρτημα και μια έξοδο slave για να το ελέγχεις...

VirusX2
30-11-14, 17:58
Δεν θα χρησημοποιησω daisy chain. Καθε slave με δικο του CS pin. Το ερωτημα αφορα στον τυπο του καλωδιου ετσι ωστε να μπορω να στειλω και βα διαβασω δεδομενα με ακριβεια κυριως κοντα στα 3 mhz, το πολυ 5mhz.

ALAMAN
30-11-14, 18:54
Το spi είναι για αποστάσεις πλακέτας, συνεπώς δεν χρειάζονται κοινα καλώδια που χρησιμοποιούμε για μεταφορά δεδομένων. Αν θες να κάνεις κάποιο πείραμα η testing χρησιμοποίησε μονόκλονα καλωδιάκια 10 - 15 εκ.

Το i2c είναι addresses oriented πρωτόκολλο που χρησιμοποιείται σε multi-node συστήματα ενω το spi είναι κ αυτο σειριακό και σύγχρονο και χρησιμοποιείται για επικοινωνία υψηλών ταχυτήτων όπως μνήμες. Και σε απλούς Μικροελεγκτές μπορείς να συνδέσεις εως 2-3 slave συσκευές.

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

VirusX2
30-11-14, 19:18
Το spi είναι για αποστάσεις πλακέτας, συνεπώς δεν χρειάζονται κοινα καλώδια που χρησιμοποιούμε για μεταφορά δεδομένων. Αν θες να κάνεις κάποιο πείραμα η testing χρησιμοποίησε μονόκλονα καλωδιάκια 10 - 15 εκ.

Δεν λεω αν χρειάζεται καλωδιο ρε παιδια, λεω οτι θελω να χρησημοποιησω καλωδιο για συνδεση master και slave που ειναι σε διαφορετικες πλακετες. Πειραματα ειναι το μονο προφανες οτι θα κανω, απλα ρωταω αν υπαρχει κατι δοκιμασμενο.