Inzicht in het SPI-communicatieprotocol in Embedded

Probeer Ons Instrument Voor Het Oplossen Van Problemen





Communicatie speelt een essentiële rol bij het ontwerpen van embedded systemen. Zonder naar de protocollen te gaan, is de uitbreiding van randapparatuur zeer complex en kost het veel energie. De ingebouwd systeem gebruikt in principe seriële communicatie om met de randapparatuur te communiceren.
Er zijn veel seriële communicatieprotocollen, zoals UART-, CAN-, USB-, I2C- en SPI-communicatie. De serie communicatieprotocollen kenmerken zijn onder meer hoge snelheid en laag gegevensverlies. Het maakt het ontwerpen op systeemniveau eenvoudiger en zorgt voor een betrouwbare gegevensoverdracht.

Seriële datacommunicatie

Elektrisch gecodeerde informatie wordt seriële data genoemd, die bit voor bit van het ene apparaat naar het andere wordt verzonden via een reeks protocollen. In het embedded systeem worden gegevens van besturingssensoren en actuatoren ontvangen of verzonden naar de besturingsapparaten zoals microcontrollers, zodat de gegevens verder worden geanalyseerd en verwerkt. Omdat de microcontrollers met de digitale gegevens werken, is de informatie van de analoge sensoren , worden actuatoren en andere randapparatuur omgezet in één byte (8-bits) binair woord voordat ze naar de microcontroller worden verzonden.




Seriële datacommunicatie

Seriële datacommunicatie

Deze seriële gegevens worden verzonden met betrekking tot een bepaalde klokpuls. De datatransmissiesnelheid wordt de baudrate genoemd. Het aantal databits dat per seconde kan worden verzonden, wordt baudrate genoemd. Stel dat de gegevens 12 bytes zijn, dan wordt elke byte omgezet in 8 bits, zodat de totale grootte van de gegevensoverdracht ongeveer 96 bits / sec van de gegevens is (12 bytes * 8 bits per byte). Als de gegevens eenmaal per seconde kunnen worden verzonden, zijn de baudrates ongeveer 96 bits / sec of 96 baud. Het weergavescherm ververst de gegevenswaarde eenmaal per seconde.



Basisprincipes van de seriële randapparatuur

De SPI-communicatie staat voor seriële perifere interface communicatie protocol , ontwikkeld door Motorola in 1972. SPI-interface is beschikbaar op populaire communicatiecontrollers zoals PIC, AVR en ARM-controller , enz. Het heeft een synchrone seriële communicatiedatakoppeling die in full duplex werkt, wat betekent dat de datasignalen in beide richtingen tegelijkertijd worden overgedragen.

Het SPI-protocol bestaat uit vier draden zoals MISO, MOSI, CLK, SS die worden gebruikt voor master / slave-communicatie. De master is een microcontroller en de slaves zijn andere randapparatuur zoals sensoren, GSM-modem en GPS-modem, enz. De meerdere slaves zijn via een SPI-seriële bus met de master verbonden. Het SPI-protocol ondersteunt de Multi-master-communicatie niet en wordt gebruikt voor een korte afstand binnen een printplaat.

Basisprincipes van de seriële randapparatuur

Basisprincipes van de seriële randapparatuur

SPI-lijnen

MISO (Master in Slave uit) : De MISO-lijn is geconfigureerd als input in een master-apparaat en als output in een slave-apparaat.


MOSI (Master uit Slave in) : De MOSI is een lijn die is geconfigureerd als een output in een master-apparaat en als een input in een slave-apparaat waarin het wordt gebruikt om de gegevensbeweging te synchroniseren.

SCK (seriële klok) : Dit signaal wordt altijd aangestuurd door de master voor synchrone gegevensoverdracht tussen de master en de slave. Het wordt gebruikt om de gegevensbeweging zowel naar binnen als naar buiten te synchroniseren via de MOSI- en MISO-lijnen.

SS (Slave Select) en CS (Chip Select) : Dit signaal wordt gestuurd door de master om individuele slaves / randapparatuur te selecteren. Het is een invoerregel die wordt gebruikt om de slaveapparaten te selecteren.

Master Slave-communicatie met SPI-seriële bus

Single Master en Single Slave SPI-implementatie

Hier wordt de communicatie altijd geïnitieerd door de master. Het masterapparaat configureert eerst de klokfrequentie die kleiner is dan of gelijk is aan de maximale frequentie die het slaafapparaat ondersteunt. De meester selecteert dan de gewenste slaaf voor communicatie door de chipselectielijn (SS) van dat specifieke slaafapparaat te slepen om laag en actief te worden. De master genereert de informatie op de MOSI-lijn die de gegevens van master naar slave vervoert.

Master Slave-communicatie

Master Slave-communicatie

Implementaties met één master en meerdere slaven

Dit is een configuratie met meerdere slaven met één master en meerdere slaves via de SPI-seriële bus. De meerdere slaves zijn parallel verbonden met het master-apparaat met de SPI seriële bus. Hier zijn alle kloklijnen en datalijnen met elkaar verbonden, maar de chipselectiepen van elk slaafapparaat moet worden verbonden met een aparte slaafselectiepen op het maserapparaat.

Enkele master en meerdere slaves

Enkele master en meerdere slaves

In dit proces wordt de besturing van elk slaafapparaat uitgevoerd door een chipselectielijn (SS). De chipselectie-pin wordt laag om het slave-apparaat te activeren en gaat hoog om het slave-apparaat uit te schakelen.

De gegevensoverdracht wordt georganiseerd door gebruik te maken van de schuifregisters op zowel master- als slave-apparaten met een gegeven woordgrootte van respectievelijk ongeveer 8 bit en 16 bit. Beide apparaten zijn verbonden in een ringvorm, zodat de maser-schuifregisterwaarde wordt verzonden via de MOSI-lijn, en vervolgens verschuift de slaaf gegevens in zijn schuifregister. De gegevens worden meestal eerst met de MSB weggeschoven en nieuwe LSB naar hetzelfde register verschoven.

Gegevensoverdracht tussen master en slave

Gegevensoverdracht tussen master en slave

Betekenis van klokpolariteit en fase

In het algemeen wordt de verzending en ontvangst van gegevens uitgevoerd met betrekking tot de klokpulsen bij stijgende flanken en dalende flanken. De geavanceerde microcontrollers hebben twee frequenties: interne frequentie en externe frequentie. SPI-randapparatuur kan worden toegevoegd door de MISO-, MOSI- en SCLK-lijnen te delen. De randapparatuur is van verschillende types of snelheden zoals ADC, DAC, enz. We moeten dus de SPCR-instellingen wijzigen tussen de overdrachten naar verschillende randapparatuur.

SPCR-register

SPCR-register

De SPI-bus werkt in een van de 4 verschillende overdrachtsmodi met een klokpolariteit (CPOL) en klokfase (CPHA) die een te gebruiken klokformaat definiëren. De klokpolariteit en de fasekloksnelheden zijn afhankelijk van welk randapparaat u probeert te communiceren met de master.
CPHA = 0, CPOL = 0: de eerste bit begint als een lager signaal - de gegevens worden bemonsterd bij stijgende flank en de gegevens veranderen bij dalende flank.

CPHA = 0, CPOL = 1: de eerste bit begint met een lagere klok - de gegevens worden bemonsterd bij een dalende flank en de gegevens veranderen bij een stijgende flank.

CPHA = 1, CPOL = 0: de eerste bit begint met een hogere klok - de gegevens worden bemonsterd bij een dalende flank en de gegevens veranderen bij een stijgende flank.

CPHA = 1, CPOL = 1: De eerste bit begint met een hogere klok - de gegevens worden bemonsterd bij stijgende flank en de gegevens veranderen bij dalende flank.

SPI Bus-timings

SPI Bus-timings

SPI-communicatieprotocol

Veel microcontrollers hebben ingebouwde SPI-protocollen die alle verzendende en ontvangende gegevens verwerken. Elk van de datamodusbewerkingen (R / W) wordt bestuurd door een controle- en statusregisters van het SPI-protocol. Hier kunt u de EEPROM-interface naar de PIC16f877a-microcontroller bekijken via het SPI-protocol.

Hier is 25LC104 EEROM een geheugen van 131072 bytes waarin de microcontroller twee bytes aan gegevens naar de EEROM-geheugen via een SPI-seriële bus. Het programma voor deze interfacing wordt hieronder gegeven.

Master to Slave-communicatie via SPI-seriële bus

Master to Slave-communicatie via SPI-seriële bus

#inclusief
Sbit SS = RC ^ 2
Sbit SCK = RC ^ 3
Sbit SDI = RC ^ 4
Sbit SDO = RC ^ 5
Void initialiseren EEROM ()
Void main ()

SSPSPAT = 0x00
SSPCON = 0x31
SMP = 0
SCK = 0
SDO = 0
SS = 1
EE_adres = 0x00
SPI_write (0x80)
SPI_write (1234)
SS = 0

Voordelen van SPI-protocol

  • Het is een full duplex communicatie.
  • Het is een snelle databus van 10 MHz.
  • Het is niet beperkt tot 8 bits tijdens het overzetten
  • Hardware-interfacing is eenvoudig via SPI.
  • Slave gebruikt een hoofdklok en heeft geen kostbare oscillatoren nodig.

Dit gaat allemaal over de SPI-communicatie en zijn interfacing met een microcontroller ​We stellen uw grote interesse en aandacht voor dit artikel op prijs en anticiperen daarom op uw mening over dit artikel. Bovendien kunt u ons voor eventuele interfacing-codering en assistentie vragen door hieronder te reageren.

Fotocredits: