oriolrius.cat

Des del 2000 compartiendo sobre…

Tag: spi

SPI – Serial Peripheral Interface

Reading time: 3 – 4 minutes

Quan parlava de GPIO vaig parlar d’aquest protocol capaç de corre sobre ports d’aquest tipus. Doncs bé aquí en teniu una petita definició del que fa i com funciona aquest protocol.Un lloc on podem trobar sovint busos SPI són PDAs i en telèfons mòbils.

Definició

El bus SPI és del tipus serie i sincron, usa 4 cables i s’usa en molts microprocessadors de periferics. Els ports amb suport SPI suporten un ample de banda mitja/baix (1 megabaud) entre les seves CPUs i els altres dispositius que hi poden haver connectats al bus.

Com funciona

El bus SPI és relativament simple d’implementar per dispositius externs de poca velocitat i no ens calen gaire cables per establir la comunicació. L’interface d’aquest bus la va definir Motorola a l’estàndard de microcontroladors MC68HCxx. Usa un rellotge per marcar el sincronisme de la línia de dades tan d’entrada com de sortida del microcontrolador i la informació es mou en blocs de 8 bits.

El bus SPI usa una inteficie master/slave, com és normal en comunicacions serie síncrones és el master el que marca el rellotge. Un fet interessant en aquest tipus de busos és que podem rebre i enviar informació dels dispositius de forma simultanea, per tant es tracta d’un protocol full-duplex.

Una mica més endintre

Les senyals que usa el bus són:

  • SLCK serial clock, sempre controlada pel master
  • MISO master-in slave-out data
  • MOSI master-out slave-in data
spi.gif

En una aplicació normal haurem de connectar la soritda de SCLK del microcontrolador a la entrada SLCK del convertidor. La MISO al pin DOUT del convertidor, la MOSI al pin DIN. Cada IC (circuit integrat) del bus SPI té una senyal CS (chip-select), cal activar la senyal per tal d’habilitar el dispositiu en el bus. Per tal de fer això podem usar qualsevol de les línies de sortida estàndard del microcontrolador. Cal però que pensem que si tenim n ICs connectats al bus, caldràn n senyals per activar els ICs. A més si compartime la senyal de rellotge i les línies de dades haurem d’habilitar la senyal de CS corresponent en cada cas.

Valoració

Com podeu veure el disseny del bus i el prtocol d’ús són molt senzills. Tan que si fem servir massa dispositius connectats a la mateixa línia de dades la cosa es fa una mica pesada de tractar. Malgrat això per moltíssimes aplicacions és una bona idea usar-lo.

Exemple d’ús

La gent de maxim tenen un document tècnic (local) molt bo on en poques ralles ens explique com comunicar un termometre digital, concretament el DS1620, només amb 3 cables a través d’un bus SPI. L’esquema del sistema és força senzill i us dona una idea de la simplicitat que suposa connectar aquest sensor de temperatura al bus SPI.

Fonts

GPIO – General Porpuse Input/Output

Reading time: 2 – 2 minutes

Aquest acrònim s’acostuma a usar en dispostius incrustats, els dispositius GPIO ens facilitat ports d’entrada i sortida (I/O) que es poden configurar indiferenment com a ports d’entrada o de sortida. Sobre aquests ports podem fer correr protocols de BUS, com per exemple I²C, SPI and SMBus. Sovint el fet d’usar xips GPIO és una solució més econòmica que l’ús de micro-controladors.

Com que aquesta explicació queda molt generècia, el millor és parlar d’un exemple ben senzill de perquè serveix un GPIO en un dispositu embedded. El Linksys WRT54G per exemple, té un GPIO que no usa tots els seus PINs. Per tant, és un dispositiu que tots tenim a l’abast i amb el que a través d’un linux podem començar a jugar amb el GPIO. A comesfa.org hi ha un artícle titulat: Connexió d’un relé a un Linksys WRT54G on s’usa aquest GPIO del que us parlava per connectar-hi un relé a través del qual podem encendre i apagar dispositus.

gpio.jpg

Un petit trick que sovint podem fer amb els pins del GPIO és connectar-hi directament un LED, sovint si configurem el pin com a sortida i connectem l’altre pota del LED la posem a massa n’hi ha prou per fer encendre i apagar el LED quan volguem. De totes formes si no voleu sucarrimar el LED, us recomano mirar amb el tester quina tensió dona el pin en estat activat, ja que mai se sap què hi pot haver. Si mireu l’article anterior que us he dit de comesfa, veureu un tros de codi en C que mostra fins a quin punt serà de senzill controlar que el LED s’ensengui o s’apagui.