Skip to content

Hardware

Specifications for the connectors and pin assignments of the narya-board.

Note

For schematics, KiCAD design files, and board photos, see the narya-board repository.

Overview

Item Details
Main MCU (fmrb-core) ESP32-S3-WROOM-1-N16R8 (16MB Flash + 8MB PSRAM)
Sub MCU (fmrb-graphics-audio) ESP32-WROVER-E/IE (with PSRAM)
Inter-MCU Communication UART1 (921600 bps, CTS/RTS flow control)
Video Output NTSC composite (using LovyanGFX CVBS)
Audio Output I2S DAC (NES APU emulator)
Storage Internal LittleFS (16MB) + SD card (FAT32, SPI connection)

Narya board

Power Supply

Item Value
Input USB Type-C (5V)
Internal Regulator 3.3V
Recommended Power Stable USB supply of 1A or more

Video Output

Item Value
Connector RCA (pin jack, yellow)
Signal Format NTSC composite
Standard Resolution 320 x 240
Color RGB332 (256 colors)

If colors appear different due to variations in CRT monitors or capture devices, you can adjust them using FmrbGfx#set_output_level / set_chroma_level.

Audio Output

Item Value
Connector 3.5mm stereo mini jack
Signal I2S to DAC analog output
Output Level Line-level equivalent

The NES APU emulator runs with 4 channels: 2 square waves + 1 triangle wave + 1 noise channel. See FmrbAudio and Audio File Formats for details.

GROVE

The board has 2 GROVE connectors. Listed from left: GND, Power, Sig1, Sig2. The connections are as follows:

Connector Sig1 Sig2 Notes
GROVE 1 GPIO 14/I2C1-SDA GPIO 21/I2C1-SCL For I2C / shared with RTC (RX8900, address: 0x32). 10K pull-up resistors present
GROVE 2 GPIO 47 GPIO 48 General purpose. No pull-up resistors. Power source selectable

GROVE 1 shares the I2C bus with the RTC, so be careful about address conflicts.

GROVE 2 has no pull-up resistors on the signal lines, and the power supply method can be changed via pin headers, so it can be used freely for GPIO, UART, RMT, and other purposes.

Grove

Pin Assignments

ESP32-S3 Pin Assignment

ESP32-S3 Pin Assignment

GPIO40 is connected to the INT pin of the RX8900 with a pull-up resistor.

JTAG functionality has not been verified. If you want to use it, you need to remove the 0-ohm resistor. See the schematics for details.

ESP32-WROVER Pin Assignment

ESP32-WROVER Pin Assignment

I2C

Bus SDA SCL Notes
I2C1 GPIO 14 GPIO 21 Shared with RTC (RX8900)
I2C2 GPIO 47 GPIO 48 General purpose

Use with I2C.new(unit: "ESP32_I2C0", ...) etc. (see Peripherals > I2C).

External GPIO

Pin Locations (S3)

Pin Locations (S3)

Pin Locations (WROVER)

Pin Locations (WROVER)

RTC (Real-Time Clock)

The board includes an RX8900 RTC IC (I2C address 0x32, via I2C1). Time is maintained by a battery.

i2c = I2C.new(unit: "ESP32_I2C0")
rtc = RX8900.new(i2c)
rtc.sync_system_clock

See RX8900 API for details.