diff --git a/Hub-Control-Bus-%28I2C%29.md b/Hub-Control-Bus-%28I2C%29.md new file mode 100644 index 0000000..04220ab --- /dev/null +++ b/Hub-Control-Bus-%28I2C%29.md @@ -0,0 +1,34 @@ +# Hub Control Bus (I2C) + +Wires the **ESP32-S3-Touch-LCD-1.28 hub** to the two source boards (B = JBL, +C = Cardo) so the on-screen UI can set delay / volume (and later pick speakers). + +## S3 expansion header — free pins +The 1.27 mm header (P2) brings out: **GPIO15, 16, 17, 18, 21, 33** + **3V3**, **VSYS**, **GND**. +We use two of them for I2C. + +## I2C bus wiring (3 wires + pull-ups) + +| Signal | S3 hub (master) | Board B (JBL) | Board C (Cardo) | +|--------|-----------------|---------------|-----------------| +| SDA | **GPIO15** | GPIO32 | GPIO32 | +| SCL | **GPIO16** | GPIO33 | GPIO33 | +| GND | **GND** (header)| GND | GND | + +- S3 **GPIO15 (SDA)** -> B **GPIO32** *and* C **GPIO32** +- S3 **GPIO16 (SCL)** -> B **GPIO33** *and* C **GPIO33** +- S3 **GND** -> common with B and C (and with Board A — everything shares one ground) + +### Pull-up resistors (required for I2C) +Add **two ~4.7 kohm resistors**: one from **SDA -> 3V3**, one from **SCL -> 3V3** +(use the S3 header's 3V3 pin). One pair for the whole bus is enough. + +## I2C addresses +- Board B (JBL) = **0x10** +- Board C (Cardo) = **0x11** + +## Notes +- This is separate from the audio I2S bus (Board A GPIO5/25/23 -> B/C GPIO19/18/22). +- B/C touch pads (GPIO4 = +, GPIO27 = -) still work as a local fallback. +- Keep wires short; common ground across all boards is mandatory. +- The S3 is powered by its own USB/battery; only GND is shared for signaling.