les vencimos · offline

L29. Qué es un bus (I2C / SPI), en una idea

Hablar con otros (84–92%)

Maestro

Un bus es un manojo corto de cables por el que la placa habla con otros chips, en vez de gastar un pin por cada dato. I2C usa dos cables de señal, más alimentación y masa. SPI usa más cables y suele ir más rápido. No hace falta memorizar registros. Hace falta no tratar esos cables como botones sueltos.

En el Uno, I2C vive en A4 (datos, SDA) y A5 (reloj, SCL). Varios módulos pueden compartirlos si cada uno tiene una dirección distinta, un número pequeño. Si dos módulos traen la misma dirección de fábrica, no se oyen con claridad. La masa, otra vez, es común, y la tensión tiene que ser la de la familia: no pongas un módulo de 5 voltios en un bus de 3,3.

SPI reparte el trabajo en más hilos: reloj, datos de ida, datos de vuelta, y un cable de selección por cada dispositivo. Es típico de tarjetas y de algunas pantallas. No es mejor ni peor. Es otro idioma. El curso no te pide elegir el idioma de un chip: te pide leer en la serigrafía qué idioma habla el módulo que compraste.

Los registros internos de la hoja técnica no se memorizan aquí. Para eso está la biblioteca, y la referencia densa está en Software. Si una práctica te manda escribir veintidós registros a mano el primer día, no es esta lección.

Señal de que el bus está mudo: alimentación presente, masa presente, y aun así el módulo no responde. Entonces miras dirección, pines A4 y A5, y si alguien puso un dispositivo de otra tensión.

Montaje

UnoA4 es SDAA5 es SCLGND común3,3 o 5 según móduloMódulomisma masadirección propiano es un pin digitalSDASCL
En el Uno, datos en A4 y reloj en A5. El módulo comparte masa. La alimentación del módulo es la suya, 5 V o 3,3 V, no la que te sobre.

Pines de esta lección

Uno R3 · 5 V · mira la serigrafía, no la memoriaA4SDAA5SCLGNDcomún3,3ojo al módulo
A4 y A5 dejan de ser potenciómetro el día que cuelgas aquí una pantalla. 0 y 1 siguen siendo el USB.

Por qué

I2C es un bus: dos hilos para muchos módulos, cada uno con una dirección. SDA lleva datos. SCL lleva el reloj. En el Uno R3 esas señales están en A4 y A5, y también repetidas en los pines junto al USB marcados SDA y SCL. Es el mismo par, no un segundo bus. No cablees dos módulos distintos en A4 y en el SDA de la cabecera creyendo que son canales separados.

SPI es el otro bus habitual: más hilos, más rápido, y un cable de selección por dispositivo. No se improvisa en esta lección. Si un módulo dice SPI, no lo pongas en A4 y A5. Lee la seda. El catálogo de Hardware está para esa ficha; aquí solo se distingue el enchufe.

La masa es común siempre. La alimentación no es automática: un módulo de 3,3 V en el 5 V del Uno se puede morir. Uno de 5 V en el pin de 3,3 V no arranca o pide de más. IOREF y la serigrafía mandan, no el color de los cables que traiga el módulo.

Las resistencias de pull-up del bus suelen venir en el módulo. No añadas otras a ciegas. Y no uses A4 como entrada del LDR el mismo día: la pantalla y el divisor se pelean el pin.

Práctica

  1. Localiza en la seda A4, A5, y las marcas SDA y SCL de la cabecera. Di que son el mismo par.
  2. Elige un módulo que diga I2C. Si dice SPI, no lo conectes en esta lección.
  3. Lee si el módulo es de 5 V o de 3,3 V. Si es de 3,3 V y tu placa es Uno a 5 V, no lo alimentes todavía.
  4. Si es de 5 V: VCC a 5 V, GND a GND, SDA a A4, SCL a A5.
  5. No dejes el potenciómetro en A0 si no molesta, pero quita cualquier cosa de A4 y A5.
  6. Sin librería aún, el éxito de hoy es el cable correcto y saber por qué. La pantalla se prueba en la lección siguiente.
  7. Anota la dirección que imprime el fabricante, un número en hexadecimal, para no buscarla luego en un foro al azar.

Anota el montaje

Escribe qué cable va a qué pin, o qué has entendido del paso. Se guarda en este aparato.

Ejemplos resueltos

Se cableó SPI en A4 y A5

El módulo tiene SCK, MOSI, MISO y CS. Se metieron dos de ellos en A4 y A5 porque eran dos hilos. No hay respuesta. No es una dirección I2C equivocada: es otro idioma.

Se desconecta. Se mira el catálogo de Hardware para el patillaje SPI del Uno, que no es el de esta lección. No se insiste con más resistencias.

3,3 V alimentado a 5 V

La seda del módulo dice 3,3 V. Se usó el pin de 5 V porque el cable rojo ya estaba ahí. El módulo se calienta o se calla para siempre.

Se corta la alimentación. Si sigue vivo, se alimenta donde pone su tensión, y solo entonces se hablan SDA y SCL. Un módulo muerto no se arregla con software.

En la mesa

Con la placa apagada, pon dos dedos en A4 y A5 y di datos y reloj. Luego busca las mismas letras SDA y SCL junto al USB y di que es el mismo par, no una segunda oportunidad para otro módulo. Si tu módulo trae los hilos ya pelados de colores, no fíes el color: fía la letra de su placa. Rojo no es SDA por decreto.

Lee el voltaje del módulo en su seda antes de acercarlo al 5 V. Si no lo pone, no se enchufa en esta lección. Se consulta Hardware. Alimentar a ciegas es el fallo que el software no puede deshacer. Un módulo callado se puede deber a una dirección; un módulo caliente se debe a un voltaje, y se suelta ya.

Deja A4 y A5 libres de potenciómetros y de LDR. Aunque hoy no cargues librería, el cable bien puesto es el trabajo. Anota la dirección que dice el fabricante, aunque sea un número raro, para la lección de la pantalla.

Ejercicio

Elige un módulo que tengas, o una foto de su serigrafía. Anota si dice I2C o SPI, y a qué pines del Uno irían los de señal. Si no lo dice, no inventes el bus.

Autoevaluación

1. En el Uno, ¿qué pines son SDA y SCL?

2. ¿Pueden convivir dos módulos I2C con la misma dirección?

3. ¿Hay que memorizar los registros del chip?