Forståelse om SPI-kommunikasjonsprotokollen i innebygd

Prøv Instrumentet Vårt For Å Eliminere Problemer





Kommunikasjon spiller en viktig rolle i det innebygde systemdesignet. Uten å gå til protokollene er den perifere utvidelsen svært kompleks og kraftig. De integrert system bruker i utgangspunktet seriell kommunikasjon for å kommunisere med eksterne enheter.
Det er mange serielle kommunikasjonsprotokoller, som UART, CAN, USB, I2C og SPI-kommunikasjon. Serien kommunikasjonsprotokoll egenskaper inkluderer høy hastighet og lavt datatap. Det gjør design på systemnivå enklere, og sikrer pålitelig dataoverføring.

Seriell datakommunikasjon

Elektrisk kodet informasjon kalles en seriell data, som overføres bit for bit fra en enhet til en annen gjennom et sett med protokoller. I det innebygde systemet mottas eller overføres kontrollsensorer og aktuatordata til kontrollerenhetene, slik som mikrokontrollere, slik at dataene blir videre analysert og behandlet. Når mikrokontrollerne jobber med de digitale dataene, blir informasjonen fra analoge sensorer aktiveres aktuatorer og annet periferiutstyr til ett byte (8-biters) binært ord før det overføres til mikrokontrolleren.




Seriell datakommunikasjon

Seriell datakommunikasjon

Disse serielle dataene overføres med hensyn til en viss klokkepuls. Dataoverføringshastigheten blir referert til som baudrate. Antall databiter som kan overføres per sekund kalles baudrate. Anta at dataene er på 12 byte, så konverteres hver byte til 8biter slik at den totale størrelsen på dataoverføringen er omtrent 96bits / sek av dataene (12byte * 8 bits per byte). Hvis dataene kan overføres en gang hvert sekund, er overføringshastighetene rundt 96 bit / sek eller 96 baud. Skjermbildet oppdaterer dataverdien en gang hvert sekund.



Grunnleggende om serielt perifert grensesnitt

SPI-kommunikasjonen står for serielt perifert grensesnitt kommunikasjonsprotokoll , som ble utviklet av Motorola i 1972. SPI-grensesnitt er tilgjengelig på populære kommunikasjonskontrollere som PIC, AVR og ARM-kontroller osv. Den har synkron seriell kommunikasjonsdatalink som fungerer i full dupleks, noe som betyr at datasignalene bærer begge retninger samtidig.

SPI-protokollen består av fire ledninger som MISO, MOSI, CLK, SS brukt til master / slave-kommunikasjon. Mesteren er en mikrokontroller, og slaverne er andre eksterne enheter som sensorer, GSM-modem og GPS-modem, etc. Flere slaver er grensesnittet til master via en SPI seriell buss. SPI-protokollen støtter ikke Multi-master-kommunikasjon, og den brukes på kort avstand i et kretskort.

Grunnleggende om serielt perifert grensesnitt

Grunnleggende om serielt perifert grensesnitt

SPI-linjer

MISO (Master in Slave out) : MISO-linjen er konfigurert som en inngang i en masterenhet og som en utgang i en slaveenhet.


MOSI (Master ut Slave in) : MOSI er en linje konfigurert som en utgang i en masterenhet og som en inngang i en slaveenhet der den brukes til å synkronisere databevegelsen.

SCK (seriell klokke) : Dette signalet drives alltid av masteren for synkron dataoverføring mellom master og slave. Den brukes til å synkronisere databevegelsen både inn og ut gjennom MOSI- og MISO-linjene.

SS (Slave Select) og CS (Chip Select) : Dette signalet drives av mesteren for å velge individuelle slaver / perifere enheter. Det er en inngangslinje som brukes til å velge slaveenhetene.

Master Slave Communication med SPI Serial Bus

Single Master og Single Slave SPI Implementation

Her initieres alltid kommunikasjonen av mesteren. Hovedenheten konfigurerer først klokkefrekvensen som er mindre enn eller lik den maksimale frekvensen som slaveenheten støtter. Master velger deretter ønsket slave for kommunikasjon ved å dra chipvalglinjen (SS) til den aktuelle slaveenheten for å gå i lav tilstand og aktiv. Mesteren genererer informasjonen videre til MOSI-linjen som fører dataene fra master til slave.

Master Slave Communication

Master Slave Communication

Single Master og Multiple Slave Implementations

Dette er en flere slave-konfigurasjon med en master og flere slaver gjennom SPI seriell buss. Flere slaver er koblet parallelt til masterenheten med SPI seriell buss. Her er alle klokkelinjene og datalinjene koblet sammen, men chip-pin fra hver slaveenhet må være koblet til en separat slave select-pin på maserenheten.

Enkel mester og flere slaver

Enkel mester og flere slaver

I denne prosessen utføres kontrollen av hver slaveenhet ved hjelp av en chip select line (SS). Chip select pin går lavt for å aktivere slaveenheten og går høyt for å deaktivere slaveenheten.

Dataoverføringen er organisert ved å bruke skiftregistrene på både master- og slaveinnretninger med en gitt ordstørrelse på henholdsvis ca. 8-bit og 16-bit. Begge enhetene er koblet i en ringform, slik at verdien til maserskiftregisteret overføres gjennom MOSI-linjen, og deretter skifter slaven data i skiftregisteret. Dataene flyttes vanligvis ut med MSB først og skifter ny LSB til samme register.

Dataoverføring mellom Master og Slave

Dataoverføring mellom Master og Slave

Betydningen av klokkepolaritet og fase

Generelt utføres overføring og mottak av data med hensyn til klokkepulsene ved stigende kanter og fallende kanter. De avanserte mikrokontrollerne har to frekvenser: intern frekvens og ekstern frekvens. SPI-periferiutstyr kan legges til ved å dele MISO-, MOSI- og SCLK-linjene. Periferiutstyr er av forskjellige typer eller hastigheter som ADC, DAC, etc. Så vi må endre SPCR-innstillingene mellom overføringene til forskjellige eksterne enheter.

SPCR-register

SPCR-register

SPI-bussen opererer i en av de 4 forskjellige overføringsmodusene med klokkepolaritet (CPOL) og klokkefase (CPHA) som definerer et klokkeformat som skal brukes. Klokkepolariteten og faseklokkehastighetene avhenger av hvilken perifer enhet du prøver å kommunisere med mesteren.
CPHA = 0, CPOL = 0: Den første biten begynner som et lavere signal - dataene samples ved stigende kant og dataene endres ved fallende kant.

CPHA = 0, CPOL = 1: Den første biten begynner med en lavere klokke - dataene samples ved fallende kant og dataene endres ved stigende kant.

CPHA = 1, CPOL = 0: Den første biten begynner med en høyere klokke - dataene samples ved fallende kant og dataene endres ved stigende kant.

CPHA = 1, CPOL = 1: Den første biten starter med en høyere klokke - dataene samples ved stigende kant, og dataene endres ved fallende kant.

SPI-busstider

SPI-busstider

SPI kommunikasjonsprotokoll

Mange mikrokontrollere har innebygde SPI-protokoller som håndterer all sending og mottak av data. Enhver av datamodusoperasjonene (R / W) styres av et kontroll- og statusregister for SPI-protokollen. Her kan du observere EEPROM-grensesnittet til PIC16f877a mikrokontroller gjennom SPI-protokollen.

Her er 25LC104 EEROM et 131072 byte-minne der mikrokontrolleren overfører to byte med data til EEROM-minne gjennom en SPI seriell buss. Programmet for denne grensesnittet er gitt nedenfor.

Master to Slave kommunikasjon gjennom SPI seriell buss

Master to Slave kommunikasjon gjennom SPI seriell buss

#inkludere
Sbit SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
Annullerer initialisering av EEROM ()
Ugyldig hoved ()
{
SSPSPAT = 0x00
SSPCON = 0x31
SMP = 0
SCK = 0
SDO = 0
SS = 1
EE_adress = 0x00
SPI_write (0x80)
SPI_write (1234)
SS = 0
}

Fordeler med SPI-protokoll

  • Det er en full dupleks kommunikasjon.
  • Det er høyhastighets databuss 10 MHz.
  • Det er ikke begrenset til 8bits under overføring
  • Maskinvaregrensesnitt er enkelt gjennom SPI.
  • Slave bruker en hovedklokke og trenger ikke dyrebare oscillatorer.

Dette handler om SPI-kommunikasjon og dens grensesnitt med en mikrokontroller . Vi setter pris på din store interesse og oppmerksomhet for denne artikkelen og forventer derfor ditt syn på denne artikkelen. Videre, for enhver grensesnittkoding og hjelp, kan du spørre oss ved å kommentere nedenfor.

Fotokreditter: