Skip to content

esp32/boards/SEEED_XIAO_ESP32C6: New board definition.#18958

Merged
dpgeorge merged 1 commit into
micropython:masterfrom
mattytrentini:seeed_xiao_esp32c6
Mar 25, 2026
Merged

esp32/boards/SEEED_XIAO_ESP32C6: New board definition.#18958
dpgeorge merged 1 commit into
micropython:masterfrom
mattytrentini:seeed_xiao_esp32c6

Conversation

@mattytrentini

Copy link
Copy Markdown
Contributor

Summary

This PR adds a new board definition: The Seeed Studio XIAO ESP32C6

Testing

I've tested the firmware on a XIAO ESP32C6 and ensured that the LED is controllable and tested the outputs of some (not all) of the pins with a multimeter. I also verified that I could initialised the HW I2C and SPI buses, though didn't test if they were functional:

>>> from machine import Pin
>>> Pin.board.D0.init(Pin.OUT)
>>> Pin.board.D0.toggle()
>>> Pin.board.D1.init(Pin.OUT)
>>> Pin.board.D1.toggle()
>>> Pin.board.D2.init(Pin.OUT)
>>> Pin.board.D2.toggle()
>>> Pin.board.LED.init(Pin.OUT)
>>> Pin.board.LED.toggle()
>>> from machine import I2C, SPI
>>> I2C(0)
I2C(0, scl=23, sda=22, freq=400000, timeout=50000)
>>> SPI(1)
SPI(id=1, baudrate=500000, polarity=0, phase=0, bits=8, firstbit=0, sck=19, mosi=18, miso=20)

Trade-offs and Alternatives

There is an existing XIAO ESP32C6 PR #17429; this updates that PR in the following ways:

  • Adds additional pins (see Seeed Wiki: Hardware Overview)
    • Ax pins
    • Pads on the bottom (MTDO, MTDI etc)
    • LED
    • Antenna control (RF_SEL and RF_POWER)
  • Corrects the pins.csv filename
  • Updates board.json with appropriate features
  • Defines hardware I2C and SPI buses
  • Adds sdkconfig.riscv to the CMAKE options; necessary so the firmware would fit in flash

Many thanks to @Robben-Ge for providing an excellent start!

I also tried to consider @pyramids thoughtful discussion comment on XIAO (and general) pin definitions.

Generative AI

I did not use generative AI tools when creating this PR.

Additional notes

I'd like to add an ANSI board.pinout like for the WEACTSTUDIO RP2350B CORE board (#17187) but it's not ready yet; I'll raise this as a separate PR and try to cover all the XIAOs.

It would be good to have a small module to switch the antenna between onboard and external but we can add this later.

@mattytrentini mattytrentini added port-esp32 board-definition New or updated board definition files. Combine with a port- label. labels Mar 21, 2026
@github-actions

github-actions Bot commented Mar 21, 2026

Copy link
Copy Markdown

Code size report:

Reference:  esp32/boards/SPARKFUN_THINGPLUS_ESP32C5: Add SF Thing Plus ESP32-C5. [f4d2447]
Comparison: esp32/boards/SEEED_XIAO_ESP32C6: Add new XIAO board definition. [merge of 2dc2e30]
  mpy-cross:    +0 +0.000% 
   bare-arm:    +0 +0.000% 
minimal x86:    +0 +0.000% 
   unix x64:    +0 +0.000% standard
      stm32:    +0 +0.000% PYBV10
      esp32:    +0 +0.000% ESP32_GENERIC
     mimxrt:    +0 +0.000% TEENSY40
        rp2:    +0 +0.000% RPI_PICO_W
       samd:    +0 +0.000% ADAFRUIT_ITSYBITSY_M4_EXPRESS
  qemu rv32:    +0 +0.000% VIRT_RV32

@projectgus projectgus left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This looks nice and clean to me, thanks @mattytrentini and everyone who worked on the earlier versions of this PR.

It does look like there's some longer term work to be done about standardising XIAO pin naming, and documenting naming conventions for pins. This PR is consistent with SEEED_XIAO_RP2350 and this seems like a good direction to standardise on for XIAO.

"USB-C"
],
"images": [
"seeed_xiao_esp32c6.jpg"

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is it possible to please pop up a micropython-media PR with this pic? Seems like there were some, but they were closed.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Signed-off-by: Matt Trentini <matthew.trentini@planetinnovation.com.au>
Signed-off-by: Matt Trentini <matt.trentini@gmail.com>
@dpgeorge dpgeorge force-pushed the seeed_xiao_esp32c6 branch from 234b410 to 2dc2e30 Compare March 25, 2026 13:00
@dpgeorge dpgeorge merged commit 2dc2e30 into micropython:master Mar 25, 2026
13 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

board-definition New or updated board definition files. Combine with a port- label. port-esp32

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants