Förståelse om SPI-kommunikationsprotokollet i inbäddad

Prova Vårt Instrument För Att Eliminera Problem





Kommunikation spelar en viktig roll i utformningen av det inbyggda systemet. Utan att gå till protokollen är den perifera expansionen mycket komplex och högeffektiv. De inbyggda system använder i princip seriekommunikation för att kommunicera med kringutrustning.
Det finns många seriella kommunikationsprotokoll, till exempel UART, CAN, USB, I2C och SPI-kommunikation. Serien kommunikationsprotokoll egenskaper inkluderar hög hastighet och låg dataförlust. Det gör design på systemnivå enklare och säkerställer tillförlitlig dataöverföring.

Seriell datakommunikation

Elektriskt kodad information kallas en seriell data som överförs bit för bit från en enhet till en annan genom en uppsättning protokoll. I det inbäddade systemet mottas eller överförs styrsensorer och ställdon till styrenheterna, såsom mikrokontroller, så att data analyseras och bearbetas ytterligare. Eftersom mikrokontrollerna arbetar med digitala data, kommer informationen från analoga sensorer , ställdon och andra kringutrustning omvandlas till ett byte (8-bitars) binärt ord innan det sänds till mikrokontrollern.




Seriell datakommunikation

Seriell datakommunikation

Denna seriella data överförs med avseende på viss klockpuls. Dataöverföringshastigheten kallas baudhastigheten. Antalet databitar som kan överföras per sekund kallas som överföringshastighet. Antag att data är 12 byte, så konverteras varje byte till 8 bitar så att den totala storleken på dataöverföringen är cirka 96 bit / sek för datan (12 byte * 8 bitar per byte). Om data kan överföras en gång per sekund är baudhastigheterna cirka 96 bitar / sek eller 96 baud. Skärmen uppdaterar datavärdet en gång per sekund.



Grunderna för seriellt perifert gränssnitt

SPI-kommunikationen står för seriellt perifert gränssnitt kommunikationsprotokoll , som utvecklades av Motorola 1972. SPI-gränssnittet är tillgängligt på populära kommunikationsstyrenheter som PIC, AVR och ARM-styrenhet , etc. Den har synkron seriell kommunikationsdatalänk som fungerar i full duplex, vilket innebär att datasignalerna fortsätter på båda riktningarna samtidigt.

SPI-protokollet består av fyra ledningar som MISO, MOSI, CLK, SS som används för master / slavkommunikation. Befälhavaren är en mikrokontroller, och slavarna är andra kringutrustning som sensorer, GSM-modem och GPS-modem, etc. De flera slavarna är kopplade till mastern via en SPI-seriell buss. SPI-protokollet stöder inte Multi-master-kommunikation och det används på kort avstånd inom ett kretskort.

Grunderna för seriellt perifert gränssnitt

Grunderna för seriellt perifert gränssnitt

SPI-linjer

MISO (Master in Slave out) : MISO-linjen är konfigurerad som en ingång i en huvudenhet och som en utgång i en slavenhet.


MOSI (Master out Slave in) : MOSI är en linje konfigurerad som en utgång i en huvudenhet och som en ingång i en slavenhet där den används för att synkronisera datarörelsen.

SCK (seriell klocka) : Denna signal drivs alltid av mastern för synkron dataöverföring mellan mastern och slaven. Den används för att synkronisera datarörelsen både in och ut genom MOSI- och MISO-linjerna.

SS (Slave Select) och CS (Chip Select) : Denna signal drivs av mastern för att välja enskilda slavar / kringutrustning. Det är en ingångslinje som används för att välja slavenheter.

Master Slave Communication med SPI Serial Bus

Single Master och Single Slave SPI Implementation

Här initieras alltid kommunikationen av mästaren. Huvudanordningen konfigurerar först klockfrekvensen som är mindre än eller lika med den maximala frekvensen som slavenheten stöder. Befälhavaren väljer sedan önskad slav för kommunikation genom att dra chipvalslinjen (SS) för den specifika slavenheten för att gå lågt och aktivt. Master genererar informationen till MOSI-linjen som bär data från master till slave.

Master Slave Communication

Master Slave Communication

Single Master och Multiple Slave Implementations

Detta är en multipel slavkonfiguration med en master och flera slavar genom SPI-seriellbussen. De flera slavarna är anslutna parallellt till masterenheten med SPI-seriellbussen. Här är alla klocklinjer och dataledningar anslutna tillsammans, men chipvalstiftet från varje slavenhet måste anslutas till en separat slavvalstift på maserenheten.

Enstaka mästare och flera slavar

Enstaka mästare och flera slavar

I denna process utförs styrningen av varje slavanordning av en chipvalslinje (SS). Chip-valstiftet blir lågt för att aktivera slavenheten och går högt för att inaktivera slavenheten.

Dataöverföringen organiseras med användning av skiftregisterna på både master- och slavenheter med en given ordstorlek på cirka 8-bitars respektive 16-bitars. Båda enheterna är anslutna i en ringform så att maser-skiftregistrets värde överförs via MOSI-linjen, och sedan skiftar slaven data i sitt skiftregister. Uppgifterna flyttas vanligtvis ut med MSB först och flyttar nya LSB till samma register.

Dataöverföring mellan Master och Slave

Dataöverföring mellan Master och Slave

Betydelsen av klockpolaritet och fas

I allmänhet utförs överföring och mottagning av data med avseende på klockpulser vid stigande kanter och fallande kanter. De avancerade mikrokontrollerna har två frekvenser: intern frekvens och extern frekvens. SPI-kringutrustning kan läggas till genom att dela MISO-, MOSI- och SCLK-linjerna. Kringutrustningen har olika typer eller hastigheter som ADC, DAC, etc. Så vi måste ändra SPCR-inställningarna mellan överföringarna till olika kringutrustning.

SPCR-register

SPCR-register

SPI-bussen arbetar i ett av de fyra olika överföringslägena med en klockpolaritet (CPOL) och klockfas (CPHA) som definierar ett klockformat som ska användas. Klockans polaritet och fasklockhastigheterna beror på vilken kringutrustning du försöker kommunicera med mastern.
CPHA = 0, CPOL = 0: Den första biten börjar som en lägre signal - data samplas vid stigande kant och data ändras vid fallande kant.

CPHA = 0, CPOL = 1: Den första biten börjar med en lägre klocka - data samplas vid fallande kant och data ändras vid stigande kant.

CPHA = 1, CPOL = 0: Den första biten börjar med en högre klocka - data samplas vid fallande kant och data ändras vid stigande kant.

CPHA = 1, CPOL = 1: Den första biten börjar med en högre klocka - data samplas vid stigande kant och data ändras vid fallande kant.

SPI-busstider

SPI-busstider

SPI-kommunikationsprotokoll

Många mikrokontroller har inbyggda SPI-protokoll som hanterar all sändande och mottagande data. Någon av datalägeoperationerna (R / W) styrs av ett kontroll- och statusregister i SPI-protokollet. Här kan du observera EEPROM-gränssnittet till PIC16f877a mikrokontroller via SPI-protokollet.

Här är 25LC104 EEROM ett 131072 bytesminne där mikrokontrollern överför två byte data till EEROM-minne via en SPI seriell buss. Programmet för denna gränssnitt ges nedan.

Master to Slave-kommunikation via SPI seriell buss

Master to Slave-kommunikation via SPI seriell buss

#omfatta
Sbit SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
Utgår initialisera EEROM ()
Ogiltigt huvud ()
{
SSPSPAT = 0x00
SSPCON = 0x31
SMP = 0
SCK = 0
SDO = 0
SS = 1
EE_adress = 0x00
SPI_write (0x80)
SPI_write (1234)
SS = 0
}

Fördelar med SPI-protokollet

  • Det är en fullständig duplexkommunikation.
  • Det är höghastighetsdatabuss 10 MHz.
  • Det är inte begränsat till 8 bitar vid överföring
  • Hårdvarugränssnitt är enkelt via SPI.
  • Slave använder en huvudklocka och behöver inte värdefulla oscillatorer.

Det här handlar om SPI-kommunikation och dess gränssnitt med en mikrokontroller . Vi uppskattar ditt stora intresse och uppmärksamhet för den här artikeln och förväntar oss därför din syn på denna artikel. Vidare kan du fråga oss genom att kommentera nedan för all gränssnittskodning och hjälp.

Fotokrediter: