From 681a4c548243634df3ca50d59270d392b81b73ab Mon Sep 17 00:00:00 2001 From: Tristan Rowley Date: Thu, 19 Dec 2024 01:49:07 +0000 Subject: [PATCH] Add Pimoroni Plasma 2350, fix Plasma 2040 I2C (#2698) * my attempt at adding plasma_2040 support.. cant seem to get it working to test yet though? * Tracked+replaced files, this now works it seems! * correct serial count * Update pins_arduino.h * Rudimentary Pimoroni Plasma2350 support. * include correct files + changes needed for proper support. also!! fixes pin definitions for the i2c on Pimoroni Plasma 2350 (tested, working) and (presumably, untested) on the Plasma RP2040 too by swapping the i2c numbers. i2c now works!! * use correct USB PID for Plasma 2350 --- README.md | 1 + boards.txt | 247 ++++++++++++++++++++ package/package_pico_index.template.json | 3 + tools/json/pimoroni_plasma2350.json | 55 +++++ tools/makeboards.py | 1 + variants/pimoroni_plasma2040/pins_arduino.h | 4 +- variants/pimoroni_plasma2350/pins_arduino.h | 84 +++++++ 7 files changed, 393 insertions(+), 2 deletions(-) create mode 100644 tools/json/pimoroni_plasma2350.json create mode 100644 variants/pimoroni_plasma2350/pins_arduino.h diff --git a/README.md b/README.md index b8c0bd0..fc3326d 100644 --- a/README.md +++ b/README.md @@ -77,6 +77,7 @@ Read the [Contributing Guide](https://github.com/earlephilhower/arduino-pico/blo * Pimoroni Pico Plus 2 * Pimoroni Pico Plus 2W * Pimoroni Plasma2040 +* Pimoroni Plasma2350 * Pimoroni Tiny2040 * Pimoroni Tiny2350 * Pintronix PinMax diff --git a/boards.txt b/boards.txt index 56326e1..7cfbfef 100644 --- a/boards.txt +++ b/boards.txt @@ -22607,6 +22607,253 @@ pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_si pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool=picoprobe_cmsis_dap pimoroni_plasma2040.menu.uploadmethod.picoprobe_cmsis_dap.upload.tool.default=picoprobe_cmsis_dap +# ----------------------------------- +# Pimoroni Plasma2350 +# ----------------------------------- +pimoroni_plasma2350.name=Pimoroni Plasma2350 +pimoroni_plasma2350.vid.0=0x2e8a +pimoroni_plasma2350.pid.0=0x10a5 +pimoroni_plasma2350.vid.1=0x2e8a +pimoroni_plasma2350.pid.1=0x11a5 +pimoroni_plasma2350.vid.2=0x2e8a +pimoroni_plasma2350.pid.2=0x50a5 +pimoroni_plasma2350.vid.3=0x2e8a +pimoroni_plasma2350.pid.3=0x51a5 +pimoroni_plasma2350.vid.4=0x2e8a +pimoroni_plasma2350.pid.4=0x90a5 +pimoroni_plasma2350.vid.5=0x2e8a +pimoroni_plasma2350.pid.5=0x91a5 +pimoroni_plasma2350.vid.6=0x2e8a +pimoroni_plasma2350.pid.6=0xd0a5 +pimoroni_plasma2350.vid.7=0x2e8a +pimoroni_plasma2350.pid.7=0xd1a5 +pimoroni_plasma2350.upload_port.0.vid=0x2e8a +pimoroni_plasma2350.upload_port.0.pid=0x10a5 +pimoroni_plasma2350.upload_port.1.vid=0x2e8a +pimoroni_plasma2350.upload_port.1.pid=0x11a5 +pimoroni_plasma2350.upload_port.2.vid=0x2e8a +pimoroni_plasma2350.upload_port.2.pid=0x50a5 +pimoroni_plasma2350.upload_port.3.vid=0x2e8a +pimoroni_plasma2350.upload_port.3.pid=0x51a5 +pimoroni_plasma2350.upload_port.4.vid=0x2e8a +pimoroni_plasma2350.upload_port.4.pid=0x90a5 +pimoroni_plasma2350.upload_port.5.vid=0x2e8a +pimoroni_plasma2350.upload_port.5.pid=0x91a5 +pimoroni_plasma2350.upload_port.6.vid=0x2e8a +pimoroni_plasma2350.upload_port.6.pid=0xd0a5 +pimoroni_plasma2350.upload_port.7.vid=0x2e8a +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.variant=pimoroni_plasma2350 +pimoroni_plasma2350.upload.maximum_size=2097152 +pimoroni_plasma2350.upload.wait_for_upload_port=true +pimoroni_plasma2350.upload.erase_cmd= +pimoroni_plasma2350.serial.disableDTR=false +pimoroni_plasma2350.serial.disableRTS=false +pimoroni_plasma2350.build.f_cpu=125000000 +pimoroni_plasma2350.build.led= +pimoroni_plasma2350.build.core=rp2040 +pimoroni_plasma2350.build.ldscript=memmap_default.ld +pimoroni_plasma2350.build.boot2=none +pimoroni_plasma2350.build.usb_manufacturer="Pimoroni" +pimoroni_plasma2350.build.usb_product="Plasma2350" +pimoroni_plasma2350.build.psram_length=0x000000 +pimoroni_plasma2350.menu.flash.2097152_0=2MB (no FS) +pimoroni_plasma2350.menu.flash.2097152_0.upload.maximum_size=2088960 +pimoroni_plasma2350.menu.flash.2097152_0.build.flash_total=2097152 +pimoroni_plasma2350.menu.flash.2097152_0.build.flash_length=2088960 +pimoroni_plasma2350.menu.flash.2097152_0.build.eeprom_start=270524416 +pimoroni_plasma2350.menu.flash.2097152_0.build.fs_start=270524416 +pimoroni_plasma2350.menu.flash.2097152_0.build.fs_end=270524416 +pimoroni_plasma2350.menu.flash.2097152_65536=2MB (Sketch: 1984KB, FS: 64KB) +pimoroni_plasma2350.menu.flash.2097152_65536.upload.maximum_size=2023424 +pimoroni_plasma2350.menu.flash.2097152_65536.build.flash_total=2097152 +pimoroni_plasma2350.menu.flash.2097152_65536.build.flash_length=2023424 +pimoroni_plasma2350.menu.flash.2097152_65536.build.eeprom_start=270524416 +pimoroni_plasma2350.menu.flash.2097152_65536.build.fs_start=270458880 +pimoroni_plasma2350.menu.flash.2097152_65536.build.fs_end=270524416 +pimoroni_plasma2350.menu.flash.2097152_131072=2MB (Sketch: 1920KB, FS: 128KB) +pimoroni_plasma2350.menu.flash.2097152_131072.upload.maximum_size=1957888 +pimoroni_plasma2350.menu.flash.2097152_131072.build.flash_total=2097152 +pimoroni_plasma2350.menu.flash.2097152_131072.build.flash_length=1957888 +pimoroni_plasma2350.menu.flash.2097152_131072.build.eeprom_start=270524416 +pimoroni_plasma2350.menu.flash.2097152_131072.build.fs_start=270393344 +pimoroni_plasma2350.menu.flash.2097152_131072.build.fs_end=270524416 +pimoroni_plasma2350.menu.flash.2097152_262144=2MB (Sketch: 1792KB, FS: 256KB) +pimoroni_plasma2350.menu.flash.2097152_262144.upload.maximum_size=1826816 +pimoroni_plasma2350.menu.flash.2097152_262144.build.flash_total=2097152 +pimoroni_plasma2350.menu.flash.2097152_262144.build.flash_length=1826816 +pimoroni_plasma2350.menu.flash.2097152_262144.build.eeprom_start=270524416 +pimoroni_plasma2350.menu.flash.2097152_262144.build.fs_start=270262272 +pimoroni_plasma2350.menu.flash.2097152_262144.build.fs_end=270524416 +pimoroni_plasma2350.menu.flash.2097152_524288=2MB (Sketch: 1536KB, FS: 512KB) +pimoroni_plasma2350.menu.flash.2097152_524288.upload.maximum_size=1564672 +pimoroni_plasma2350.menu.flash.2097152_524288.build.flash_total=2097152 +pimoroni_plasma2350.menu.flash.2097152_524288.build.flash_length=1564672 +pimoroni_plasma2350.menu.flash.2097152_524288.build.eeprom_start=270524416 +pimoroni_plasma2350.menu.flash.2097152_524288.build.fs_start=270000128 +pimoroni_plasma2350.menu.flash.2097152_524288.build.fs_end=270524416 +pimoroni_plasma2350.menu.flash.2097152_1048576=2MB (Sketch: 1MB, FS: 1MB) +pimoroni_plasma2350.menu.flash.2097152_1048576.upload.maximum_size=1040384 +pimoroni_plasma2350.menu.flash.2097152_1048576.build.flash_total=2097152 +pimoroni_plasma2350.menu.flash.2097152_1048576.build.flash_length=1040384 +pimoroni_plasma2350.menu.flash.2097152_1048576.build.eeprom_start=270524416 +pimoroni_plasma2350.menu.flash.2097152_1048576.build.fs_start=269475840 +pimoroni_plasma2350.menu.flash.2097152_1048576.build.fs_end=270524416 +pimoroni_plasma2350.menu.arch.arm=ARM +pimoroni_plasma2350.menu.arch.arm.build.chip=rp2350 +pimoroni_plasma2350.menu.arch.arm.build.toolchain=arm-none-eabi +pimoroni_plasma2350.menu.arch.arm.build.toolchainpkg=pqt-gcc +pimoroni_plasma2350.menu.arch.arm.build.toolchainopts=-mcpu=cortex-m33 -mthumb -march=armv8-m.main+fp+dsp -mfloat-abi=softfp -mcmse +pimoroni_plasma2350.menu.arch.arm.build.uf2family=--family rp2350-arm-s --abs-block +pimoroni_plasma2350.menu.arch.arm.build.mcu=cortex-m33 +pimoroni_plasma2350.menu.arch.riscv=RISC-V +pimoroni_plasma2350.menu.arch.riscv.build.chip=rp2350-riscv +pimoroni_plasma2350.menu.arch.riscv.build.toolchain=riscv32-unknown-elf +pimoroni_plasma2350.menu.arch.riscv.build.toolchainpkg=pqt-gcc-riscv +pimoroni_plasma2350.menu.arch.riscv.build.toolchainopts=-march=rv32imac_zicsr_zifencei_zba_zbb_zbs_zbkb -mabi=ilp32 +pimoroni_plasma2350.menu.arch.riscv.build.uf2family=--family rp2350-riscv --abs-block +pimoroni_plasma2350.menu.arch.riscv.build.mcu=rv32imac +pimoroni_plasma2350.menu.freq.150=150 MHz +pimoroni_plasma2350.menu.freq.150.build.f_cpu=150000000L +pimoroni_plasma2350.menu.freq.50=50 MHz +pimoroni_plasma2350.menu.freq.50.build.f_cpu=50000000L +pimoroni_plasma2350.menu.freq.100=100 MHz +pimoroni_plasma2350.menu.freq.100.build.f_cpu=100000000L +pimoroni_plasma2350.menu.freq.120=120 MHz +pimoroni_plasma2350.menu.freq.120.build.f_cpu=120000000L +pimoroni_plasma2350.menu.freq.125=125 MHz +pimoroni_plasma2350.menu.freq.125.build.f_cpu=125000000L +pimoroni_plasma2350.menu.freq.128=128 MHz +pimoroni_plasma2350.menu.freq.128.build.f_cpu=128000000L +pimoroni_plasma2350.menu.freq.133=133 MHz +pimoroni_plasma2350.menu.freq.133.build.f_cpu=133000000L +pimoroni_plasma2350.menu.freq.175=175 MHz (Overclock) +pimoroni_plasma2350.menu.freq.175.build.f_cpu=175000000L +pimoroni_plasma2350.menu.freq.200=200 MHz (Overclock) +pimoroni_plasma2350.menu.freq.200.build.f_cpu=200000000L +pimoroni_plasma2350.menu.freq.225=225 MHz (Overclock) +pimoroni_plasma2350.menu.freq.225.build.f_cpu=225000000L +pimoroni_plasma2350.menu.freq.240=240 MHz (Overclock) +pimoroni_plasma2350.menu.freq.240.build.f_cpu=240000000L +pimoroni_plasma2350.menu.freq.250=250 MHz (Overclock) +pimoroni_plasma2350.menu.freq.250.build.f_cpu=250000000L +pimoroni_plasma2350.menu.freq.275=275 MHz (Overclock) +pimoroni_plasma2350.menu.freq.275.build.f_cpu=275000000L +pimoroni_plasma2350.menu.freq.300=300 MHz (Overclock) +pimoroni_plasma2350.menu.freq.300.build.f_cpu=300000000L +pimoroni_plasma2350.menu.opt.Small=Small (-Os) (standard) +pimoroni_plasma2350.menu.opt.Small.build.flags.optimize=-Os +pimoroni_plasma2350.menu.opt.Optimize=Optimize (-O) +pimoroni_plasma2350.menu.opt.Optimize.build.flags.optimize=-O +pimoroni_plasma2350.menu.opt.Optimize2=Optimize More (-O2) +pimoroni_plasma2350.menu.opt.Optimize2.build.flags.optimize=-O2 +pimoroni_plasma2350.menu.opt.Optimize3=Optimize Even More (-O3) +pimoroni_plasma2350.menu.opt.Optimize3.build.flags.optimize=-O3 +pimoroni_plasma2350.menu.opt.Fast=Fast (-Ofast) (maybe slower) +pimoroni_plasma2350.menu.opt.Fast.build.flags.optimize=-Ofast +pimoroni_plasma2350.menu.opt.Debug=Debug (-Og) +pimoroni_plasma2350.menu.opt.Debug.build.flags.optimize=-Og +pimoroni_plasma2350.menu.opt.Disabled=Disabled (-O0) +pimoroni_plasma2350.menu.opt.Disabled.build.flags.optimize=-O0 +pimoroni_plasma2350.menu.profile.Disabled=Disabled +pimoroni_plasma2350.menu.profile.Disabled.build.flags.profile= +pimoroni_plasma2350.menu.profile.Enabled=Enabled +pimoroni_plasma2350.menu.profile.Enabled.build.flags.profile=-pg -D__PROFILE +pimoroni_plasma2350.menu.rtti.Disabled=Disabled +pimoroni_plasma2350.menu.rtti.Disabled.build.flags.rtti=-fno-rtti +pimoroni_plasma2350.menu.rtti.Enabled=Enabled +pimoroni_plasma2350.menu.rtti.Enabled.build.flags.rtti= +pimoroni_plasma2350.menu.stackprotect.Disabled=Disabled +pimoroni_plasma2350.menu.stackprotect.Disabled.build.flags.stackprotect= +pimoroni_plasma2350.menu.stackprotect.Enabled=Enabled +pimoroni_plasma2350.menu.stackprotect.Enabled.build.flags.stackprotect=-fstack-protector +pimoroni_plasma2350.menu.exceptions.Disabled=Disabled +pimoroni_plasma2350.menu.exceptions.Disabled.build.flags.exceptions=-fno-exceptions +pimoroni_plasma2350.menu.exceptions.Disabled.build.flags.libstdcpp=-lstdc++ +pimoroni_plasma2350.menu.exceptions.Enabled=Enabled +pimoroni_plasma2350.menu.exceptions.Enabled.build.flags.exceptions=-fexceptions +pimoroni_plasma2350.menu.exceptions.Enabled.build.flags.libstdcpp=-lstdc++-exc +pimoroni_plasma2350.menu.dbgport.Disabled=Disabled +pimoroni_plasma2350.menu.dbgport.Disabled.build.debug_port= +pimoroni_plasma2350.menu.dbgport.Serial=Serial +pimoroni_plasma2350.menu.dbgport.Serial.build.debug_port=-DDEBUG_RP2040_PORT=Serial +pimoroni_plasma2350.menu.dbgport.Serial1=Serial1 +pimoroni_plasma2350.menu.dbgport.Serial1.build.debug_port=-DDEBUG_RP2040_PORT=Serial1 +pimoroni_plasma2350.menu.dbgport.Serial2=Serial2 +pimoroni_plasma2350.menu.dbgport.Serial2.build.debug_port=-DDEBUG_RP2040_PORT=Serial2 +pimoroni_plasma2350.menu.dbgport.SerialSemi=SerialSemi +pimoroni_plasma2350.menu.dbgport.SerialSemi.build.debug_port=-DDEBUG_RP2040_PORT=SerialSemi +pimoroni_plasma2350.menu.dbglvl.None=None +pimoroni_plasma2350.menu.dbglvl.None.build.debug_level= +pimoroni_plasma2350.menu.dbglvl.Core=Core +pimoroni_plasma2350.menu.dbglvl.Core.build.debug_level=-DDEBUG_RP2040_CORE +pimoroni_plasma2350.menu.dbglvl.SPI=SPI +pimoroni_plasma2350.menu.dbglvl.SPI.build.debug_level=-DDEBUG_RP2040_SPI +pimoroni_plasma2350.menu.dbglvl.Wire=Wire +pimoroni_plasma2350.menu.dbglvl.Wire.build.debug_level=-DDEBUG_RP2040_WIRE +pimoroni_plasma2350.menu.dbglvl.Bluetooth=Bluetooth +pimoroni_plasma2350.menu.dbglvl.Bluetooth.build.debug_level=-DDEBUG_RP2040_BLUETOOTH +pimoroni_plasma2350.menu.dbglvl.All=All +pimoroni_plasma2350.menu.dbglvl.All.build.debug_level=-DDEBUG_RP2040_WIRE -DDEBUG_RP2040_SPI -DDEBUG_RP2040_CORE -DDEBUG_RP2040_BLUETOOTH +pimoroni_plasma2350.menu.dbglvl.NDEBUG=NDEBUG +pimoroni_plasma2350.menu.dbglvl.NDEBUG.build.debug_level=-DNDEBUG +pimoroni_plasma2350.menu.usbstack.picosdk=Pico SDK +pimoroni_plasma2350.menu.usbstack.picosdk.build.usbstack_flags= +pimoroni_plasma2350.menu.usbstack.tinyusb=Adafruit TinyUSB +pimoroni_plasma2350.menu.usbstack.tinyusb.build.usbstack_flags=-DUSE_TINYUSB "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +pimoroni_plasma2350.menu.usbstack.tinyusb_host=Adafruit TinyUSB Host (native) +pimoroni_plasma2350.menu.usbstack.tinyusb_host.build.usbstack_flags=-DUSE_TINYUSB -DUSE_TINYUSB_HOST "-I{runtime.platform.path}/libraries/Adafruit_TinyUSB_Arduino/src/arduino" +pimoroni_plasma2350.menu.usbstack.nousb=No USB +pimoroni_plasma2350.menu.usbstack.nousb.build.usbstack_flags="-DNO_USB -DDISABLE_USB_SERIAL -I{runtime.platform.path}/tools/libpico" +pimoroni_plasma2350.menu.ipbtstack.ipv4only=IPv4 Only +pimoroni_plasma2350.menu.ipbtstack.ipv4only.build.libpicow=libipv4.a +pimoroni_plasma2350.menu.ipbtstack.ipv4only.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6=IPv4 + IPv6 +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6.build.libpicow=libipv4-ipv6.a +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 +pimoroni_plasma2350.menu.ipbtstack.ipv4btcble=IPv4 + Bluetooth +pimoroni_plasma2350.menu.ipbtstack.ipv4btcble.build.libpicow=libipv4-bt.a +pimoroni_plasma2350.menu.ipbtstack.ipv4btcble.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6btcble=IPv4 + IPv6 + Bluetooth +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicow=libipv4-ipv6-bt.a +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6btcble.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 +pimoroni_plasma2350.menu.ipbtstack.ipv4onlybig=IPv4 Only - 32K +pimoroni_plasma2350.menu.ipbtstack.ipv4onlybig.build.libpicow=libipv4-big.a +pimoroni_plasma2350.menu.ipbtstack.ipv4onlybig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6big=IPv4 + IPv6 - 32K +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6big.build.libpicow=libipv4-ipv6-big.a +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6big.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -D__LWIP_MEMMULT=2 +pimoroni_plasma2350.menu.ipbtstack.ipv4btcblebig=IPv4 + Bluetooth - 32K +pimoroni_plasma2350.menu.ipbtstack.ipv4btcblebig.build.libpicow=libipv4-bt-big.a +pimoroni_plasma2350.menu.ipbtstack.ipv4btcblebig.build.libpicowdefs=-DLWIP_IPV6=0 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6btcblebig=IPv4 + IPv6 + Bluetooth - 32K +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicow=libipv4-ipv6-bt-big.a +pimoroni_plasma2350.menu.ipbtstack.ipv4ipv6btcblebig.build.libpicowdefs=-DLWIP_IPV6=1 -DLWIP_IPV4=1 -DENABLE_CLASSIC=1 -DENABLE_BLE=1 -D__LWIP_MEMMULT=2 +pimoroni_plasma2350.menu.uploadmethod.default=Default (UF2) +pimoroni_plasma2350.menu.uploadmethod.default.build.ram_length=512k +pimoroni_plasma2350.menu.uploadmethod.default.build.debugscript=picoprobe_cmsis_dap.tcl +pimoroni_plasma2350.menu.uploadmethod.default.upload.maximum_data_size=524288 +pimoroni_plasma2350.menu.uploadmethod.default.upload.tool=uf2conv +pimoroni_plasma2350.menu.uploadmethod.default.upload.tool.default=uf2conv +pimoroni_plasma2350.menu.uploadmethod.default.upload.tool.network=uf2conv-network +pimoroni_plasma2350.menu.uploadmethod.picotool=Picotool +pimoroni_plasma2350.menu.uploadmethod.picotool.build.ram_length=512k +pimoroni_plasma2350.menu.uploadmethod.picotool.build.debugscript=picoprobe.tcl +pimoroni_plasma2350.menu.uploadmethod.picotool.build.picodebugflags=-DENABLE_PICOTOOL_USB +pimoroni_plasma2350.menu.uploadmethod.picotool.upload.maximum_data_size=524288 +pimoroni_plasma2350.menu.uploadmethod.picotool.upload.tool=picotool +pimoroni_plasma2350.menu.uploadmethod.picotool.upload.tool.default=picotool +pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap=Picoprobe/Debugprobe (CMSIS-DAP) +pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.build.ram_length=512k +pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.build.debugscript=picoprobe_cmsis_dap.tcl +pimoroni_plasma2350.menu.uploadmethod.picoprobe_cmsis_dap.upload.maximum_data_size=524288 +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 Tiny2040 # ----------------------------------- diff --git a/package/package_pico_index.template.json b/package/package_pico_index.template.json index df3fbcf..9dac807 100644 --- a/package/package_pico_index.template.json +++ b/package/package_pico_index.template.json @@ -248,6 +248,9 @@ { "name": "Pimoroni Plasma2040" }, + { + "name": "Pimoroni Plasma2350" + }, { "name": "Pimoroni Tiny2040" }, diff --git a/tools/json/pimoroni_plasma2350.json b/tools/json/pimoroni_plasma2350.json new file mode 100644 index 0000000..de15346 --- /dev/null +++ b/tools/json/pimoroni_plasma2350.json @@ -0,0 +1,55 @@ +{ + "build": { + "arduino": { + "earlephilhower": { + "boot2_source": "none.S", + "usb_vid": "0x2E8A", + "usb_pid": "0x10A5" + } + }, + "core": "earlephilhower", + "cpu": "cortex-m33", + "extra_flags": "-DARDUINO_PIMORONI_PLASMA2040 -DARDUINO_ARCH_RP2040 -DUSBD_MAX_POWER_MA=500 ", + "f_cpu": "150000000L", + "hwids": [ + [ + "0x2E8A", + "0x00C0" + ], + [ + "0x2E8A", + "0x10A5" + ] + ], + "mcu": "rp2350", + "variant": "pimoroni_plasma2350" + }, + "debug": { + "jlink_device": "RP2350_0", + "openocd_target": "rp2350.cfg", + "svd_path": "rp2350.svd" + }, + "frameworks": [ + "arduino" + ], + "name": "Plasma2350", + "upload": { + "maximum_ram_size": 524288, + "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 0fd1c9c..12be763 100755 --- a/tools/makeboards.py +++ b/tools/makeboards.py @@ -620,6 +620,7 @@ MakeBoard("pimoroni_pga2350", "rp2350", "Pimoroni", "PGA2350", "0x2e8a", "0x1018 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_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_plasma2040/pins_arduino.h b/variants/pimoroni_plasma2040/pins_arduino.h index 0e953e5..b193f87 100644 --- a/variants/pimoroni_plasma2040/pins_arduino.h +++ b/variants/pimoroni_plasma2040/pins_arduino.h @@ -64,7 +64,7 @@ static const uint8_t A3 = (31u); //#define SPI_SCK (PIN_SPI1_SCK) // Wire -#define __WIRE0_DEVICE (i2c1) +#define __WIRE0_DEVICE (i2c0) #define PIN_WIRE0_SDA (20u) #define PIN_WIRE0_SCL (21u) #define SDA PIN_WIRE0_SDA @@ -73,7 +73,7 @@ static const uint8_t A3 = (31u); #define I2C_SCL (SCL) // Wire1 not pinned out -#define __WIRE1_DEVICE (i2c0) +#define __WIRE1_DEVICE (i2c1) #define PIN_WIRE1_SDA (31u) #define PIN_WIRE1_SCL (31u) diff --git a/variants/pimoroni_plasma2350/pins_arduino.h b/variants/pimoroni_plasma2350/pins_arduino.h new file mode 100644 index 0000000..d14b6f4 --- /dev/null +++ b/variants/pimoroni_plasma2350/pins_arduino.h @@ -0,0 +1,84 @@ +#pragma once + +// Pin definitions taken from: +// https://github.com/rp-rs/rp-hal-boards/blob/main/boards/pimoroni-plasma-2040/src/lib.rs + +// LEDs +#define PIN_LED (16u) +#define PIN_LED_R (16u) +#define PIN_LED_G (17u) +#define PIN_LED_B (18u) +#define LED_BUILTIN PIN_LED + +// Digital pins +#if 0 +static const uint8_t D0 = (26u); +static const uint8_t D1 = (27u); +static const uint8_t D2 = (28u); +static const uint8_t D3 = (29u); +static const uint8_t D4 = (6u); +static const uint8_t D5 = (7u); +static const uint8_t D6 = (0u); +static const uint8_t D7 = (1u); +static const uint8_t D8 = (2u); +static const uint8_t D9 = (4u); +static const uint8_t D10 = (3u); +#endif + +// Analog pins +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_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; +// +// #define SS PIN_SPI0_SS + +// 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)