BladeCore‑M54C is part of the BladeCore modular controller series.
Each BladeCore variant is implemented as a standalone hardware repository, sharing a common architectural philosophy while targeting different microcontrollers and interfaces.
This repository documents the BladeCore-M54C hardware, which is based on the RP2354B microcontroller and integrates CAN 2.0B connectivity.
The BladeCore series consists of the following hardware variants:
| Module | Microcontroller | Primary Interface | Form Factor | Status |
|---|---|---|---|---|
| BladeCore‑M40 | RP2040 | — | - | Work in progress |
| BladeCore‑M40E | RP2040 | Ethernet | - | Work in progress |
| BladeCore‑M40C | RP2040 | CAN | - | Work in progress |
| BladeCore‑M54 | RP2354B | — | - | Work in progress |
| BladeCore-M54E | RP2354B | Ethernet | 2980 | Available |
| BladeCore-M54C | RP2354B | CAN | 2980 | Available |
The BladeCore naming scheme encodes the microcontroller family and primary communication interface directly in the module name:
- M40 designates an RP2040‑based module
- M54 designates an RP2354B‑based module
- E suffix indicates integrated Ethernet support
- C suffix indicates integrated CAN support
Variants without a suffix represent the base module for that microcontroller family, without Ethernet or CAN integrated.
Each BladeCore variant is implemented as a separate hardware design and repository.
BladeCore-M54C is a compact controller module built around the RP2354B microcontroller, combined with a MCP2515T-I/ML CAN controller and the TCAN1044AVDRBRQ1 CAN transceiver.
The module is designed as a 2980-size M.2 M-Key card, intended to be embedded into a carrier board or system that provides power through the M.2 edge connector.
The design integrates:
- RP2354B microcontroller
- External QSPI flash memory
- External I²C EEPROM
- Onboard CAN controller and transceiver with 120 Ohm termination
- Dual‑path USB connectivity with automatic source selection
- Onboard power regulation and defined power‑up sequencing
This repository contains the schematics and documentation.
- KiCad Libraries: src/HardwareDesign/Libraries/KiCad
- BladeCore‑M54C footprint
- BladeCore‑M54C symbol
- Plain M.2 connector footprint (MDT420E03001)
- 3D STEP: BladeCore‑M54C + MDT420E03001 assembly
- 3D STEP: M.2 connector
- Eagle Libraries: src/HardwareDesign/Libraries/Eagle
- Status: Work in progress
![]() Top view |
![]() Bottom view |
- M.2 2980
- M‑Key
- Power and I/O routed through the M.2 edge connector
- RP2354B
- External 12 MHz crystal
- Internal 1.1 V core supply generated by the MCU
- SWD debug interface available
- GPIOs routed to the M.2 edge connector
- Integrated Flash
- RP2354B
- Capacity: 2 MB
- External QSPI Flash
- W25Q128JVPIQ
- Capacity: 16 MB
- External I²C EEPROM
- AT24C256
- Capacity: 256 kbit
- MCP2515T-I/ML CAN controller
- TCAN1044AVDRBRQ1 CAN transceiver
- Interface to MCU via SPI
- Onboard 120 Ohm termination
- Dedicated reset and interrupt signals
- ESD protection
BladeCore‑M54C supports two physical USB connection paths:
- USB routed through the M.2 edge connector (external host or carrier board USB), and
- Onboard USB‑C connector.
A FSUSB42 USB 2.0 high‑speed multiplexer is used to select which USB path is connected to the RP2354B.
USB path selection behavior:
- By default, the USB data lines are routed to the M.2 edge connector.
- When the onboard USB‑C connector is plugged in, the FSUSB42 automatically redirects the USB data path from the edge connector to the onboard USB‑C connector.
- Removing the onboard USB connection restores the default routing to the M.2 edge connector.
This allows the module to be normally operated via a carrier board USB connection, while still enabling direct access through the onboard USB‑C connector when needed, without manual configuration.
- Input supply: VBUS / 5 V / 3.3 V (5V and 3.3V is selectable by onboard solder jumper)
- TPS74801 low‑dropout regulator generating 3.3 V in case of 5V power is selected
- Power‑good signaling with visal feedback (LED)
- USB VBUS sensing routed to ADC
- Optional USB‑powered operation depending on component population (as noted in schematics)
| Pin | Name | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | GND | ||||||||||
| 3 | GPIO24 | SPI0 TX | UART1 RTS | I2C1 SCL | PWM3 B | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPOUT1 | |
| 5 | GPIO23 | SPI0 TX | UART1 RTS | I2C1 SCL | PWM3 B | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPOUT1 | |
| 7 | GPIO22 | SPI0 SCK | UART1 CTS | I2C1 SDA | PWM3 A | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPIN1 | |
| 9 | GPIO21 | SPI0 CSn | UART1 RX | **I2C0 SCL | PWM2 B | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPOUT0 | |
| 11 | GND | ||||||||||
| 13 | GPIO20 | SPI0 RX | UART1 TX | **I2C0 SDA | PWM2 A | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPIN0 | |
| 15 | GPIO19 | SPI0 TX | UART0 RTS | I2C1 SCL | PWM1 B | SIO | PIO0 | PIO1 | PIO2 | QMI CS1n | |
| 17 | GPIO18 | SPI0 SCK | UART0 CTS | I2C1 SDA | PWM1 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 19 | GPIO17 | SPI0 CSn | UART0 RX | **I2C0 SCL | PWM0 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 21 | GPIO16 | SPI0 RX | UART0 TX | **I2C0 SDA | PWM0 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 23 | GND | ||||||||||
| 25 | GPIO15 | *SPI1 TX | UART0 RTS | I2C1 SCL | PWM7 B | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPOUT1 | |
| 27 | GPIO14 | *SPI1 SCK | UART0 CTS | I2C1 SDA | PWM7 A | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPIN1 | |
| 29 | GPIO13 | *SPI1 CSn | UART0 RX | **I2C0 SCL | PWM6 B | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPOUT0 | |
| 31 | GPIO12 | *SPI1 RX | UART0 TX | **I2C0 SDA | PWM6 A | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPIN0 | |
| 33 | GPIO11 | *SPI1 TX | UART1 RTS | I2C1 SCL | PWM5 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 35 | GPIO10 | *SPI1 SCK | UART1 CTS | I2C1 SDA | PWM5 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 37 | GPIO9 | *SPI1 CSn | UART1 RX | **I2C0 SCL | PWM4 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 39 | GPIO8 | *SPI1 RX | UART1 TX | **I2C0 SDA | PWM4 A | SIO | PIO0 | PIO1 | PIO2 | QMI CS1n | |
| 41 | GND | ||||||||||
| 43 | GPIO7 | SPI0 TX | UART1 RTS | I2C1 SCL | PWM3 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 45 | GPIO6 | SPI0 SCK | UART1 CTS | I2C1 SDA | PWM3 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 47 | GPIO5 | SPI0 CSn | UART1 RX | **I2C0 SCL | PWM2 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 49 | GPIO4 | SPI0 RX | UART1 TX | **I2C0 SDA | PWM2 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 51 | GPIO3 | SPI0 TX | UART0 RTS | I2C1 SCL | PWM1 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 53 | GPIO2 | SPI0 SCK | UART0 CTS | I2C1 SDA | PWM1 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 55 | GPIO1 | SPI0 CSn | UART0 RX | **I2C0 SCL | PWM0 B | SIO | PIO0 | PIO1 | PIO2 | TRACECLK | |
| 57 | GPIO0 | SPI0 RX | UART0 TX | **I2C0 SDA | PWM0 A | SIO | PIO0 | PIO1 | PIO2 | QMI CS1n | |
| 67 | GND | ||||||||||
| 69 | USB_D+ | ||||||||||
| 71 | USB_D- | ||||||||||
| 73 | GND | ||||||||||
| 75 | VBUS |
| Pin | Name | F0 | F1 | F2 | F3 | F4 | F5 | F6 | F7 | F8 | F9 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 2 | GND | ||||||||||
| 4 | GPIO27 | *SPI1 TX | UART1 RTS | I2C1 SCL | PWM5 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 6 | GPIO26 | *SPI1 SCK | UART1 CTS | I2C1 SDA | PWM5 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 8 | GPIO25 | *SPI1 CSn | UART1 RX | **I2C0 SCL | PWM4 B | SIO | PIO0 | PIO1 | PIO2 | CLOCK GPOUT3 | |
| 10 | 3V3_OUT | ||||||||||
| 12 | 3V3_OUT | ||||||||||
| 14 | +5V_IN | ||||||||||
| 16 | +5V_IN | ||||||||||
| 18 | GND | ||||||||||
| 20 | GND | ||||||||||
| 22 | GND | ||||||||||
| 24 | GND | ||||||||||
| 26 | GND | ||||||||||
| 28 | CAN_P | ||||||||||
| 30 | CAN_N | ||||||||||
| 32 | GND | ||||||||||
| 34 | GPIO37 | SPI0 CSn | UART1 RX | **I2C0 SCL | PWM10 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 36 | GPIO38 | SPI0 SCK | UART1 CTS | I2C1 SDA | PWM11 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 38 | GND | ||||||||||
| 40 | GPIO39 | SPI0 TX | UART1 RTS | I2C1 SCL | PWM11 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 42 | GND | ||||||||||
| 44 | GND | ||||||||||
| 46 | ADC0/GPIO40 | *SPI1 RX | UART1 TX | **I2C0 SDA | PWM8 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 48 | ADC1/GPIO41 | *SPI1 CSn | UART1 RX | **I2C0 SCL | PWM8 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 50 | ADC2/GPIO42 | *SPI1 SCK | UART1 CTS | I2C1 SDA | PWM9 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 52 | ADC3/GPIO43 | *SPI1 TX | UART1 RTS | I2C1 SCL | PWM9 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 54 | ADC4/GPIO44 | *SPI1 RX | UART0 TX | **I2C0 SDA | PWM10 A | SIO | PIO0 | PIO1 | PIO2 | ||
| 56 | ADC5/GPIO45 | *SPI1 CSn | UART0 RX | **I2C0 SCL | PWM10 B | SIO | PIO0 | PIO1 | PIO2 | ||
| 58 | GND | ||||||||||
| 68 | GND | ||||||||||
| 70 | GND | ||||||||||
| 72 | VBUS | ||||||||||
| 74 | VBUS | ||||||||||
| SH1 | SHIELD |
*SPI1 is used for the onboard CAN controller (MCP2515T)
**I2C0 is used for the onboard EEPROM (AT24C256)
| Revision | Date | Notes |
|---|---|---|
| 1.0.0 | 2026‑01‑31 | Initial creation |
- This documentation intentionally avoids assumptions about firmware features, supported protocols, or software behavior.
- All statements are derived from the provided schematics and explicit design notes.
- Component‑level limits and behavior should be verified against the respective datasheets.
Hardware designs, schematics, and related documentation are licensed under the Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License (CC BY-NC-SA 4.0). See the Hardware License file for details.
-
✅ You can study, modify, and distribute the hardware designs
-
✅ You can create derivative works for personal, educational, or non-commercial use
-
✅ You can build this project for your own personal use
-
⚠️ You must give appropriate credit and indicate if changes were made -
⚠️ You must share any modifications under the same license terms -
⚠️ You must include the original license and copyright notices -
❌ You cannot use the designs for commercial purposes without explicit permission
-
❌ You cannot manufacture and sell products based on these designs without a commercial license
-
❌ You cannot create closed-source derivatives for commercial purposes
-
❌ You cannot use the designer's trademarks without permission
Commercial use of this project is prohibited without obtaining a separate commercial license. If you are interested in:
- Manufacturing and selling products based on these designs
- Incorporating these designs into commercial products
- Any other commercial applications
Please contact me through any of the channels listed in the Contact section to discuss commercial licensing arrangements. Commercial licenses are available with reasonable terms to support ongoing development.
For questions or feedback:
- Email: dvidmakesthings@gmail.com
- GitHub: DvidMakesThings
Contributions are welcome! As this is an early-stage project, please reach out before making substantial changes:
- Fork the repository
- Create a feature branch (
git checkout -b feature/concept) - Commit your changes (
git commit -m 'Add concept') - Push to the branch (
git push origin feature/concept) - Open a Pull Request with a detailed description

