Comparativa de Protocols de Comunicació: RS-232, SPI, I2C, USB
RS-232
Configurat a 115.200 bauds.
Característiques
- Cables: 3 cables: RX (recepció), TX (transmissió) i GND (massa).
- Càlcul de temps: Cada byte (caràcter) necessita, com a mínim, 1 bit d'inici + 8 bits de dades + 1 bit de parada (10 bits en total). Per a 1.500 bytes, caldrà intercanviar 10 * 1.500 = 15.000 bits. El temps de transmissió és de 15.000 bits / 115.200 bps = 0,130 s.
Avantatges
- Sobrecàrrega mínima del protocol.
- Comunicació full-duplex.
- Hardware simple.
- Ambdós sistemes poden iniciar la comunicació i transmetre simultàniament.
- Permet la comunicació a gran distància.
Inconvenients
- Comunicació punt a punt, no està orientada a una estructura de tipus bus.
- Velocitat baixa (perquè el receptor i l'emissor es puguin entendre).
- No té detecció d'errors.
SPI
CLK a 1,5 Mbauds.
Característiques
- Cables: 4 cables: MOSI o SDO (Master Output Slave Input o Serial Data Output), MISO o SDI (Master Input Slave Output o Serial Data Input), SCLK (Serial Clock) i GND (massa).
- Càlcul de temps: S'envia únicament la informació, per tant: 8 bits * 1.500 = 12.000 bits. El temps de transmissió és de 12.000 bits / 1,5 Mbps = 8 ms.
Avantatges
- Sense sobrecàrrega deguda al protocol.
- Hardware molt simple.
- Ràpid.
Inconvenients
- Sistema master-slave on el màster sempre és el mateix sistema; per tant, la transmissió mai no podrà ser iniciada per l'slave.
- Comunicació a distància reduïda, habitualment dins del mateix circuit.
- No té detecció d'errors.
I2C
Configurat a 100 kbauds.
Característiques
- Cables: 3 cables: SDA (Serial Data), SCL (Serial Clock) i GND (massa).
- Càlcul de temps: Per a la transmissió cal: 1 bit d'inici + 7 bits d'adreça + 1 bit (R/W) + ACK + (8 bits de dades + 1 bit ACK) * 1.500 + 1 bit de parada = 13.511 bits. El temps de transmissió és de 13.511 bits / 100 kbps = 0,135 s.
Avantatges
- Té detecció d'errors (ACK/NACK).
- Ambdós sistemes poden iniciar l'intercanvi d'informació prenent el rol de MÀSTER al bus.
- Permet la comunicació en bus.
Inconvenients
- Sobrecàrrega del protocol.
- Comunicació half-duplex (o llegeixes o escrius).
- Relativament lent.
- Orientat a comunicacions a curta distància.
USB
1,5 Mbauds (USB 1.1 Low Speed).
Característiques
- Cables: 4 cables: D+ i D- (parell diferencial per a les dades), Vcc (alimentació) i GND (massa).
- Càlcul de temps: En el protocol USB, per transmetre informació cal enviar els paquets següents (exemple de transmissió del Màster a l'Slave): Paquet IN (35 bits) + Paquet DATA0 (amb 1.203 bytes, 9.659 bits) + Paquet ACK (19 bits) + Paquet DATA1 (amb 297 bytes, 2.411 bits) + Paquet ACK (19 bits) = 12.143 bits. El temps de transmissió és de 12.143 bits / 1,5 Mbps = 8,09 ms.
Avantatges
- Estructura en bus.
- Detecció d'errors.
- Un dels sistemes serà el Màster i l'altre l'Slave, que hauria de demanar transaccions d'informació de tipus INTERRUPT.
- Distància màxima de 5 metres.
Inconvenients
- Sobrecàrrega del protocol (poca).
- Comunicació half-duplex.
- Hardware complex, però que permet polivalència en les comunicacions.
Tipus d'Endpoints USB
Control
Serveix per enviar paquets de control de mida petita. L'amplada de banda està garantida (10%) i hi ha control d'errors i retransmissió de paquets en cas d'error.
Interrupció
El màster pregunta periòdicament a l'slave per dades a emetre/rebre. Els paquets enviats són de mida petita. L'amplada de banda està garantida i hi ha control d'errors i retransmissió de paquets en cas d'error.
Bulk
Serveix per enviar grans volums de dades que no tenen restricció de temps. S'aplica control d'errors i retransmissió, però l'amplada de banda no està garantida; s'utilitza la que estigui disponible en cada moment.
Isòcrona
Serveix per enviar dades a intervals i durades constants (típic de l'streaming d'àudio o vídeo). No hi ha control d'errors ni retransmissions, i es garanteix com a mínim el 20% de l'amplada de banda del bus.
Configuració EUSART
(Asíncrona, full-duplex, 8 bits de dades, sense bit de paritat, 1 bit d'inici, 1 bit de parada).
TRISCbits.RC6 = 1; // Configurem els 2 pins associats a l'EUSART com a sortida.
TRISCbits.RC7 = 1;
TXSTA = 0b...; // TX9=0 (8 bits de dades), TXEN=1 (transmissió habilitada), SYNC=0 (comunicació asíncrona), BRGH=?
RCSTA = 0b...; // SPEN=1 (port sèrie habilitat), RX9=0 (8 bits de dades), SREN=1 (recepció contínua habilitada), Address Detect deshabilitat.
BAUDCON = 0b...; // RXDTP=0, TXCKP=0 (polaritats dels senyals no invertides), BRG16=?, WUE=0, ABDEN=0 (funcions extenses no habilitades).La velocitat de comunicació de l'EUSART es determina a partir dels bits de configuració SYNC, BRG16, BRGH i el valor 'n' del registre SPBRGH:SPBRG (16 bits), segons la fórmula de bauds de la taula corresponent.