> ## Documentation Index
> Fetch the complete documentation index at: https://docs.oryx.mechatronstudio.com/llms.txt
> Use this file to discover all available pages before exploring further.

# I2C

> Dos canales por bus —SDA y SCL— y varios buses a la vez.

I2C es el único de los cuatro que **lee varios canales juntos**: necesita dos
líneas, y devuelve una lectura para cada una.

## Buses

En la ventana de protocolo se arman los buses: cada uno con **qué canal es SDA**
y **cuál es SCL**. Se pueden agregar y quitar.

<Note>
  Cada bus necesita **dos canales libres**: uno para SDA y otro para SCL. Sin
  buses armados, el aviso lo pide: *"No hay ningún bus. Agrega uno y elige qué
  canal es SDA y cuál es SCL."*
</Note>

Si nunca se tocaron, el editor los arma solo: por el nombre de los canales, o
con los dos primeros.

## Cómo se lee

> SDA son los datos y SCL es el reloj. Cada flanco de subida de SCL lee un bit;
> con SCL en alto, SDA que baja es **START** y SDA que sube es **STOP**.

## Tramos de la transferencia

| Tramo                    | Qué es                                              |
| ------------------------ | --------------------------------------------------- |
| **START**                | SDA baja con SCL en alto: empieza una transferencia |
| **START repetido**       | Otra dirección sin soltar el bus                    |
| **STOP**                 | SDA sube con SCL en alto: se libera el bus          |
| **Dirección**            | 7 bits, el esclavo al que se dirige                 |
| **Dirección de 10 bits** | Empieza con `11110`                                 |
| **R**                    | El maestro lee del esclavo                          |
| **W**                    | El maestro escribe al esclavo                       |
| **ACK**                  | El receptor baja SDA: se recibió correctamente      |
| **NACK**                 | SDA quedó en alto: no hubo confirmación             |
| **Byte de datos**        | La carga útil                                       |
| **Byte incompleto**      | Se cortó antes de sus 9 bits                        |

## Errores que detecta

| Etiqueta              | Qué pasó                                                                   |
| --------------------- | -------------------------------------------------------------------------- |
| **Sin respuesta**     | Ningún dispositivo respondió a la dirección: la confirmación quedó en NACK |
| **NACK de datos**     | El esclavo rechazó un byte con un NACK                                     |
| **Lectura tras NACK** | El maestro siguió leyendo después de un NACK                               |
| **Falta NACK final**  | El último byte leído debe terminar con NACK antes del STOP                 |
| **Byte incompleto**   | Un STOP o START cortó un byte antes de sus 9 bits                          |
| **Sin STOP**          | El dibujo termina sin STOP: el bus queda ocupado                           |
| **Sin START**         | Hay pulsos de reloj con el bus libre: falta el START                       |

## El resumen

Cada transferencia se resume con la dirección, el sentido y el tamaño:

* `0x3C W` · `4 B`
* `0x68 R` · `2 B`
* `sin respuesta`, `Transferencia incompleta` o `Reloj sin START` cuando algo
  falla

## Cómo empezar

Sin nada dibujado, el cuadro de estado lo explica:

> *No hay ninguna transferencia. Con SCL en alto, baja SDA para generar el
> START; después, cada flanco de subida de SCL lee un bit de SDA.*
