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) un estàndard de comunicacions, utilitzat principalment per a la transferència d’informació 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 quasi qualsevol electrònica digital que accepte un flux de bits sèrie regulat per un rellotge

Inclou una línia de rellotge, dada entrant, dada ixent i un pin de xip select, que connecta o desconnecta l’operació del dispositiu amb què unisc desitja comunicar-se. D’aquesta manera, aquest estàndard permet multiplexar les línies de rellotge.

Molts sistemes digitals tenen perifèrics que necessiten existir però no ser ràpids. Els avantatges d’un bus sèrie és que minimitza el nombre de conductors, pins i la grandària del circuit integrat. Açò reduïx 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 de perifèrics sèrie estan presents. El maquinari consistix 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 esta combinació de senyals. Els dispositius es diferencien en un nombre predicible de formes. Uns lligen la dada quan el rellotge puja altres quan el rellotge baixa. Alguns ho lligen 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.

Avantatges[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
    • elecció de la grandària de la trama de bits, del seu significat i propòsit
  • la seua implementació en maquinari és extremadament simple
    • consumix menys energia que I²C o que SMBus, perquè posseïx menys circuits (incloent-hi les resistències pull-up) i estos 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 ambdós 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
  • el direccionament es fa per mitjà d’esbosses específiques (senyalització fora de banda) a diferència del que ocorre en I²C que se selecciona cada xip per mitjà d’una direcció de 7 bits que s’envia per les mateixes línies del bus
  • no hi ha control de flux per maquinari
  • no hi ha senyal d’assentiment. El mestre podria estar enviant informació sense que estiguera connectat cap esclau i no es donaria compte de res
  • no permet fàcilment tindre diversos mestres connectats al bus
  • només funciona en les distàncies curtes a diferència de, per exemple, RS-232, RS-485, o Bus CA

SPI en ATMEGA8[modifica | modifica el codi]

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


Quan siga configurat com a Màster, la interfície SPI no tindrà un control automàtic de l’esbossa SS. Este ha de se ser manejat per l’ús de programari abans que la comunicació puga empesar, quan açò és realitzat, escrivint un byte en el registre de la SPI comença el rellotge de la SPI, i el maquinari canvia els 8 bits dins del Sclavo. DesPerquè de canviar un Byte, el rellotge del SPI per a, habilitant el fi de la transmissió ( SPIF ). Si la interrupció del SPI està habilitat (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 senyalitzar el fi del paquet col·locant enlaire el Sclavo seleccionat, esbossa SS. L’ultime byte arribat es mantindrà en el registre Buffer per a després usar-se.

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

(MSTR en SPCR és seteado), l’usuari pot determinar la direcció del pin SS.

Si SS és configurat com a eixida, el pin és una eixida general la qual no afecta el sistema SPI. Tipicamente , el pin SS sàrria em manejat des del Sclavo.

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

Byte SPCR ===

  • 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 Sclavo, si és '1' és Màster, en cas contrari Sclavo. 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 ===

  • 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 bit.

  • Byte SPDR

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

Pines usats per al SPI

  • SCK

És el d’eixida 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