From 4955fc1cf888f049e51abdcbff0bf195b91b3122 Mon Sep 17 00:00:00 2001 From: "Earle F. Philhower, III" <earlephilhower@yahoo.com> Date: Tue, 18 Mar 2025 14:58:18 -0700 Subject: [PATCH] Add Pimoroni Servo2040 Fixes #2730 . Untested, based off of schematics --- README.md | 1 + boards.txt | 240 ++++++++++++++++++++- package/package_pico_index.template.json | 3 + tools/json/pimoroni_plasma2350.json | 2 +- tools/json/pimoroni_servo2040.json | 55 +++++ tools/makeboards.py | 3 +- variants/pimoroni_servo2040/pins_arduino.h | 89 ++++++++ 7 files changed, 390 insertions(+), 3 deletions(-) create mode 100644 tools/json/pimoroni_servo2040.json create mode 100644 variants/pimoroni_servo2040/pins_arduino.h diff --git a/README.md b/README.md index 9d27017d9..9a00a2387 100644 --- a/README.md +++ b/README.md @@ -81,6 +81,7 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo * Pimoroni Pico Plus 2W * Pimoroni Plasma2040 * Pimoroni Plasma2350 +* Pimoroni Servo2040 * Pimoroni Tiny2040 * Pimoroni Tiny2350 * Pintronix PinMax diff --git a/boards.txt b/boards.txt index 83a2429f2..6f83e58f9 100644 --- a/boards.txt +++ b/boards.txt @@ -23429,7 +23429,7 @@ pimoroni_plasma2350.upload_port.7.pid=0xd1a5 pimoroni_plasma2350.build.usbvid=-DUSBD_VID=0x2e8a pimoroni_plasma2350.build.usbpid=-DUSBD_PID=0x10a5 pimoroni_plasma2350.build.usbpwr=-DUSBD_MAX_POWER_MA=500 -pimoroni_plasma2350.build.board=PIMORONI_PLASMA2040 +pimoroni_plasma2350.build.board=PIMORONI_PLASMA2350 pimoroni_plasma2350.build.variant=pimoroni_plasma2350 pimoroni_plasma2350.upload.maximum_size=2097152 pimoroni_plasma2350.upload.wait_for_upload_port=true @@ -23637,6 +23637,244 @@ pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_si pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# Pimoroni Servo2040 +# ----------------------------------- +pimoroni_servo2040.name=Pimoroni Servo2040 +pimoroni_servo2040.vid.0=0x2e8a +pimoroni_servo2040.pid.0=0x10a5 +pimoroni_servo2040.vid.1=0x2e8a +pimoroni_servo2040.pid.1=0x11a5 +pimoroni_servo2040.vid.2=0x2e8a +pimoroni_servo2040.pid.2=0x50a5 +pimoroni_servo2040.vid.3=0x2e8a +pimoroni_servo2040.pid.3=0x51a5 +pimoroni_servo2040.vid.4=0x2e8a +pimoroni_servo2040.pid.4=0x90a5 +pimoroni_servo2040.vid.5=0x2e8a +pimoroni_servo2040.pid.5=0x91a5 +pimoroni_servo2040.vid.6=0x2e8a +pimoroni_servo2040.pid.6=0xd0a5 +pimoroni_servo2040.vid.7=0x2e8a +pimoroni_servo2040.pid.7=0xd1a5 +pimoroni_servo2040.upload_port.0.vid=0x2e8a +pimoroni_servo2040.upload_port.0.pid=0x10a5 +pimoroni_servo2040.upload_port.1.vid=0x2e8a +pimoroni_servo2040.upload_port.1.pid=0x11a5 +pimoroni_servo2040.upload_port.2.vid=0x2e8a +pimoroni_servo2040.upload_port.2.pid=0x50a5 +pimoroni_servo2040.upload_port.3.vid=0x2e8a +pimoroni_servo2040.upload_port.3.pid=0x51a5 +pimoroni_servo2040.upload_port.4.vid=0x2e8a +pimoroni_servo2040.upload_port.4.pid=0x90a5 +pimoroni_servo2040.upload_port.5.vid=0x2e8a +pimoroni_servo2040.upload_port.5.pid=0x91a5 +pimoroni_servo2040.upload_port.6.vid=0x2e8a +pimoroni_servo2040.upload_port.6.pid=0xd0a5 +pimoroni_servo2040.upload_port.7.vid=0x2e8a +pimoroni_servo2040.upload_port.7.pid=0xd1a5 +pimoroni_servo2040.build.usbvid=-DUSBD_VID=0x2e8a +pimoroni_servo2040.build.usbpid=-DUSBD_PID=0x10a5 +pimoroni_servo2040.build.usbpwr=-DUSBD_MAX_POWER_MA=500 +pimoroni_servo2040.build.board=PIMORONI_SERVO2040 +pimoroni_servo2040.build.mcu=cortex-m0plus +pimoroni_servo2040.build.chip=rp2040 +pimoroni_servo2040.build.toolchain=arm-none-eabi +pimoroni_servo2040.build.toolchainpkg=pqt-gcc +pimoroni_servo2040.build.toolchainopts=-march=armv6-m -mcpu=cortex-m0plus -mthumb +pimoroni_servo2040.build.uf2family=--family rp2040 +pimoroni_servo2040.build.variant=pimoroni_servo2040 +pimoroni_servo2040.upload.maximum_size=2097152 +pimoroni_servo2040.upload.wait_for_upload_port=true +pimoroni_servo2040.upload.erase_cmd= +pimoroni_servo2040.serial.disableDTR=false +pimoroni_servo2040.serial.disableRTS=false +pimoroni_servo2040.build.f_cpu=125000000 +pimoroni_servo2040.build.led= +pimoroni_servo2040.build.core=rp2040 +pimoroni_servo2040.build.ldscript=memmap_default.ld +pimoroni_servo2040.build.boot2=boot2_w25q080_2_padded_checksum +pimoroni_servo2040.build.usb_manufacturer="Pimoroni" +pimoroni_servo2040.build.usb_product="Servo2040" +pimoroni_servo2040.menu.flash.2097152_0=2MB (no FS) +pimoroni_servo2040.menu.flash.2097152_0.upload.maximum_size=2093056 +pimoroni_servo2040.menu.flash.2097152_0.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_0.build.flash_length=2093056 +pimoroni_servo2040.menu.flash.2097152_0.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_0.build.fs_start=270528512 +pimoroni_servo2040.menu.flash.2097152_0.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +pimoroni_servo2040.menu.flash.2097152_65536.upload.maximum_size=2027520 +pimoroni_servo2040.menu.flash.2097152_65536.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_65536.build.flash_length=2027520 +pimoroni_servo2040.menu.flash.2097152_65536.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_65536.build.fs_start=270462976 +pimoroni_servo2040.menu.flash.2097152_65536.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +pimoroni_servo2040.menu.flash.2097152_131072.upload.maximum_size=1961984 +pimoroni_servo2040.menu.flash.2097152_131072.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_131072.build.flash_length=1961984 +pimoroni_servo2040.menu.flash.2097152_131072.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_131072.build.fs_start=270397440 +pimoroni_servo2040.menu.flash.2097152_131072.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +pimoroni_servo2040.menu.flash.2097152_262144.upload.maximum_size=1830912 +pimoroni_servo2040.menu.flash.2097152_262144.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_262144.build.flash_length=1830912 +pimoroni_servo2040.menu.flash.2097152_262144.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_262144.build.fs_start=270266368 +pimoroni_servo2040.menu.flash.2097152_262144.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +pimoroni_servo2040.menu.flash.2097152_524288.upload.maximum_size=1568768 +pimoroni_servo2040.menu.flash.2097152_524288.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_524288.build.flash_length=1568768 +pimoroni_servo2040.menu.flash.2097152_524288.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_524288.build.fs_start=270004224 +pimoroni_servo2040.menu.flash.2097152_524288.build.fs_end=270528512 +pimoroni_servo2040.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) +pimoroni_servo2040.menu.flash.2097152_1048576.upload.maximum_size=1044480 +pimoroni_servo2040.menu.flash.2097152_1048576.build.flash_total=2097152 +pimoroni_servo2040.menu.flash.2097152_1048576.build.flash_length=1044480 +pimoroni_servo2040.menu.flash.2097152_1048576.build.eeprom_start=270528512 +pimoroni_servo2040.menu.flash.2097152_1048576.build.fs_start=269479936 +pimoroni_servo2040.menu.flash.2097152_1048576.build.fs_end=270528512 +pimoroni_servo2040.menu.freq.200=200 MHz +pimoroni_servo2040.menu.freq.200.build.f_cpu=200000000L +pimoroni_servo2040.menu.freq.50=50 MHz +pimoroni_servo2040.menu.freq.50.build.f_cpu=50000000L +pimoroni_servo2040.menu.freq.100=100 MHz +pimoroni_servo2040.menu.freq.100.build.f_cpu=100000000L +pimoroni_servo2040.menu.freq.120=120 MHz +pimoroni_servo2040.menu.freq.120.build.f_cpu=120000000L +pimoroni_servo2040.menu.freq.125=125 MHz +pimoroni_servo2040.menu.freq.125.build.f_cpu=125000000L +pimoroni_servo2040.menu.freq.128=128 MHz +pimoroni_servo2040.menu.freq.128.build.f_cpu=128000000L +pimoroni_servo2040.menu.freq.133=133 MHz +pimoroni_servo2040.menu.freq.133.build.f_cpu=133000000L +pimoroni_servo2040.menu.freq.150=150 MHz +pimoroni_servo2040.menu.freq.150.build.f_cpu=150000000L +pimoroni_servo2040.menu.freq.176=176 MHz +pimoroni_servo2040.menu.freq.176.build.f_cpu=176000000L +pimoroni_servo2040.menu.freq.225=225 MHz (Overclock) +pimoroni_servo2040.menu.freq.225.build.f_cpu=225000000L +pimoroni_servo2040.menu.freq.240=240 MHz (Overclock) +pimoroni_servo2040.menu.freq.240.build.f_cpu=240000000L +pimoroni_servo2040.menu.freq.250=250 MHz (Overclock) +pimoroni_servo2040.menu.freq.250.build.f_cpu=250000000L +pimoroni_servo2040.menu.freq.276=276 MHz (Overclock) +pimoroni_servo2040.menu.freq.276.build.f_cpu=276000000L +pimoroni_servo2040.menu.freq.300=300 MHz (Overclock) +pimoroni_servo2040.menu.freq.300.build.f_cpu=300000000L +pimoroni_servo2040.menu.opt.Small=Small (-Os) (standard) +pimoroni_servo2040.menu.opt.Small.build.flags.optimize=-Os +pimoroni_servo2040.menu.opt.Optimize=Optimize (-O) +pimoroni_servo2040.menu.opt.Optimize.build.flags.optimize=-O +pimoroni_servo2040.menu.opt.Optimize2=Optimize More (-O2) +pimoroni_servo2040.menu.opt.Optimize2.build.flags.optimize=-O2 +pimoroni_servo2040.menu.opt.Optimize3=Optimize Even More (-O3) +pimoroni_servo2040.menu.opt.Optimize3.build.flags.optimize=-O3 +pimoroni_servo2040.menu.opt.Fast=Fast (-Ofast) (maybe slower) +pimoroni_servo2040.menu.opt.Fast.build.flags.optimize=-Ofast +pimoroni_servo2040.menu.opt.Debug=Debug (-Og) +pimoroni_servo2040.menu.opt.Debug.build.flags.optimize=-Og +pimoroni_servo2040.menu.opt.Disabled=Disabled (-O0) +pimoroni_servo2040.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_servo2040.menu.profile.Disabled=Disabled +pimoroni_servo2040.menu.profile.Disabled.build.flags.profile= +pimoroni_servo2040.menu.profile.Enabled=Enabled +pimoroni_servo2040.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +pimoroni_servo2040.menu.rtti.Disabled=Disabled +pimoroni_servo2040.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +pimoroni_servo2040.menu.rtti.Enabled=Enabled +pimoroni_servo2040.menu.rtti.Enabled.build.flags.rtti= +pimoroni_servo2040.menu.stackprotect.Disabled=Disabled +pimoroni_servo2040.menu.stackprotect.Disabled.build.flags.stackprotect= +pimoroni_servo2040.menu.stackprotect.Enabled=Enabled +pimoroni_servo2040.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_servo2040.menu.exceptions.Disabled=Disabled +pimoroni_servo2040.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +pimoroni_servo2040.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +pimoroni_servo2040.menu.exceptions.Enabled=Enabled +pimoroni_servo2040.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +pimoroni_servo2040.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +pimoroni_servo2040.menu.dbgport.Disabled=Disabled +pimoroni_servo2040.menu.dbgport.Disabled.build.debug_port= +pimoroni_servo2040.menu.dbgport.Serial=Serial +pimoroni_servo2040.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +pimoroni_servo2040.menu.dbgport.Serial1=Serial1 +pimoroni_servo2040.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +pimoroni_servo2040.menu.dbgport.Serial2=Serial2 +pimoroni_servo2040.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +pimoroni_servo2040.menu.dbgport.SerialSemi=SerialSemi +pimoroni_servo2040.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +pimoroni_servo2040.menu.dbglvl.None=None +pimoroni_servo2040.menu.dbglvl.None.build.debug_level= +pimoroni_servo2040.menu.dbglvl.Core=Core +pimoroni_servo2040.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +pimoroni_servo2040.menu.dbglvl.SPI=SPI +pimoroni_servo2040.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +pimoroni_servo2040.menu.dbglvl.Wire=Wire +pimoroni_servo2040.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +pimoroni_servo2040.menu.dbglvl.Bluetooth=Bluetooth +pimoroni_servo2040.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_servo2040.menu.dbglvl.All=All +pimoroni_servo2040.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_servo2040.menu.dbglvl.NDEBUG=NDEBUG +pimoroni_servo2040.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +pimoroni_servo2040.menu.usbstack.picosdk=Pico SDK +pimoroni_servo2040.menu.usbstack.picosdk.build.usbstack_flags= +pimoroni_servo2040.menu.usbstack.tinyusb=Adafruit TinyUSB +pimoroni_servo2040.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +pimoroni_servo2040.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +pimoroni_servo2040.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +pimoroni_servo2040.menu.usbstack.nousb=No USB +pimoroni_servo2040.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +pimoroni_servo2040.menu.ipbtstack.ipv4only=IPv4 Only +pimoroni_servo2040.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +pimoroni_servo2040.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +pimoroni_servo2040.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +pimoroni_servo2040.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +pimoroni_servo2040.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +pimoroni_servo2040.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +pimoroni_servo2040.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +pimoroni_servo2040.menu.uploadmethod.default=Default (UF2) +pimoroni_servo2040.menu.uploadmethod.default.build.ram_length=256k +pimoroni_servo2040.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +pimoroni_servo2040.menu.uploadmethod.default.upload.maximum_data_size=262144 +pimoroni_servo2040.menu.uploadmethod.default.upload.tool=uf2conv +pimoroni_servo2040.menu.uploadmethod.default.upload.tool.default=uf2conv +pimoroni_servo2040.menu.uploadmethod.default.upload.tool.network=uf2conv-network +pimoroni_servo2040.menu.uploadmethod.picotool=Picotool +pimoroni_servo2040.menu.uploadmethod.picotool.build.ram_length=256k +pimoroni_servo2040.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +pimoroni_servo2040.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +pimoroni_servo2040.menu.uploadmethod.picotool.upload.maximum_data_size=262144 +pimoroni_servo2040.menu.uploadmethod.picotool.upload.tool=picotool +pimoroni_servo2040.menu.uploadmethod.picotool.upload.tool.default=picotool +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=256k +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=262144 +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap +pimoroni_servo2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap + # ----------------------------------- # Pimoroni Tiny2040 # ----------------------------------- diff --git a/package/package_pico_index.template.json b/package/package_pico_index.template.json index e82a1da85..b93d71ca2 100644 --- a/package/package_pico_index.template.json +++ b/package/package_pico_index.template.json @@ -260,6 +260,9 @@ { "name": "Pimoroni Plasma2350" }, + { + "name": "Pimoroni Servo2040" + }, { "name": "Pimoroni Tiny2040" }, diff --git a/tools/json/pimoroni_plasma2350.json b/tools/json/pimoroni_plasma2350.json index de15346d0..dc2961e0d 100644 --- a/tools/json/pimoroni_plasma2350.json +++ b/tools/json/pimoroni_plasma2350.json @@ -9,7 +9,7 @@ }, "core": "earlephilhower", "cpu": "cortex-m33", - "extra_flags": "-DARDUINO_PIMORONI_PLASMA2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", + "extra_flags": "-DARDUINO_PIMORONI_PLASMA2350 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", "f_cpu": "150000000L", "hwids": [ [ diff --git a/tools/json/pimoroni_servo2040.json b/tools/json/pimoroni_servo2040.json new file mode 100644 index 000000000..88ae93802 --- /dev/null +++ b/tools/json/pimoroni_servo2040.json @@ -0,0 +1,55 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "boot2_w25q080_2_padded_checksum.S", + "usb_vid": "0x2E8A", + "usb_pid": "0x10A5" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m0plus", + "extra_flags": "-DARDUINO_PIMORONI_SERVO2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", + "f_cpu": "133000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x2E8A", + "0x10A5" + ] + ], + "mcu": "rp2040", + "variant": "pimoroni_servo2040" + }, + "debug": { + "jlink_device": "RP2040_M0_0", + "openocd_target": "rp2040.cfg", + "svd_path": "rp2040.svd" + }, + "frameworks": [ + "arduino" + ], + "name": "Servo2040", + "upload": { + "maximum_ram_size": 262144, + "maximum_size": 2097152, + "require_upload_port": true, + "native_usb": true, + "use_1200bps_touch": true, + "wait_for_upload_port": false, + "protocol": "picotool", + "protocols": [ + "blackmagic", + "cmsis-dap", + "jlink", + "raspberrypi-swd", + "picotool", + "picoprobe" + ] + }, + "url": "https://www.raspberrypi.org/products/raspberry-pi-pico/", + "vendor": "Pimoroni" +} \ No newline at end of file diff --git a/tools/makeboards.py b/tools/makeboards.py index ffa843a63..88c2bef9a 100755 --- a/tools/makeboards.py +++ b/tools/makeboards.py @@ -624,7 +624,8 @@ def MakeBoardJSON(name, chip, vendor_name, product_name, vid, pid, pwr, boarddef MakeBoard("pimoroni_pico_plus_2", "rp2350", "Pimoroni", "PicoPlus2", "0x2e8a", "0x100a", 500, "PIMORONI_PICO_PLUS_2", 16, 8, "none") MakeBoard("pimoroni_pico_plus_2w", "rp2350", "Pimoroni", "PicoPlus2W", "0x2e8a", "0x100a", 500, "PIMORONI_PICO_PLUS_2W", 16, 8, "none", ["PICO_CYW43_SUPPORTED=1", "CYW43_PIN_WL_DYNAMIC=1"]) MakeBoard("pimoroni_plasma2040", "rp2040", "Pimoroni", "Plasma2040", "0x2e8a", "0x100a", 500, "PIMORONI_PLASMA2040", 2, 0, "boot2_w25q080_2_padded_checksum") -MakeBoard("pimoroni_plasma2350", "rp2350", "Pimoroni", "Plasma2350", "0x2e8a", "0x10a5", 500, "PIMORONI_PLASMA2040", 2, 0, "none") +MakeBoard("pimoroni_plasma2350", "rp2350", "Pimoroni", "Plasma2350", "0x2e8a", "0x10a5", 500, "PIMORONI_PLASMA2350", 2, 0, "none") +MakeBoard("pimoroni_servo2040", "rp2040", "Pimoroni", "Servo2040", "0x2e8a", "0x10a5", 500, "PIMORONI_SERVO2040", 2, 0, "boot2_w25q080_2_padded_checksum") MakeBoard("pimoroni_tiny2040", "rp2040", "Pimoroni", "Tiny2040", "0x2e8a", "0x100a", 500, "PIMORONI_TINY2040", 2, 0, "boot2_w25q64jv_4_padded_checksum") MakeBoard("pimoroni_tiny2350", "rp2350", "Pimoroni", "Tiny2350", "0x2e8a", "0x100b", 500, "PIMORONI_TINY2350", 4, 0, "none") diff --git a/variants/pimoroni_servo2040/pins_arduino.h b/variants/pimoroni_servo2040/pins_arduino.h new file mode 100644 index 000000000..2388100e3 --- /dev/null +++ b/variants/pimoroni_servo2040/pins_arduino.h @@ -0,0 +1,89 @@ +#pragma once + +// Pin definitions taken from: +// https://github.com/rp-rs/rp-hal-boards/blob/main/boards/pimoroni-servo2040/src/lib.rs + +// LEDs +#define PIN_LED (18u) +#define LED_BUILTIN PIN_LED + +// Digital pins +#define SERVO1 (0u) +#define SERVO2 (1u) +#define SERVO3 (2u) +#define SERVO4 (3u) +#define SERVO5 (4u) +#define SERVO6 (5u) +#define SERVO7 (6u) +#define SERVO8 (7u) +#define SERVO9 (8u) +#define SERVO10 (9u) +#define SERVO11 (10u) +#define SERVO12 (11u) +#define SERVO13 (12u) +#define SERVO14 (13u) +#define SERVO15 (14u) +#define SERVO16 (15u) +#define SERVO17 (16u) +#define SERVO18 (17u) +#define USER_SW (22u) + +// Analog pins +#define ADC_ADDR_0 (22u) +#define ADC_ADDR_1 (24u) +#define ADC_ADDR_2 (25u) +static const uint8_t A0 = (26u); +static const uint8_t A1 = (27u); +static const uint8_t A2 = (28u); +static const uint8_t A3 = (31u); +#define ADC_SHARED A3 +#define ADC_RESOLUTION 12 + +// NeoPixel +#define PIN_NEOPIXEL (15u) +//#define NEOPIXEL_POWER (11u) + +// Serial1 +#define PIN_SERIAL1_TX (31u) +#define PIN_SERIAL1_RX (31u) + +// Serial2 not pinned out +#define PIN_SERIAL2_TX (31u) +#define PIN_SERIAL2_RX (31u) + +// SPI +#define PIN_SPI0_MISO (31u) +#define PIN_SPI0_MOSI (31u) +#define PIN_SPI0_SCK (31u) +#define PIN_SPI0_SS (31u) // not pinned out +//static const uint8_t SS = PIN_SPI0_SS; // SPI Slave SS not used. Set here only for reference. +//static const uint8_t MOSI = PIN_SPI0_MOSI; +//static const uint8_t MISO = PIN_SPI0_MISO; +//static const uint8_t SCK = PIN_SPI0_SCK; + +// Not pinned out +#define PIN_SPI1_MISO (31u) +#define PIN_SPI1_MOSI (31u) +#define PIN_SPI1_SCK (31u) +#define PIN_SPI1_SS (31u) +//#define SPI_MISO (PIN_SPI1_MISO) +//#define SPI_MOSI (PIN_SPI1_MOSI) +//#define SPI_SCK (PIN_SPI1_SCK) + +// Wire +#define __WIRE0_DEVICE (i2c0) +#define PIN_WIRE0_SDA (20u) +#define PIN_WIRE0_SCL (21u) +#define SDA PIN_WIRE0_SDA +#define SCL PIN_WIRE0_SCL +#define I2C_SDA (SDA) +#define I2C_SCL (SCL) + +// Wire1 not pinned out +#define __WIRE1_DEVICE (i2c1) +#define PIN_WIRE1_SDA (31u) +#define PIN_WIRE1_SCL (31u) + +#define SERIAL_HOWMANY (0u) +#define SPI_HOWMANY (0u) +#define WIRE_HOWMANY (1u)