Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Manufacturing Technology >> Industriële technologie

I2C vs SPI:verschillen die u moet weten

Ontwerp je een project en is het cruciaal om te kiezen tussen I2C versus SPI? Maar weet je niet welke je moet kiezen? Zo ja, dan helpen we u beslissen welke het beste is voor uw project.

Ten eerste zijn de I2C en SPI "low-end" protocollen. Maar ze zijn gemakkelijk te gebruiken en werken perfect voor communicatie tussen chips op je PCB.

Het kiezen van het verkeerde protocol voor uw project kan echter tot ongewenste resultaten leiden. Desalniettemin zijn we hier om u te helpen het verschil tussen deze twee vergelijkbare protocollen te begrijpen.

Ben je klaar? Laten we beginnen!

Wat is een SPI-protocol?

In de jaren 80 ontwikkelde Motorola het SPI-protocol om communicatie tussen de microcontrollers van die tijd met andere randapparatuur zoals EEPROM tot stand te brengen.

EEPROM

Het SPI-protocol gebruikt dus vier signaallijnen voor communicatie tussen onderdelen. Het is echter van cruciaal belang op te merken dat deze niet de grond- en hoogspanningsleidingen omvatten. Dit zijn de vier actieve signaallijnen:

  • SS:Slave Select-lijn (bestuurd door de master-SPI)
  • MOSI:Master Out Slave In (bestuurd door de master-SPI)
  • SCLK:seriële klok (bestuurd door de master-SPI)
  • MISO:Master In Slave Out (bestuurd door het master SPI-apparaat)

In dit verband laten de vier lijnen een master-SPI (besturingsapparaat) communiceren met een slave-SPI (randapparaat).

SPI-protocolinterface

Bovendien kunt u slechts één controllerapparaat op een SPI-bus hebben. Maar er is geen limiet aan het aantal randapparatuur dat u kunt toevoegen. Het toevoegen van meer randapparatuur betekent ook het vergroten van de SS-lijnen. Daarom is hier een illustratie van hoe u drie afzonderlijke SS-lijnen kunt gebruiken om verschillende randapparatuur te bedienen.

SPI-protocolinterface met meerdere tot slaaf gemaakte mensen

Bovendien, wanneer de master-SPI met de randapparatuur wil communiceren door gegevens te verzenden of te ontvangen, trekt hij de bijbehorende SS-lijn. Bijgevolg zal de lijn hieronder zijn. De SCLK-lijn wordt dus geactiveerd en is hoog en laag op een ingestelde frequentie.

Bovendien gebruikt de master-SPI de MISO-lijn om gelijktijdig gegevens en samples te verzenden. Houd er ook rekening mee dat er slechts communicatie kan zijn tussen één randapparaat en de master-SPI tegelijk.

Wat is een I2C

Als alternatief ontwikkelde Philips Semiconductors (nu NXP Semiconductors) in 1982 het eerste I2C-protocol om de communicatie tussen chips op één PCB te systematiseren.

In tegenstelling tot zijn SCI-tegenhanger, heeft het I2C-protocol twee communicatielijnen, exclusief de grond- en hoogspanningslijnen. Deze regels omvatten:

  • SDA:seriële datalijn
  • SCL:seriële kloklijn

U kunt dus een willekeurig aantal enslaver- en agentapparaten op één bus aansluiten. Ook moet u zowel de SCL- als de SDA-lijnen als open-drain-lijnen behouden. Als gevolg hiervan hebben uw apparaten slechts één lage lijn tegelijk. Daarnaast heb je een pull-up weerstand op je leidingen nodig. Op die manier kun je je lijn weer naar boven trekken.

I2C-protocolinterface

Door het open-drain ontwerp van het I2C-protocol kun je meerdere masters op dezelfde bus gebruiken. Maar als twee controller-apparaten tegelijkertijd beginnen te communiceren, zal er een arbitrage zijn die ervoor zorgt dat een van de apparaten stopt met zenden.

Ondertussen bewaken de controllerapparaten de SDA-lijn terwijl communicatie plaatsvindt. Dus als een apparaat detecteert dat de SDA-lijn laag is tijdens het zenden, stopt het met verzenden. En hierdoor kan een ander controller-apparaat communiceren.

Ook zal het controller I2C-apparaat een START-conditie verzenden om de communicatie te starten. Bijgevolg zal de SDA-lijn laag zijn terwijl de SCL-lijn hoog blijft.

Vervolgens verzendt het controllerapparaat een 7-bits adres van de ontvanger waarnaar het wil verzenden en een leesbit (1) of schrijfbit (0). Op dit punt zal een apparaat op de bus alleen reageren als het een overeenkomend 7-bits snelheidsadres heeft door de SDA-lijn laag te maken.

Verschillen tussen I2C en SPI

Zowel de SPI als I2C zijn vergelijkbaar omdat ze beide "low-end" protocollen zijn. Bovendien missen beide protocollen de snelheid en andere functies die hun zware neven (SATA, Ethernet, USB en andere) opscheppen.

Maar als het gaat om de werkingsprincipes en functies. Laten we de verschillen tussen de twee protocollen eens nader bekijken.

USB-connector

Allereerst kun je vier verschillende modi op het SPI-protocol instellen om te bepalen hoe de uurwerken werken. En om de communicatie te laten werken, moeten de enslaver- en agentapparaten hetzelfde model gebruiken.

  1. Modus 0:gegevens gesampled op een stijgende klokflank, klok loopt inactief laag
  2. Modus 1:gegevens gesampled op dalende klokflank, klok loopt laag inactief
  3. TMode 2:data gesampled op dalende klokflank, klok loopt hoog inactief
  4. Modus 3:data gesampled op een stijgende klokflank, klok loopt hoog inactief

Bovendien kunnen SPI-gegevensoverdrachtsnelheden hoger zijn dan 10 Mbps, waardoor het perfect is voor het overbrengen van grote hoeveelheden gegevens. U kunt ook SPI-protocollen vinden op sensoren met snelle updatesnelheden, zoals LCD's en versnellingsmeters.

LCD

Als alternatief kan de I2C alleen gegevens in het pakket van één byte tegelijk verzenden. Bovendien moet het ontvangende randapparaat elke byte bevestigen met een ACK-bit. Bovendien heeft het I2C-protocol drie modi met verschillende gegevensoverdrachtsnelheden.

ACK-bit

Het standaardmodel bereikt een maximum van 100 kbps, snelle moduslimieten op 400 kbps en de hogesnelheidsmodus haalt een maximum van 3,4 Mbps. Daarom is het I2C-protocol aanzienlijk langzamer dan het SPI-protocol. Als gevolg hiervan werken I2C-protocollen het beste in temperatuursensoren en analoog-naar-digitaalomzetters.

Temperatuursensoren

I2C en SPI vergelijken

Onderstaande tabel toont verder de significante verschillen tussen de I2C en SPI:

Functie SPI I2C
Pindrive Push-pull-modus Open-drain-modus
Max. Snelheid Geen (maar je kunt 10 – 100 Mbps vinden) 100 kbps (standaardmethode)400 kbps (snelle manier)3,4 Mbps (hogesnelheidsmodus)
Multimaster Nee Ja
Signaallijnen 4 (extra apparaten voegen extra regels toe) 2
Nee. van randapparatuur Het aantal beschikbare pinnen voor SS-lijnen op de master-SPI is de enige limiet voor het aantal randapparatuur dat u kunt hebben Max. van 112 met 7-bit adressering
Flowregeling Nee Ja

SPI vs I2C-protocollen – voor- en nadelen

SPI 

Pluspunten

  • De SPI-protocollen verbruiken een kleine hoeveelheid stroom
  • Het ondersteunt ook high-speed full-duplex communicatie

Nadelen

  • Er zijn verschillende versies en aangepaste varianten die compatibiliteitsproblemen veroorzaken
  • Je hebt extra signaallijnen nodig om met meerdere randapparatuur op dezelfde bus te communiceren
  • Ondersteunt alleen korteafstandscommunicatie. U kunt geen gegevens overdragen naar apparaten op afzonderlijke borden

I2C 

Pluspunten

  • Je hebt geen extra lijnen nodig om meerdere apparaten op dezelfde bus te bedienen
  • Kan gegevens naar andere PCB's verzenden, maar met lage overdrachtssnelheden
  • Heeft een lagere ruisgevoeligheid
  • Kan gegevens over langere afstanden verzenden
  • Minder duur in gebruik dan SPI

Nadelen

  • Overdrachtssnelheden zijn lager dan SPI
  • Verbruikt meer stroom dan het SPI-protocol
  • Als één apparaat de communicatiebus niet vrijgeeft, kan het I2C-protocol blokkeren

Factoren waarmee u rekening moet houden bij het kiezen tussen SPI en I2C

Het selecteren van het beste protocol voor uw project gaat verder dan het prijskaartje. Dus, hier zijn een paar dingen die u moet overwegen voordat u uw keuze maakt:

Beperkte pinnen

Hier zijn de voor- en nadelen van zowel SPI- als I2C-protocollen:als u niet graag microcontrollers met meer dan 100 pinnen gebruikt, is dit een cruciale factor om te overwegen. In dit geval moet u kiezen voor een protocol dat minder lijnen nodig heeft voor communicatie.

Kracht

Afhankelijk van uw ontwerp wilt u misschien het stroomverbruik minimaliseren of maximaliseren. U moet er dus voor zorgen dat u een protocol kiest dat het beste bij uw verbruiksbehoeften past.

Snelheid

Als het gaat om het overbrengen van enorme hoeveelheden gegevens, is elke microseconde cruciaal. Dus, als snelheid is wat je nodig hebt, kies dan voor een protocol dat aan jouw snelheidsnormen voldoet.

PCB-formaat

Het is van vitaal belang om de grootte van uw PCB te overwegen voordat u een protocol kiest. Daardoor vergroot u uw kansen op het behalen van gewenste resultaten.

Kiezen tussen SPI en I2C

Dit zijn de kenmerken van elk protocol om u te helpen de beste beslissing te nemen voor uw ontwerp:

Functies SPI I2C
Snelheid Als uw ontwerp hogere transmissiesnelheden vereist, is het SPI-protocol de beste keuze. U kunt I2C kiezen voor ontwerpen voor apparaten met een lage snelheid
PCB-formaat Als je je geen zorgen maakt over de grootte van je PCB, kun je niet fout gaan met SPI of I2C. Als uw PCB een kleiner formaat en minder sporen heeft, overweeg dan om de I2C te kiezen
Beperkte pinnen Ga voor het SPI-protocol als je het niet erg vindt om extra communicatielijnen toe te voegen. Als je niet vertrouwd bent met veel tracks, dan is I2C een ideale keuze.
Kracht Gebruik voor apparaten met een lager stroomverbruik het SPI-protocol Gebruik voor apparaten met een hoger stroomverbruik het I2C-protocol

UART begrijpen

UART's zijn fysieke circuits in een geïntegreerde of microcontroller die seriële communicatie tot stand brengen tussen apparaten in embedded systemen.

En als je te maken hebt met UART-communicatie, is er altijd directe communicatie tussen de UART-zender en de UART-ontvanger.

UART versus I2C versus SPI

In tegenstelling tot andere communicatieprotocollen zoals SPI en I2C, is de UART puur fysiek. Bovendien gebruikt het geen master/slave-paradigma om te communiceren. In plaats daarvan gebruikt de microcontroller twee UART-apparaten om gegevens te verzenden en te ontvangen. Bovendien hebt u slechts twee draden nodig voor UART-communicatie. En de kabels helpen bij het verzenden van gegevens van de Tx-pin van de zender naar de Rx-pin van de ontvanger.

UART-protocolinterface

Afronding

In werkelijkheid worden de SPI- en I2C-protocollen in verschillende toepassingen gebruikt. Soms heb je apparaten met SPI- en I2C-interfaces op één chip. U hoeft dus niet tussen de twee te kiezen.

Als u echter tussen de twee protocollen moet kiezen, is de SPI beter voor projecten die hogere overdrachtssnelheden nodig hebben. Aan de andere kant, als je microcontroller beperkte pinnen heeft, zou het I2C-protocol beter werken.

Heeft u vragen? Voel je vrij om contact met ons op te nemen. We helpen je graag verder.


Industriële technologie

  1. 7 React-bibliotheken die je moet kennen
  2. Wat u moet weten over het testen van transformatorolie
  3. Waarom u een lijnreactor zou moeten gebruiken?
  4. 7 CNC-parameters die u moet kennen
  5. Wat u moet weten over slijpschijfbeschermers
  6. 5 dingen die u moet weten over microtools
  7. Wat is TAA-conformiteit? 5 dingen die u moet weten
  8. De 9 machine learning-applicaties die u moet kennen
  9. Koppeling geconfronteerd:alles wat u moet weten
  10. Basisvoorwaarden voor waterstralen die u moet kennen
  11. Wat is kartelen? Dit is wat u moet weten