From df7dc140ff63c07f2d49bdd42614acecd7363a3a Mon Sep 17 00:00:00 2001 From: ertunc-ozbay Date: Sat, 17 Oct 2026 19:05:01 +0300 Subject: [PATCH] fix(docs): update pinout mapping with verified ESP32-S3 hardware specifications --- README.md | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index a85d19e..3dbb441 100644 --- a/README.md +++ b/README.md @@ -57,28 +57,25 @@ Built around the **ESP32-S3 (Xtensa® 32-bit LX7 dual-core @ 240 MHz)**, this pr --- -## GPIO Pinout & Peripheral Mapping +## GPIO Pinout & Peripheral Mapping (ESP32-S3 Hardware Specification) -The firmware (`firmware/main/mmcontroller.c`) allocates hardware peripherals across the ESP32-S3 as follows: +The physical controller uses a shared high-speed **SPI2_HOST** bus for both the 1.3" OLED and the NRF24L01+ RF transceiver, alongside dedicated ADC1 channels and hardware pulse-counter inputs: -| Peripheral / Signal | GPIO | Mode / Hardware Interface | Description | +| Peripheral / Signal | GPIO | Hardware Interface | Description | | :--- | :---: | :--- | :--- | -| **Rotary Encoder CLK** | `GPIO 32` | ESP-IDF `pulse_cnt` Unit | Quadrature channel A (hardware edge counter) | -| **Rotary Encoder DT** | `GPIO 33` | ESP-IDF `pulse_cnt` Unit | Quadrature channel B (direction sensing) | -| **Rotary Push Switch** | `GPIO 16` | Digital Input (`PULLUP`) | Rotary push-button (mode / parameter select) | -| **Button: Pause / Play** | `GPIO 13` | Digital Input (`PULLUP`) | Navigation / transport control | -| **Button: Next / Forward**| `GPIO 14` | Digital Input (`PULLUP`) | Navigation / channel advance | -| **Passive Buzzer** | `GPIO 25` | LEDC PWM (`LEDC_CHANNEL_0`) | Hardware PWM audio synthesis (frequency & melody) | -| **Active Buzzer 1** | `GPIO 26` | Digital Output | Percussive acoustic click / telemetry alert 1 | -| **Active Buzzer 2** | `GPIO 27` | Digital Output | Percussive acoustic click / telemetry alert 2 | -| **LED: Kick Trigger** | `GPIO 21` | Digital Output | Visual beat / primary telemetry indicator | -| **LED: Hat Trigger** | `GPIO 22` | Digital Output | Visual beat / secondary telemetry indicator | -| **OLED Data/Command (DC)**| `GPIO 2` | Digital Output | 1.3" OLED command vs data selection | -| **OLED Reset (RES)** | `GPIO 4` | Digital Output | Hardware display reset line | -| **OLED Chip Select (CS)** | `GPIO 5` | SPI Device Select (`SPI2`) | Display SPI bus enable | -| **OLED Clock (CLK)** | `GPIO 18` | SPI Master Clock (`SPI2`) | Hardware SPI clock line (DMA enabled) | -| **OLED MOSI** | `GPIO 23` | SPI Master Output (`SPI2`) | Hardware SPI data out line (DMA enabled) | -| **NeoPixel RGB Bar** | Config | RMT Peripheral | WS2812B 8-pixel addressable RGB telemetry strip | +| **SPI Bus: MOSI** | `GPIO 11` | SPI Master Output (`SPI2_HOST`) | Shared data line for NRF24L01+ and OLED (`SDA` / `D1`) | +| **SPI Bus: MISO** | `GPIO 13` | SPI Master Input (`SPI2_HOST`) | Data line from NRF24L01+ radio module | +| **SPI Bus: SCK (Clock)** | `GPIO 12` | SPI Master Clock (`SPI2_HOST`) | Shared clock line for NRF24L01+ and OLED (`CLK` / `D0`) | +| **NRF24L01+ Chip Select (CSN)** | `GPIO 14` | Dedicated SPI Device Select | Radio bus enable / frame delimiter | +| **NRF24L01+ Chip Enable (CE)** | `GPIO 21` | Digital Output | Radio RX/TX state activation and power line | +| **OLED Chip Select (CS)** | `GPIO 10` | Dedicated SPI Device Select | Display bus enable | +| **OLED Data/Command (DC)** | `GPIO 9` | Digital Output | 1.3" OLED command vs. graphic data selection | +| **OLED Reset (RES)** | `GPIO 8` | Digital Output | Hardware display reset line | +| **Joystick VRx (X-Axis)** | `GPIO 4` | ADC1 Channel 3 (12 dB Attenuation) | Analog X-axis potentiometer (0–3.3V range, Wi-Fi safe) | +| **Joystick VRy (Y-Axis)** | `GPIO 5` | ADC1 Channel 4 (12 dB Attenuation) | Analog Y-axis potentiometer (0–3.3V range, Wi-Fi safe) | +| **Rotary Encoder CLK** | `GPIO 15` | ESP-IDF `pulse_cnt` Unit | Quadrature channel A (hardware edge counter) | +| **Rotary Encoder DT** | `GPIO 16` | ESP-IDF `pulse_cnt` Unit | Quadrature channel B (hardware direction sensing) | +| **Rotary Encoder Switch (SW)**| `GPIO 17` | Digital Input (`PULLUP`) | Rotary push-button (menu select / enter) | ---