Naar inhoud springen

Serial Peripheral Interface

Uit Wikipedia, de vrije encyclopedie
Dit is een oude versie van deze pagina, bewerkt door 2a02:a459:56e3:1:1549:3dd:417b:64ab (overleg) op 20 jan 2019 om 20:28. (Start communicatie)
Deze versie kan sterk verschillen van de huidige versie van deze pagina.
De opmaak van dit artikel is nog niet in overeenstemming met de conventies van Wikipedia. Het artikel bevat namelijk weinig tot geen interne links. Men wordt uitgenodigd deze pagina aan te passen.

SPI-bus

Serial Peripheral Interface (SPI) is een synchrone seriële datalink tussen ten minste twee mediums. Er is in eerste instantie sprake van één master en één slave. De communicatie tussen de master en de slave gebeurt te allen tijde in full duplex. De start van de communicatie gebeurt door de masterchip. Het is mogelijk om meerdere slaves te hebben, maar ze moeten dan ieder een aparte chipselect hebben. Er zijn altijd vier verbindingen voor communicatie nodig. Daarom spreken we van een four-wire serial bus.

Benaming

  • SCLK : seriële clock: wordt geleverd door de master.
  • MOSI : Master output slave input: op deze lijn wordt de data verzonden die de output van de master en de input van de slave is.
  • MISO: Master input slave output: de data van de slave wordt hierover naar de master gestuurd.
  • SS: Slave select: Deze lijn wordt actief laag aangestuurd. De lijn voor de geselecteerde slave zal laag zijn. Wanneer de communicatie met de slave gedaan is, zal de lijn een logische 1 krijgen.

Configuratie

Meestal heeft iedere slave een eigen slave select-lijn, maar in sommige gevallen kunnen verschillende slaves in een keten (daisy-chain) zijn opgenomen, waarbij de MISO-poort van iedere slave is verbonden met de MOSI-poort van de eerstvolgende slave in de keten. De MISO-poort van de laatste slave in de keten is verbonden met de MISO-poort van de master. Alle Slave select-poorten in de keten zijn met elkaar verbonden. Deze configuratie maakt individuele adressering overbodig, maar gaat ten koste van de datasnelheid.

Start communicatie

De communicatie start met het selecteren van een juiste kloksnelheid. Deze snelheid kan behoorlijk variëren van 1 MHz tot 100 MHz. De snelheid moet binnen het bereik van de master en de slave liggen. Het is mogelijk dat de master tegen grotere snelheid kan werken dan de slave maar het omgekeerde kan ook.

Vervolgens zal op de juiste slave select lijn een logische 0 gestuurd worden. Als er maar 1 chip (slave) is kan men deze lijn permanent op 0 houden. Het is mogelijk dat de chip pas werkt wanneer hij een edge (van hoog naar laag) detecteert. In dit geval mogen we de lijn niet op een logische 0 houden. Deze slave select hangt zeer nauw samen met het sturen van de klokpulsen. Sommige chips hebben een wachtperiode nodig vooraleer je de klokpulsen naar de slave mag sturen zoals een dac of adc. Vervolgens zal er per klokcyclus een volledig duplex signaal doorgestuurd worden. Namelijk zowel de master als de slave zullen een bit doorsturen. De master zal over de MOSI lijn sturen en de slave zal van deze lijn aflezen. Het omgekeerde zal op de MISO lijn gebeuren. De slave zal data sturen en de master zal van deze lijn aflezen. In vele gevallen wordt er gebruikgemaakt van shift registers. Meestal is de registergrootte 8 bits en wordt de least significant bit eerst gestuurd maar dit is niet altijd het geval. Bij de MS5607-02BA01 Micro Altimeter Module, met LCP cap wordt een register van 24 bits gebruikt en de meest opmerkelijke bit wordt als eerste gestuurd. Wanneer het complete register is doorgestuurd wordt de data verwerkt. Dit kan inhouden dat de data weggeschreven wordt naar het geheugen. Wanneer er meer data verstuurd moet worden zal de data ingeladen worden en beginnen we weer vanaf het begin.

Voordelen

  • Full duplex
  • Snellere communicatie dan bijvoorbeeld de I²C-bus
  • Geen limiet aan woordgrootte
  • Eenvoudige hardware
  • Adressering niet nodig
  • Geen aparte oscillator voor slave
  • Laag energieverbruik
  • Geen transceivers nodig
  • Slechts vier pinnen nodig
  • Eén pin per slave extra boven 1
  • Kan zeer hoge kloksnelheden aan

Nadelen

  • Meer pinnen nodig dan bij I²C
  • Geen controle door de slave (master kan de klok vertragen, slave niet)
  • Geen controle of er iets verbonden is
  • Maximaal één master
  • Geen foutcontrole
  • Gevoelig voor ruis

Referenties

Zie de categorie Serial Peripheral Interface van Wikimedia Commons voor mediabestanden over dit onderwerp.