Prof. Heitor Silvério Lopes
2017
Interfaces padronizadas de
comunicação serial
Departamento de Informática
Sistemas Microcontrolados
Motivação: paralelo X serial
Interfaces paralelas consomem muitos
recursos:
Barrramentos
Maior número de pinos físicos Maior área de PCI
Interfaces seriais
Grande evolução tecnológica
Altas velocidades de comunicação
Padronização de protocolos de hw e sw As mais utilizadas: I2C, SPI, 1-wire
Barramento I
2
C
I
2C (Inter-Integrated Circuit) é um
barramento de comunicação que foi
desenvolvido pela Philips em 1980
Outros fabricantes de CIs que utilizam I2C: Xicor, ST Microelectronics, Infineon
Technologies, NXD, Intel, Texas Instruments, Maxim, Atmel, Analog Devices
Velocidades de operação:
Low-speed mode: DC-10 kbps Standard: 100 kbps
Fast mode: 400 kbps
Fast mode plus: 1 Mbps
High-speed mode: 3,4 Mbps
O I
2C utiliza apenas
dois
fios (saídas com
Barramento I
2
C
Pinos de comunicação:
Serial Data
(SDA) e
Serial Clock
(SCL)
Ambos devem ter
pull-up
de 2K2
Topologias de conexão
Master-Slave
Protocolo de comunicação
O master começa a comunicação enviando:
Um start bit (transição descendente de SDA com SCL=1) O endereço de 7-bits do slave (MSbit primeiro)
Um bit identificando escrita ou leitura
O slave responde com um bit ACK (acknowledge).
Para escrita:
O master envia bytes de dados (escreve no slave) intercalados por bits
ACK do slave
Para leitura:
O master recebe bytes de dados (lê do slave) intercalando bits ACK do
master, exceto após o último byte recebido.
Para finalizar a comunicação o master pode enviar:
Um stop bit (transição ascendente de SDA com SCL=1) Um novo start bit (para recomeçar outra transferência)
Temporização
Leitura do
slave
:
Aplicações
Conversor USB-I2C
Alimentação pela USB
Modo master somente (conectar
ao PC)
Baseado no uC FTDI FT232R Pinos: Gnd, Reset, SCL, SDA, Vcc
http://www.zagrosrobotics.com/shop/item.aspx?itemid=694 Sensor ultrassônico SRF08 Alimentação 12 mA Frequência: 40 kHz Alcance: 3cm-6m Pinos, Gnd, SCL, SDA, Vcc
Aplicações
Sensor de temperatura LM75A
Faixa de medição: -55..125ºC Resolução de 11 bits
Sensor digital de pressão
BMP180 Faixa: 300...1100hPa (+9000m...-500m) Alimentação: 1,8...3,6V Consumo: 5mA Mede temperatura
Interface SPI
Serial Peripheral Interface Bus ou SPI bus
É um barramento padronizado de comunicação
serial síncrona criado pela Motorola.
Opera em
full-duplex
Os dispositivos funcionam como
master/slave
O master inicia a comunicação
Múltiplos slaves são permitidos no barramento Os slaves são selecionados por um chip select
individual
Vantagens e Desvantagens
Vantagens:
Comunicação full-duplex
Velocidade mais alta do que I2C, de 1 a 70 MHz
Flexibilidade de protocolo para transferência de bits (qualquer
tamanho de mensagens)
Interfaceamento muito simples
Não usa pull-ups e gasta menos corrente Os slaves utilizam o clock do master
Não é necessário o uso de transceivers
Usa muito menos pinos de interface do que barramentos paralelos
sendo um único por dispositivo
Desvantagens:
Requer mais pinos (3-4) do que I2C
O endereçamento não é feito pelo canal de comunicação e, sim via
pino específico
Não há controle de fluxo via hardware
Os slaves não fazem acknowledge da mensagem
Trabalha com distâncias muito pequenas (quando comparado com
Interface SPI
Especificação dos sinais lógicos:
SCLK — Serial Clock (gerado pelo master)
MOSI/SIMO — Master Output, Slave Input (gerado pelo master) MISO/SOMI — Master Input, Slave Output (gerado pelo slave) SS — Slave Select (ativo baixo, gerado pelo master)
Também são utilizados os seguintes nomes para os sinais:
SCK — Serial Clock (gerado pelo master) SDI, DI, SI — Serial Data In
SDO, DO, SO — Serial Data Out
nCS, CS, nSS, STE — Chip Select, Slave Transmit Enable
Observar que SDI/SDO (DI/DO, SI/SO) requer que o SDO do
master seja conectado ao SDI do slave e vice-versa
Alguns dispositivos usam um só pino para MOSI/MISO: SI/SO master MISO
Modos de funcionamento
Paralelo: Um master Slaves independentes Barramento comum Seleção individual Daisy-chain: Um master Slaves conectados Barramento em cadeia Seleção coletivaTransmissão de dados
O
master
inicia a comunicação selecionando o
slave
A cada pulso de
clock
do
master
, um bit é enviado
pelo MOSI e um bit é recebido pelo MISO.
O MSbit sempre vai primeiro
Qualquer quantidade de bits pode ser
enviada/recebida
Dois parâmetros definem as bordas do sinal de
clock onde os dados serão amostrados:
clock
polarity
(CPOL) and
clock phase
(CPHA), dando 4
possibilidades, correspondendo aos modos de
funcionamento da SPI
Temporização
CPOL=0
CPHA=0, dados são lidos na borda de subida e mudam na borda de descida. CPHA=1, o inverso
CPOL=1
CPHA=0, dados são lidos na borda de descida e mudam na borda de subida. CPHA=1, o inverso
Aplicações
Microprocessadores:
ARM, AVR, MSP430, C8051Fxxx (Silabs), etc...
Interface JTAG
Sensores de temperatura (DS1620, LM74) e de pressão Conversores A/D (AD7715), controlador de Display
touchscreen (ADS7846 ), potenciômetros digitais (AD8402), Real-time clocks (DS1305)
Dispositivos de comunicação padrão: Ethernet, USB,
USART, CAN
Memórias: flash de alta densidade (AT45D011),
E2PROM (93C46)
Cartões MMC (SDMB-32) e SD card Algumas FPGAs e EPLDs
Microwire
Microwire é um predecessor do SPI
Caiu em desuso mas ainda é utilizado em dispositivos
da National Semiconductors
Só funciona em half duplex
Frequências de clock de 2 a 20 MHz
Alguns dispositivos suportam modo 3-wire, mas a
1-wire
Desenvolvido pela Dallas Semiconductor Provê alimentação, sinalização e
transmissão de dados por um único fio (mais ground)
Conceitualmente é semelhante a I2C Tem baixa velocidade e curto alcance Cada dispositivo 1-wire tem um código
interno único de 64 bits.
Muito útil para identificação e segurança,
Aplicações
DS18B20
: termômetro digital de resolução
programável (9-12bits)
MAX31820: sensor de temperatura ambiente
de -55
oC a 125
oC de 9-12 bits
DS24L65: autenticador de chave simétrica
bidirecional SHA-256
DS2433: 4Kbits EEPROM
DS9481R-3C7: USB-1-Wire/iButton adapter:
Interface SPI no AT89C5131
SPCON SPSTA MOSI MISO SCK SS SPDAT pinos registradoresRegistrador SPCON (
0C3h)
Serial Peripheral CONtrol
SPEN: Serial Peripheral Enable (=1), habilitação SPI SSDIS: \SS disable
MSTR: =0 modo slave, =1 modo master
CPOL: polaridade do clock, =0 SCK=0 em idle
CPHA: =0 dados amostrados quando SCK sai de idle SPR2 SPEN SSDIS MSTR CPOL CPHA SPR1 SPR0 SPCON
Geração de
baud-rate
para SCK
Registrador SPCON
SPR0, SPR1, SPR2: define a baud rate
SPR2 SPEN SSDIS MSTR CPOL CPHA SPR1 SPR0 SPCON
Registrador SPSTA (0C4h)
Serial Peripheral STAtus
SPIF: =0 transferindo dados, =1 transferência completa WCOL: =0 sem colisão, =1 colisão detectada
SSERR: =1 erro, =0 quando SPEN é resetado MODF: =1 erro no uso de \SS, =0 ok
SPIF WCOL SSERR MODF - - - -
Registrador SPDAT (0C5h)
Serial Peripheral DATa register
Buffer de escrita e leitura: R7..R0 receive data bits OBS: Não confundir com os registradores R7..R0
R7 R6 R5 R4 R3 R2 R1 R0
Interrupções do SPI
Registrador IEN1 (0B1h)
EUSB: habilita interrupção da USB
ESPI: habilita interrupção da SPI
ETWI: habilita interrupção da TWI
EKB: habilita interupção do KB
OBS: Registrador IE = IEN0 e
Registrador IP = IPL0
- EUSB - - - ESPI ETWI EKB
Interrupções do SPI
Registradores IPL1 (0B2h) e IPH1 (0B3h)
PUSB(L/H): prioridade baixa/alta da USB
PSPI(L/H): prioridade baixa/alta da SPI
PTWI(L/H): prioridade baixa/alta da TWI
PKB(L/H): prioridade baixa/alta da KB
- PUSBL - - - PSPIL PTWIL PEKBL
IPL1
- PUSBH - - - PSPIH PTWIH PEKBH
Interrupções do SPI