Forståelse om SPI-kommunikationsprotokollen i Embedded

Prøv Vores Instrument Til At Fjerne Problemer





Kommunikation spiller en vigtig rolle i designet af det integrerede system. Uden at gå til protokollerne er den perifere udvidelse meget kompleks og højeffektivt. Det integreret system bruger dybest set seriel kommunikation til at kommunikere med perifert udstyr.
Der er mange serielle kommunikationsprotokoller, såsom UART, CAN, USB, I2C og SPI-kommunikation. Serien kommunikationsprotokol karakteristika inkluderer høj hastighed og lavt datatab. Det gør design på systemniveau lettere og sikrer pålidelig dataoverførsel.

Seriel datakommunikation

Elektrisk kodet information kaldes en seriel data, der transmitteres bit for bit fra en enhed til en anden gennem et sæt protokoller. I det integrerede system modtages eller transmitteres kontrolsensorer og aktuatordata til styreenhederne, såsom mikrokontrollere, så dataene analyseres og behandles yderligere. Da mikrocontrollerne arbejder med de digitale data, bliver oplysningerne fra analoge sensorer , konverteres aktuatorer og andet perifert udstyr til et byte (8-bit) binært ord, før det transmitteres til mikrokontrolleren.




Seriel datakommunikation

Seriel datakommunikation

Disse serielle data transmitteres med hensyn til en bestemt urpuls. Datatransmissionshastigheden kaldes baudhastigheden. Antallet af databits, der kan transmitteres pr. Sekund, kaldes baudrate. Antag, at dataene er på 12 byte, så konverteres hver byte til 8bits, så den samlede størrelse af dataoverførslen er ca. 96bits / sek af dataene (12bytes * 8 bits pr. Byte). Hvis dataene kan transmitteres en gang hvert sekund, er baudhastighederne omkring 96bits / sek eller 96 baud. Skærmen opdaterer dataværdien en gang hvert sekund.



Grundlæggende om serielt perifert interface

SPI-kommunikationen står for seriel perifer interface kommunikationsprotokol , som blev udviklet af Motorola i 1972. SPI-interface er tilgængelig på populære kommunikationskontrollere som PIC, AVR og ARM-controller osv. Den har synkron seriel kommunikationsdatalink, der fungerer i fuld duplex, hvilket betyder, at datasignalerne fortsætter begge retninger samtidigt.

SPI-protokol består af fire ledninger som MISO, MOSI, CLK, SS, der bruges til master / slave-kommunikation. Skibsføreren er en mikrokontroller, og slaverne er andre perifere enheder som sensorer, GSM-modem og GPS-modem osv. De flere slaver er grænseflade til master gennem en SPI seriel bus. SPI-protokollen understøtter ikke Multi-master-kommunikation, og den bruges til en kort afstand inden i et printkort.

Grundlæggende om serielt perifert interface

Grundlæggende om serielt perifert interface

SPI linjer

MISO (Master in Slave out) : MISO-linjen er konfigureret som en input i en masterenhed og som en output i en slaveenhed.


MOSI (Master ud Slave ind) : MOSI er en linje konfigureret som en output i en masterenhed og som en input i en slaveenhed, hvor den bruges til at synkronisere databevægelsen.

SCK (serielt ur) : Dette signal drives altid af masteren til synkron dataoverførsel mellem master og slave. Det bruges til at synkronisere dataflytningen både ind og ud gennem MOSI- og MISO-linjerne.

SS (Slave Select) og CS (Chip Select) : Dette signal styres af masteren til at vælge individuelle slaver / perifere enheder. Det er en inputlinje, der bruges til at vælge slaveenhederne.

Master Slave Communication med SPI Serial Bus

Single Master og Single Slave SPI Implementation

Her initieres kommunikationen altid af mesteren. Hovedapparatet konfigurerer først urfrekvensen, som er mindre end eller lig med den maksimale frekvens, som slaveenheden understøtter. Masteren vælger derefter den ønskede slave til kommunikation ved at trække chipvalgslinien (SS) for den pågældende slaveenhed for at gå i lav tilstand og aktiv. Master genererer informationen videre til MOSI-linjen, der bærer dataene fra master til slave.

Master slave kommunikation

Master slave kommunikation

Single Master og Multiple Slave Implementeringer

Dette er en konfiguration med flere slave med en master og flere slaver gennem SPI seriel bus. De flere slaver er forbundet parallelt med masterenheden med SPI seriel bus. Her er alle urlinjerne og datalinjerne forbundet, men chipvalgstiften fra hver slaveenhed skal forbindes til en separat slavevalgtap på maserenheden.

Single Master og flere slaver

Single Master og flere slaver

I denne proces udføres styringen af ​​hver slaveindretning af en chipvalgslinje (SS). Chipvalgstiften går lavt for at aktivere slaveenheden og går højt for at deaktivere slaveenheden.

Dataoverførslen er organiseret ved anvendelse af skiftregistrene på både master- og slaveindretninger med en given ordstørrelse på henholdsvis ca. 8-bit og 16-bit. Begge enheder er forbundet i en ringform, så maser shift-registerværdien transmitteres gennem MOSI-linjen, og derefter skifter slaven data i sit shift-register. Dataene flyttes normalt ud med MSB først og skifter ny LSB til det samme register.

Dataoverførsel mellem Master og Slave

Dataoverførsel mellem Master og Slave

Betydningen af ​​urets polaritet og fase

Generelt udføres transmission og modtagelse af data med hensyn til urimpulser ved stigende kanter og faldende kanter. De avancerede mikrokontroller har to frekvenser: intern frekvens og ekstern frekvens. SPI-perifere enheder kunne tilføjes ved at dele MISO-, MOSI- og SCLK-linjerne. Eksterne enheder er af forskellige typer eller hastigheder som ADC, DAC osv. Så vi er nødt til at ændre SPCR-indstillingerne mellem overførslerne til forskellige eksterne enheder.

SPCR-register

SPCR-register

SPI-bussen fungerer i en af ​​de 4 forskellige overførselsfunktioner med en urpolaritet (CPOL) og urfase (CPHA), der definerer et urformat, der skal bruges. Urets polaritet og faseklokkens hastigheder afhænger af, hvilken perifer enhed du prøver at kommunikere med masteren.
CPHA = 0, CPOL = 0: Den første bit starter som et lavere signal - dataene samples ved stigende kant, og dataene ændres ved faldende kant.

CPHA = 0, CPOL = 1: Den første bit starter med et lavere ur - data samples ved faldende kant, og dataene ændres ved stigende kant.

CPHA = 1, CPOL = 0: Den første bit starter med et højere ur - data samples ved faldende kant, og dataene ændres ved stigende kant.

CPHA = 1, CPOL = 1: Den første bit starter med et højere ur - data samples ved stigende kant, og dataene ændres ved faldende kant.

SPI-bustider

SPI-bustider

SPI-kommunikationsprotokol

Mange mikrokontrollere har indbyggede SPI-protokoller, der håndterer alle sendende og modtagende data. Enhver af datatilstandsfunktionerne (R / W) styres af et kontrol- og statusregister i SPI-protokollen. Her kan du observere EEPROM-grænsefladen til PIC16f877a-mikrocontrolleren gennem SPI-protokollen.

Her er 25LC104 EEROM en 131072 bytehukommelse, hvor mikrocontrolleren overfører to byte data til EEROM hukommelse gennem en SPI seriel bus. Programmet til denne grænseflade er angivet nedenfor.

Master til slave kommunikation via SPI seriel bus

Master til slave kommunikation via SPI seriel bus

#omfatte
Sbit SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
Annullerer initialisering af 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
}

Fordele ved SPI-protokol

  • Det er en fuld duplex kommunikation.
  • Det er højhastigheds databus 10 MHz.
  • Det er ikke begrænset til 8bits under overførsel
  • Hardware-interface er enkel via SPI.
  • Slave bruger et hovedur og har ikke brug for dyrebare oscillatorer.

Dette handler om SPI-kommunikation og dens grænseflade med en mikrokontroller . Vi sætter pris på din store interesse og opmærksomhed for denne artikel og forventer derfor dit synspunkt på denne artikel. Desuden kan du bede os om at kommentere nedenfor for enhver interface-kodning og hjælp.

Fotokreditter: