domingo, 30 de agosto de 2009

Cadeia SPI na porta de Joystick

O barramento SPI é um padrão muito usado em eletrônica. Neste barramento podem ser ligados vários tipos de dispositivos, de conversores A/D a cartões de memória.

Um dispositivo SPI utiliza 4 sinais, sendo 1 de saída (DOUT) e três de entrada (DIN, SCK e CS). Vários dispositivos podem ser ligados formando um barramento, desde que se utilizem sinais de CS diferentes, um para cada dispositivo, o que se torna inconveniente, caso se tenham muitos dispositivos pendurados no barramento.

Uma maneira de contornar a necessidade de tantos pinos é utilizar um sinal de seleção que 'passeia' de dispositivo a dispositivo (como na brincadeira de passar o anel). Esta solução foi adotada nos 'microdrives' do ZX Spectrum.

Para o MSX, que possui apenas 3 pinos de saída (pinos 6, 7 e 8), foi necessário pensar um pouco mais, para poder criar a 'cadeia' (ou corrente) de dispositivos, mas a solução foi simples já que os sinais necessários a fazer o 'chip select' passear têm a mesma natureza do sinal de dados, ou seja um 'clock' e uma linha de dados. Um pino de saída foi utilizado para selecionar entre conectar os outros dois aos sinais DIN e SCK ou ao CS_ e CS_SCK.

Os circuitos abaixo contém a interface adaptadora e um 'hub' com 8 terminais para dispositivos.





A foto abaixo mostra a cadeia SPI com 4 periféricos já integrados na 'cadeia' SPI pendurada na porta de joystick:

- Entrada digital com 8 bits - CD4021
- Saída digital com 8 bits - HC595
- ADC com 8 canais - MCP3008
- Digipot com 256 passos - MCP41010