🩺 Technical Reference Manual vs. The Datasheet

Where do you get “Your” information from?

So what is the difference between the technical reference manual or guide and the data sheet? Take for example on the ESP32C6? I see this base question come up often enough. :+1: and it trips a lot of people up. Think of it like this:

:page_facing_up: Datasheet = Executive Summary for Engineers

The ESP32-C6 Datasheet is the concise, high-level overview of the chip. It tells you:

  • Electrical characteristics (voltage, current, temp ranges)
  • Memory sizes (RAM, ROM, Flash support)
  • Package info (QFN40, pin pitch, thermal pad)
  • Basic peripheral counts (UARTs, SPI, I2C, ADCs, etc.)
  • Recommended operating conditions
  • Mechanical drawings and pin functions
  • Some performance benchmarks

:blue_book: It’s the go-to reference for hardware designers and BOM selection.

:heavy_check_mark: Use the datasheet when you’re deciding if this chip fits your product, or you’re designing the PCB.

:books: Technical Reference Manual (TRM) = Deep Dive for Firmware Developers

The ESP32-C6 Technical Reference Manual (TRM) is a massive document (~400–700 pages) that describes the internal architecture of every peripheral:

  • UART/SPI/I2C register maps
  • Clock trees and PLL setup
  • Sleep modes and wake sources
  • Low-power co-processor features
  • Memory-mapped peripheral registers
  • Interrupt routing, DMA setup
  • Peripheral configurations, timing, and edge cases

:blue_book: It’s what firmware, RTOS, and driver developers use when writing low-level code or debugging complex behavior.

:heavy_check_mark: Use the TRM when you’re building custom drivers, power profiles, or hitting chip-level bugs.

To compare, it’s this way for me.

Aspect Datasheet Technical Reference Manual (TRM)
Purpose Overview for hardware integration Deep detail for software/hardware co-dev
Length ~30–60 pages 400–800+ pages
Audience HW engineers, product architects Firmware devs, RTOS hackers, driver authors
Covers Pinouts, power, packages, interfaces Clock control, registers, peripherals internals
Use it for… Schematic design, PCB layout Writing code for SPI, RTC, I2C, power control
Where to get it Espressif Docs site (PDF) Espressif Docs site (PDF)

Best Docs for Xiao ESP32C6 Development

Purpose Use This Document Why
Pinouts, labels, soldering pads, GPIO mapping :small_blue_diamond: Seeed Studio Xiao ESP32C6 Wiki / Datasheet Tells you how Seeed wired the chip, what GPIOs are exposed, which pads to solder to
Peripheral capabilities (UART, I2C, ADC, etc.) :small_blue_diamond: ESP32-C6 Datasheet (Espressif) Tells you what the chip is capable of, e.g. how many ADCs, what voltages are safe
Low-level firmware, power tuning, sleep modes, registers :small_blue_diamond: ESP32-C6 Technical Reference Manual (TRM) Use this for deep coding, register poking, advanced sleep handling
Arduino IDE support, pin names (D0, D1, A0…), I2C setup :small_blue_diamond: Seeed Arduino BSP GitHub or Board Variant files Tells you what pin maps Arduino D0/D1 to, and what GPIOs are used for I2C, Serial, etc.
Power usage, current draw, battery input :small_blue_diamond: Seeed Xiao ESP32C6 Hardware Wiki Shows battery connector specs, charging IC behavior, USB power modes

HTH
GL :slight_smile: PJ :v:

:link: Arduino BSP GitHub

Can someone please give a summery of the safe IO pins to use on the ESP32C6.
Yes I understand a lot of pins are multiplexed but a simple table showing the safe io pins would be great.

Hi there,

And Welcome here…

So I won’t assume you mean a full Dev Kit C6 but a Xiao
YMMV I follow this basic understanding. The DEV-Kit C (C6) is different because of the size…just fyi.
:v:

Xiao ESP32C6 Safe I/O Pin Reference Table

Label GPIO Safe for I/O? Notes
D0 0 :warning: Input only Boot pin – LOW to enter flash mode; don’t use as output
D1 1 :x: No SPI Flash pin – Do not use
D2 2 :x: No SPI Flash
D3 3 :x: No SPI Flash
D4 4 :x: No SPI Flash
D5 5 :white_check_mark: Yes Safe for I/O
D6 6 :white_check_mark: Yes Safe
D7 7 :white_check_mark: Yes Safe
D8 8 :white_check_mark: Yes Safe
D9 9 :white_check_mark: Yes Safe
D10 10 :white_check_mark: Yes Safe
A0 1 :x: No Same as D1 — do not use
A1 0 :warning: Input only Same as D0 — boot pin
A2 2 :x: No Same as D2 — SPI Flash
A3 3 :x: No Same as D3 — SPI Flash
3V3 — Power only 3.3V output
5V — Power only USB input (not from LDO)
GND — Ground Common ground

Use These Xiao ESP32C6 Pins for I/O:

  • D5, D6, D7, D8, D9, D10 → Fully safe for digital I/O, PWM, etc.
  • GPIOs 5–10 are your reliable workhorses.
  • Avoid D0–D4 due to boot functions or flash interference.

Tip for Analog / PWM:

If you’re using analog input/output:

  • ADC works best on D5–D10
  • For PWM, all those safe GPIOs support LEDC PWM channels

for this…for example

pinMode(D5, OUTPUT);
digitalWrite(D5, HIGH); // Safe and solid

for Analog in Basic,

int sensor = analogRead(D9); // Works fine on safe GPIO

Why This Matters

  • Pins D1–D4 interfere with flash memory or USB/JTAG, which can brick or destabilize your board.
  • Using the safe GPIOs (5–10) ensures reliability and avoids subtle bugs.
  • Leveraging GPIOs like 14 and 15 gives you control over antenna switching and onboard LEDs.

HTH
GL :slight_smile: PJ :v: