Serial Peripheral Interface

De Viquipèdia
Dreceres ràpides: navegació, cerca
BusSPI : un mestre i unesclau
SPI bus : un mestre itres

El bus SPI (de l’anglès Serial Peripheral Interfície, en català interfície per a perifèrics sèrie) és un estàndard de comunicacions, utilitzat principalment per a la transferència de dades entre circuits integrats en equips electrònics. El bus d'interfície de perifèrics sèrie o bus SPI és un estàndard per a controlar qualsevol dispositiu electrònic digital que accepti un flux de bits sèrie regulat per un rellotge.

El protocol té una línia de rellotge, una línia de dades entrants, una línia de dades sortints i una línia de xip select, que activa o desactiva el mòdul de comunicacions del dispositiu amb què es desitja comunicar-se. D’aquesta manera, aquest estàndard permet multiplexar les línies del rellotge.

Molts sistemes digitals tenen perifèrics que no necessiten una velocitat de transferència de dades ràpida. Els avantatges d'un bus sèrie són que minimitzen el nombre de conductors, pins i la grandària del circuit integrat. Això redueix el cost de fabricar, muntar i provar l’electrònica. Un bus de perifèrics sèrie és l’opció més flexible quan molts tipus diferents d'aquests perifèrics estan presents. La maquinària consisteix en senyals de rellotge, data in,data out i xip select per a cada circuit integrat que ha de ser controlat. Quasi qualsevol dispositiu digital pot ser controlat amb aquesta combinació de senyals. Els dispositius es diferencien en un nombre predictible de formes. Uns llegeixen la dada quan el rellotge puja, d'altres quan el rellotge baixa. Alguns ho llegeixen en el flanc de pujada del rellotge i altres en el flanc de baixada. Escriure és, quasi sempre, en la direcció oposada de la direcció de moviment del rellotge. Alguns dispositius tenen dos rellotges. Un per a capturar o mostrar les dades i l’altre per al dispositiu intern.

Mode de funcionament[modifica | modifica el codi]

El SPI és un protocol síncron. La sincronització i la transmissió de dades entre emissor i receptor (Màster/Slave) es realitza utilitzant aquests 4 senyals:

  • SCLK (Clock): És el pols del rellotge que marca la sincronització. A cada pols d'aquest rellotge, es llegeix o s'envia un bit.
  • MOSI (Màster Output Slave Input): Sortida de dades del Màster i entrada de dades al Slave.
  • MISO (Màster Input Slave Output): Sortida de dades del Slave i entrada al Màster.
  • SS/Select: Per seleccionar un Slave, o perquè el Màster li digui al Slave que s'activi.

La cadena de bits és enviada de manera síncrona amb els polsos del rellotge, és a dir amb cada pols, el Màster envia un bit. Perquè comenci la transmissió el Màster baixa senyal SS/Select a zero, amb això el Slave s'activa i comença la transmissió, amb un pols de rellotge al mateix temps que el primer bit és llegit. Els polsos de rellotge poden estar programats de manera que la transmissió del bit es realitzi de 4 maneres diferents, a això es diu polaritat i fase de la transmissió:

  • 1. Amb el flanc de pujada sense retard.
  • 2. Amb el flanc de pujada amb retard.
  • 3. Amb el flanc de baixada sense retard.
  • 4. Amb el flanc de baixada amb retard.

Avantatges sobre altres protocols de comunicació similars[modifica | modifica el codi]

  • Comunicació Full Dúplex
  • Major velocitat de transmissió que amb I²C o SMBus
  • Protocol flexible en què es pot tindre un control absolut sobre els bits transmesos.
    • No està limitat a la transferència de blocs de 8 bits.
    • L'elecció de la grandària de la trama de bits, del seu significat i propòsit.
  • La seva implementació en maquinari és extremadament simple.
    • Consumeix menys energia que I²C o que SMBus, perquè posseïx menys circuits (incloent-hi les resistències pull-up) i aquests són més simples.
    • No cal arbitratge o mecanisme de resposta davant de fallades.
    • Els dispositius esclaus usen el rellotge que envia el mestre, no necessiten per tant el seu propi rellotge.
    • No és obligatori implementar un transceptor (emissor i receptor), un dispositiu connectat pot configurar-se perquè només envie, només reba o ambdues coses al mateix temps.
  • Usa molts menys terminals en cada xip/connector que una interfície paral·lel equivalent.
  • Com a màxim un únic senyal específic per a cada esclau (senyal SS), els altres senyals poden ser compartides.

Desavantatges[modifica | modifica el codi]

  • Consumeix més terminals en cada xip que I²C, inclús en la variant de 3 fils.
  • L'adreçament es fa per mitjà d’esbosses[Aclariment necessari] específiques (senyalització fora de banda) a diferència del que ocorre en I²C que se selecciona cada xip per mitjà d’una adreça de 7 bits que s’envia per les mateixes línies del bus.
  • No hi ha control de flux per maquinària.
  • No hi ha senyal d’assentiment. El mestre podria estar enviant informació sense que estigués connectat cap esclau i no es donaria compte de res.
  • No permet fàcilment tindre diversos mestres connectats al bus.
  • Només funciona a les distàncies curtes a diferència de, per exemple, el RS-232, el RS-485, o el Bus CA.

SPI en ATMEGA8[modifica | modifica el codi]

El SPI Màster inicialitza el cicle de comunicació quan es col·loca abaix del Selector de Sclave (SS). Màster i Slave preparen la data per a ser enviada als seus respectius registres de canvis, i el Màster genera el pols del rellotge al pin SCK per a l’intercanvi de dades. La data és sempre intercanviada des del Màster al Sclave en MasterOut-SlaveIn, MOSI, i des de Slave a Màster en MasterIn-SlaveOut, MISO. Perquè de cada paquet de dades, el Mestre deu sincronitzar a l’esclau portant a 'alt' el selector de Sclavo, SS.


Quan sigui configurat com a Màster, la interfície SPI no tindrà un control automàtic de l’esbossa SS. Aquest ha de ser manejat per l’ús del programari abans que la comunicació pugui començar, quan això és realitzat, escrivint un byte en el registre de la SPI comença el rellotge de la SPI, i la maquinària canvia els 8 bits dins del Sclave. Perquè de canviar un Byte, el rellotge del SPI per a habilitar la fi de la transmissió ( SPIF ). Si la interrupció del SPI està habilitada (SPIE) en el registre SPCR, una interrupció és requerida. El Màster podria continuar al canvi del següent byte escrivint dins del SPDR, o senyalitzant la fi del paquet i col·locant enlaire el Sclave seleccionat, s'esbossa SS. L’últim byte arribat es mantindrà en el registre Buffer per a després usar-se.

Si ho configurem com un Sclave, la interfície ISP romandrà dormint amb MISO en tres-estats, sempre que el pin SS estigui deshabilitat. En aquest estat, pel programari es podria actualitzar el contingut del registre SPDR, però les dades no seran desplaçades per l’arribada del pols del rellotge al pin SCK fins que el pin SS no siga habilitat ( '0' ). S'hauria vist com un byte completament desplaçat a la fi de la transmissió, quan SPIF s’habiliti. Si la interrupció del SPI, el SPIE en SPCR, està habilitada, una interrupció és sol·licitada. El Sclave podria continuar per a col·locar noves dades per a ser enviades a dins del SPDR abans de continuar llegint la data que va arribant. L’últim byte que entra, romandrà en el buffer per a després usar-se.

(MSTR en SPCR és seteado), l’usuari pot determinar l'adreça del pin SS.

Si el SS és configurat com a sortida, el pin és una sortida general, la qual no afecta al sistema SPI. Típicament, el pin SS s'hauria manejat[Aclariment necessari] des del Sclave.

Si és com a entrada, aquest ha de ser enviat a dalt per a assegurar l’operació SPI del Màster.

Byte SPCR[modifica | modifica el codi]

  • Bit 7 - SPIE

Habilitació d’interrupció en SPI, si el bit SPIF( SPSR ) i el SRGE són habilitats.

  • Bit 6 - SPE

SPI habilitat, ha de ser habilitat per a qualsevol operació SPI.

  • Bit 5 - DORD

Orde de dades, si és '1' el lsb ix primer. Si és '0' el MSB ix primer.

  • Bit 4 - MSTR

Selector Màster o Sclave, si és '1' és Màster, en cas contrari, Sclave. Si el pin SS és configurat com a entrada i és habilitat('0') mentre MSTR està habilitat, MSTR sàrria deshabilitat, i SPIF( en SPSR) s’habilitara.

  • Bit 3 - CPOL

Polaritat del rellotge, si és '1' SCK sàrria actiu enlaire del cantrario sàrria actiu en davall.

  • Bit 2- CPHA

Fase del rellotge.

  • Bit 1,0 - SPR1, SPR0

Selecció de la velocitat del rellotge, només funciona en mode màster.

Byte SPSR[modifica | modifica el codi]

  • Bit 7 - SPIF

Bandera d’interrupció del SPI. Quan una transferència serial és completada, la bandera SPIF és habilitada. Una interrupció és generada si SPIE(en SPCR) i SREG estan habilitats. Si SS és una entrada i està en[Aclariment necessari] habilitada('0') quan el SPI està en mode Màster, este també habilitara la bandera SPIF. SPIF és deshabilitada per maquinari quan és executada la correspodiente interrupció manualmente.Alternativamente, el bit SPIF és deshabilitat per la primera lectura del registre d’estat SPI amb SPIF actiu.

  • Bit 6 - WCOL

Bandera de col·lisió d’escriptura, és habilitat si es produïx una escriptura durant la transferència. És deshabilitat per la primera lectura del regitro d’estat SPI (SPDR).

  • Bit 0 - SPI2x

Duplicador de velocitat dels bits.

  • Byte SPDR

És un registre de lectura i escriptura emprat per a la transmissió de dades entre el registre d’arxius i el registre de canvi SPI.

Pins utilitzats per al SPI

  • SCK

És el de sortida del Màster, en el Sclavo és el rellotge d’entrada per al canal SPI, Quan el SPI és habilitat com un Sclavo, este pin és configurat com una entrada a pesar de la configuració de DDB5. Quan el SPI és habilitat com a Màster, la direcció de dades d’este pin és controlada per DDB5. Quan el pin és forçat pel SPI a ser una entrada, la pull-up pot ser controlada pel bit PORTB5.

Veja també[modifica | modifica el codi]

Enllaços externs[modifica | modifica el codi]

A Wikimedia Commons hi ha contingut multimèdia relatiu a: Serial Peripheral Interface Modifica l'enllaç a Wikidata