diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 34aa5da1..63c1dcfc 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -19,6 +19,7 @@ jobs: - PI_PICOW - PI_PICO2W - RP2040_ZERO + - RP2040_XIAO - ADAFRUIT_FEATHER - ESP32_BLUEPAD32_I2C - ESP32_BLUERETRO_I2C diff --git a/Firmware/RP2040/CMakeLists.txt b/Firmware/RP2040/CMakeLists.txt index 291dbf50..599449bf 100644 --- a/Firmware/RP2040/CMakeLists.txt +++ b/Firmware/RP2040/CMakeLists.txt @@ -136,6 +136,11 @@ elseif(OGXM_BOARD STREQUAL "RP2040_ZERO") set(EN_USB_HOST TRUE) set(EN_RGB TRUE) +elseif(OGXM_BOARD STREQUAL "RP2040_XIAO") + add_compile_definitions(CONFIG_OGXM_BOARD_RP2040_XIAO=1) + set(EN_USB_HOST TRUE) + set(EN_RGB TRUE) + # elseif(OGXM_BOARD STREQUAL "INTERNAL_4CH") # set(EN_USB_HOST TRUE) # set(EN_4CH TRUE) @@ -406,4 +411,4 @@ endif() set_target_properties(${FW_NAME} PROPERTIES OUTPUT_NAME ${EXE_FILENAME}) -pico_add_extra_outputs(${FW_NAME}) \ No newline at end of file +pico_add_extra_outputs(${FW_NAME}) diff --git a/Firmware/RP2040/src/Board/Config.h b/Firmware/RP2040/src/Board/Config.h index 658378e2..b8200e6b 100644 --- a/Firmware/RP2040/src/Board/Config.h +++ b/Firmware/RP2040/src/Board/Config.h @@ -3,13 +3,14 @@ #define PI_PICO 0 #define RP2040_ZERO 1 -#define ADAFRUIT_FEATHER 2 -#define PI_PICOW 3 -#define ESP32_BLUEPAD32_I2C 4 -#define ESP32_BLUERETRO_I2C 5 -#define EXTERNAL_4CH_I2C 6 -#define INTERNAL_4CH_I2C 7 -#define BOARDS_COUNT 8 +#define RP2040_XIAO 2 +#define ADAFRUIT_FEATHER 3 +#define PI_PICOW 4 +#define ESP32_BLUEPAD32_I2C 5 +#define ESP32_BLUERETRO_I2C 6 +#define EXTERNAL_4CH_I2C 7 +#define INTERNAL_4CH_I2C 8 +#define BOARDS_COUNT 9 #define SYSCLOCK_KHZ 240000 @@ -31,6 +32,13 @@ #define PIO_USB_DP_PIN 10 // DM = 11 #define LED_INDICATOR_PIN 14 +#elif defined(CONFIG_OGXM_BOARD_RP2040_XIAO) + #define OGXM_BOARD RP2040_XIAO + #define RGB_PXL_PIN 12 + #define RGB_PWR_PIN 11 + #define PIO_USB_DP_PIN 0 // DM = 1 + #define LED_INDICATOR_PIN 17 + #elif defined(CONFIG_OGXM_BOARD_ADAFRUIT_FEATHER) #define OGXM_BOARD ADAFRUIT_FEATHER #define RGB_PWR_PIN 20 @@ -126,4 +134,4 @@ } #endif // defined(PIO_USB_DP_PIN) -#endif // _BOARD_CONFIG_H_ \ No newline at end of file +#endif // _BOARD_CONFIG_H_ diff --git a/Firmware/RP2040/src/OGXMini/Board/Standard.cpp b/Firmware/RP2040/src/OGXMini/Board/Standard.cpp index 1db4f58b..27a9cb36 100644 --- a/Firmware/RP2040/src/OGXMini/Board/Standard.cpp +++ b/Firmware/RP2040/src/OGXMini/Board/Standard.cpp @@ -1,6 +1,6 @@ #include "Board/Config.h" #include "OGXMini/Board/Standard.h" -#if ((OGXM_BOARD == PI_PICO) || (OGXM_BOARD == RP2040_ZERO) || (OGXM_BOARD == ADAFRUIT_FEATHER)) +#if ((OGXM_BOARD == PI_PICO) || (OGXM_BOARD == RP2040_ZERO) || (OGXM_BOARD == RP2040_XIAO) || (OGXM_BOARD == ADAFRUIT_FEATHER)) #include @@ -131,4 +131,4 @@ void standard::run() { // void standard::initialize() {} // void standard::run() {} -#endif // OGXM_BOARD == PI_PICO || OGXM_BOARD == RP2040_ZERO || OGXM_BOARD == ADAFRUIT_FEATHER \ No newline at end of file +#endif // OGXM_BOARD == PI_PICO || OGXM_BOARD == RP2040_ZERO || OGXM_BOARD == ADAFRUIT_FEATHER diff --git a/Firmware/RP2040/src/OGXMini/OGXMini.cpp b/Firmware/RP2040/src/OGXMini/OGXMini.cpp index a754c630..46947641 100644 --- a/Firmware/RP2040/src/OGXMini/OGXMini.cpp +++ b/Firmware/RP2040/src/OGXMini/OGXMini.cpp @@ -16,6 +16,7 @@ namespace OGXMini { static constexpr InitFunc init_func[BOARDS_COUNT] = { standard::initialize, // PI_PICO standard::initialize, // RP2040_ZERO + standard::initialize, // RP2040_XIAO standard::initialize, // ADAFRUIT_FEATHER pico_w::initialize, // PI_PICOW esp32_bp32_i2c::initialize, // ESP32_BLUEPAD32_I2C @@ -27,6 +28,7 @@ namespace OGXMini { static constexpr RunFunc run_func[BOARDS_COUNT] = { standard::run, // PI_PICO standard::run, // RP2040_ZERO + standard::run, // RP2040_XIAO standard::run, // ADAFRUIT_FEATHER pico_w::run, // PI_PICOW esp32_bp32_i2c::run, // ESP32_BLUEPAD32_I2C @@ -38,6 +40,7 @@ namespace OGXMini { static constexpr HostMountedFunc host_mount_func[BOARDS_COUNT] = { standard::host_mounted, // PI_PICO standard::host_mounted, // RP2040_ZERO + standard::host_mounted, // RP2040_XIAO standard::host_mounted, // ADAFRUIT_FEATHER nullptr, // PI_PICOW nullptr, // ESP32_BLUEPAD32_I2C @@ -49,6 +52,7 @@ namespace OGXMini { static constexpr HostMountedWTypeFunc host_mount_w_type_func[BOARDS_COUNT] = { nullptr, // PI_PICO nullptr, // RP2040_ZERO + nullptr, // RP2040_XIAO nullptr, // ADAFRUIT_FEATHER nullptr, // PI_PICOW nullptr, // ESP32_BLUEPAD32_I2C @@ -60,6 +64,7 @@ namespace OGXMini { static constexpr WirelessConnectedFunc wl_conn_func[BOARDS_COUNT] = { nullptr, // PI_PICO nullptr, // RP2040_ZERO + nullptr, // RP2040_XIAO nullptr, // ADAFRUIT_FEATHER nullptr, // PI_PICOW nullptr, // ESP32_BLUEPAD32_I2C @@ -100,4 +105,4 @@ namespace OGXMini { } } -} // namespace OGXMini \ No newline at end of file +} // namespace OGXMini diff --git a/README.md b/README.md index 3aa52f23..ae577bd8 100644 --- a/README.md +++ b/README.md @@ -119,6 +119,7 @@ The options are: - ```PI_PICOW``` - ```PI_PICO2W``` - ```RP2040_ZERO``` +- ```RP2040_XIAO``` - ```ADAFRUIT_FEATHER``` - ```ESP32_BLUEPAD32_I2C``` - ```ESP32_BLUERETRO_I2C``` diff --git a/hardware/README.md b/hardware/README.md index 13fe28ca..7634eefa 100644 --- a/hardware/README.md +++ b/hardware/README.md @@ -16,4 +16,7 @@ Gerber, BOM, and schematic for an RP2040-Zero interposer board you can make your The RP2040-Zero board can be found on Amazon and AliExpress. -![OGX-Mini Boards](../images/OGX-Mini-rpzero-int.jpg "OGX-Mini Boards") \ No newline at end of file +# RP2040-Xiao +![OGX-Mini](../images/DiagramRP2040Xiao.png) + +![OGX-Mini Boards](../images/OGX-Mini-rpzero-int.jpg "OGX-Mini Boards") diff --git a/images/DiagramRP2040Xiao.png b/images/DiagramRP2040Xiao.png new file mode 100644 index 00000000..b7862c2f Binary files /dev/null and b/images/DiagramRP2040Xiao.png differ