Skip to content

zephyr-cp: add the Circuit Playground Bluefruit - #11657

Merged
mikeysklar merged 3 commits into
adafruit:mainfrom
dhalbert:zephyr-cp-circuitplayground-bluefruit
Oct 23, 2026
Merged

mikeysklar merged 3 commits into
adafruit:mainfrom
dhalbert:zephyr-cp-circuitplayground-bluefruit

Conversation

@dhalbert

@dhalbert dhalbert commented Oct 23, 2026 •

Copy link
Copy Markdown
Collaborator

Board definition and testing by Claude.

Add adafruit_circuitplayground_bluefruit_zephyr board.

Testing

Tested on a Circuit Playground Bluefruit:

  • CIRCUITPY works and is the right size.
  • digitalio: LED, BUTTON_A and BUTTON_B and SLIDE_SWITCH were tested.
  • neopixel_write sets all 10 NeoPixels.
  • board.I2C() and busio.I2C(board.ACCELEROMETER_SCL, board.ACCELEROMETER_SDA) were created at the same time. The LIS3DH answers at 0x19.
  • board.SPI() and a second busio.SPI were created at the same time.
  • board.UART() writes.
  • analogio reads LIGHT and TEMPERATURE.
  • pwmio plays a tone on SPEAKER, with SPEAKER_ENABLE high.
  • _bleio advertising is seen by a host.

As on the other zephyr-cp nRF52840 boards, a board with a W25Q16JV flash chip instead of a GD25Q16C gets no CIRCUITPY. See the notes in adafruit/zephyr#9.

dhalbert and others added 2 commits October 23, 2026 10:32
…ruit

Points at the open PRs adafruit/zephyr#9 (board definition) and
adafruit/adaboot#13 (partition layout) until they merge. Their commits
are only reachable from the pull request refs, which west can fetch
by name but not by SHA.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Pin names come from the nordic port board. The partition layout, the
same as the CLUE, comes from adaboot.

Changes from the CLUE board:
- No display, so SPI2 is a second dynamic SPI instance.
- No STEMMA QT connector.
- Pin numbers are nRF52840 aQFN73 package pins: the board has a bare
  nRF52840, not a module.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dhalbert
dhalbert requested a review from mikeysklar October 23, 2026 15:05
adafruit/zephyr#9 and adafruit/adaboot#13 have merged, so point at
their merge commits instead of the pull request refs.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@dhalbert
dhalbert marked this pull request as ready for review October 23, 2026 20:10

@mikeysklar mikeysklar left a comment

Copy link
Copy Markdown
Collaborator

Choose a reason for hiding this comment

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

Tested on a Circuit Playground Bluefruit with a TFT Gizmo attached.

Test Result
pin map all 46 names match ports/nordic, each resolves to the commented pad
CIRCUITPY 2,072,576 bytes, existing files kept
LED, BUTTON_A, BUTTON_B, SLIDE_SWITCH ok with digitalio and keypad
board.I2C() + accelerometer bus at once LIS3DH WHO_AM_I 0x33
board.SPI() + second busio.SPI at once ok
TFT Gizmo, fourwire + busdisplay ST7789 test pattern correct
neopixel_write all 10 pixels
pwmio on SPEAKER 440/880 Hz tones play
analogio LIGHT, TEMPERATURE read
_bleio advertising seen by a Linux host
on_next_reset(RunMode.UF2), 1200-baud touch both reach CPLAYBTBOOT

Looks good to me.

These port-wide gaps showed up in testing. They are not specific to this board and should not hold up this PR:

  • microcontroller.cpu.temperature is always 0.0. It is hard-coded in common-hal/microcontroller/Processor.c.
  • microcontroller.cpu.frequency returns 32768 on nRF52840. The cpu node has no clock-frequency, so it falls back to CONFIG_SYS_CLOCK_HW_CYCLES_PER_SEC.
  • storage.disable_usb_drive() in boot.py raises RuntimeError: Cannot change USB devices now. The MacroPad does the same.
  • usb_midi is not enabled.

@mikeysklar
mikeysklar merged commit 178e9ee into adafruit:main Oct 23, 2026
50 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants