fix(docs): update pinout mapping with verified ESP32-S3 hardware specifications

This commit is contained in:
ertunc-ozbay 2026-10-17 19:05:01 +03:00
parent fdc186afaf
commit df7dc140ff

View file

@ -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) |
---