Protocolo de Comunicação SPI (Serial Peripheral Interface)
Por: rooneyoliveira • 13/6/2015 • Relatório de pesquisa • 2.055 Palavras (9 Páginas) • 475 Visualizações
Protocolo de comunicação SPI (Serial Peripheral Interface)
O protocolo SPI (serial peripheral interface) é um método de comunicação série síncrona desenvolvido pela Motorola. Devido a simplicidade e popularidade do barramento, muitos outros fabricantes adotaram o padrão ao longo dos anos. Destinado a interligar diversos dispositivos com elevado débito de dados, ou seja, que requeiram elevadas velocidades de comunicação, utilizado para interconectar dispositivos ou chips de tal forma que estes troquem informações entre si.
Inicialmente, seu propósito era ser um protocolo de comunicação entre periféricos (câmeras, impressoras, scanners, etc.) e o computador, por exemplo.
Contudo, este nicho de aplicação, foi largamente tomado por uma outra tecnologia (a USB - universal serial bus). Mesmo assim, o SPI é ainda amplamente utilizado para troca de dados entre chips ou CI´s (circuitos integrados) sendo um importante método de comunicação para sistemas digitais de alguma complexidade que envolvam principalmente, conversores AD e DA, memórias EEPROM, flash, real time clocks (RTC), sensores com interface de comunicação, cartões de memória, controladores LCD, unidades de transmissão, recepção de dados UART, encontrados também em telefones celulares, PDAs e outros dispositivos móveis que comunicam dados entre a CPU, teclado, tela e chips de memória.
O SPI adota um esquema de comunicação do tipo mestre/escravo e pode ser executado em modo "full duplex" (cada componente executando o SPI pode receber e transmitir dados ao mesmo tempo). Vale destacar que mesmo sendo um protocolo largamente difundido, ele não é padronizado por nenhuma entidade e por isto pode haver variações de uso dependendo do fabricante que emprega este protocolo. Em relação ao seu grande "rival", o protocolo I²C (Inter-Integrated Circuit), o SPI tem a vantagem de se comunicar com maior rapidez e quando temos vários dispositivos intercomunicando-se em um barramento compartilhado, o SPI não requer um esquema de endereçamento de dispositivos tão elaborado quanto o I²C.
Princípios básicos do protocolo SPI
O SPI requer 4 fios que saem do dispositivo mestre, como sugere o nome, controla a comunicação. Através do controle do clock, ele decide quando o dado é enviado dele ou é recebido por ele. Dentro de um mesmo ciclo de clock, uma comunicação full duplex pode ser realizada com o mestre que pode enviar dados para um escravo e receber dados dele ou de outro dispositivo simultaneamente. Usando o sinal SS, o mestre pode escolher com qual dos escravos se comunicar. De uma forma semelhante ao protocolo I²C, o protocolo SPI também se caracteriza por ter uma implementação do tipo master-slave, ou seja, no barramento deverá existir sempre um dispositivo que coordene e inicie as transferências de dados com os dispositivos escravos.
A comunicação
A comunicação entre dispositivos num bus SPI utiliza até quatro condutores diferentes representados na tabela abaixo:
Linha | Nome | Descrição |
SCLK | Serial clock | É o clock gerado pelo mestre (os escravos apenas leem este sinal) utilizado para fazer a sincronização dos dados. |
MOSI | Master output, slave input ou data output | É o pino reservado para enviar dados seja o chip mestre ou o escravo |
MISO | Master input, slave output ou data input | É o pino reservado para receber dados seja o chip mestre ou escravo |
SS | Slave select ou select device ou chip select | Geralmente indica qual dispositivo escravo tem permissão para enviar/receber dados no barramento. Este fio é opcional em um sistema com um único escravo |
Tabela 1 – Representação dos dispositivos de ligação do SPI
Há outros nomes que são utilizados muitas vezes:
- SCK Relógio
- SDI, DI, SI NA Dados Serial
- SDO, DO, dados de forma serial OUT
- NCS, CS, o NSS, SS ETS
No caso de a convenção de nomenclatura SDI / SDO, SDO do mestre deve ser conectado ao escravo SDI e vice-versa. Para evitar confusão é recomendado usar os MISO, MOSI - nomes que evitam a ambiguidade.
Assim sendo, a seleção do dispositivo escravo envolvido na comunicação não é feita por endereço, tal como no protocolo I²C, mas sim através de uma linha dedicada de chip select para cada dispositivo.
Comunicação Half-Duplex e Full-Duplex
O protocolo de comunicação SPI tem a característica de permitir comunicações em full-duplex, dado que existem linhas dedicadas para a transmissão e para a recepção, permitindo assim a transmissão e recepção de dados simultaneamente. Quando é necessário aguardar um dado ser transmitido para outro ser recebido (ou vice-versa) damos o nome de half-duplex.
As velocidades de comunicação num barramento SPI são, por definição, velocidades elevadas, podendo ser utilizadas frequências de relógio até 70 MHz (taxa de transferência de 70 Mbps). Contrariamente ao protocolo I²C, o protocolo SPI não define modos standard de comunicação e/ou velocidades; assim sendo, o fator limitativo para a velocidade de comunicação é a velocidade máxima suportada pelo dispositivo escravo utilizado.
O dispositivo
Um dos princípios de um dispositivo SPI é o Shift-Register. Esse tipo de dispositivo faz a conversão de um registrador paralelo para sinais seriais de acordo com clock. Cada borda recebida no terminal de clock do dispositivo significa um bit transferido. Da mesma forma esse tipo de dispositivo é capaz de receber dados vindos de maneira serial e convertê-los para um valor em um registrador paralelo.
[pic 1]
Figura 5 - Exemplo do comportamento de um registrador.
O SPI não apenas é capaz de fazer essa conversão serial/paralelo, como também possui o gerador de clock, o controle para a troca do frame e o slave-select. Dessa forma, tornando ele um dispositivo de comunicação completo. Na figura abaixo podemos observar como ele se dispõe.
Forma de onda
Por padrão uma das características mais interessantes do protocolo SPI reside na possibilidade de configuração da polaridade e fase do sinal de relógio, que define a forma como os dados são interpretados e amostrados no barramento, flexibilizando assim a especificação da comunicação entre o mestre e os dispositivos escravos. Estas configurações, denominadas por CPOL (Clock Polarity) e CPHA (Clock Phase), definem respectivamente o valor lógico de base para a linha de relógio e a ordem de amostragem e transmissão dos dados em função das transições na linha de relógio.
...