Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
8 changes: 8 additions & 0 deletions .github/workflows/cmake.yml
Original file line number Diff line number Diff line change
Expand Up @@ -56,6 +56,14 @@ jobs:
cmake-args: -D32BLIT_DIR=$GITHUB_WORKSPACE -DPICO_SDK_PATH=$GITHUB_WORKSPACE/pico-sdk -DPICO_BOARD=pimoroni_picovision -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
apt-packages: ccache gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib

- os: ubuntu-22.04
pico-sdk: true
name: Tufty 2350 (.blit)
cache-key: tufty2350-bl
release-suffix: Tufty2350-blit
cmake-args: -D32BLIT_DIR=$GITHUB_WORKSPACE -DPICO_SDK_PATH=$GITHUB_WORKSPACE/pico-sdk -DPICO_BOARD=pimoroni_tufty2350 -DBLIT_EXECUTABLE_PICO_BLIT=1 -DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache
apt-packages: ccache gcc-arm-none-eabi libnewlib-arm-none-eabi libstdc++-arm-none-eabi-newlib python3-setuptools

- os: ubuntu-22.04
name: MinGW
cache-key: mingw
Expand Down
8 changes: 7 additions & 1 deletion 32blit-pico/CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,6 @@ target_sources(BlitHalPico INTERFACE
${CMAKE_CURRENT_LIST_DIR}/blit_launch.cpp
${CMAKE_CURRENT_LIST_DIR}/display.cpp
${CMAKE_CURRENT_LIST_DIR}/file.cpp
${CMAKE_CURRENT_LIST_DIR}/led.cpp
${CMAKE_CURRENT_LIST_DIR}/main.cpp
${CMAKE_CURRENT_LIST_DIR}/multiplayer.cpp
${CMAKE_CURRENT_LIST_DIR}/overlay.cpp
Expand Down Expand Up @@ -59,10 +58,17 @@ target_sources(BlitHalPico INTERFACE
${CMAKE_CURRENT_LIST_DIR}/audio/${BLIT_AUDIO_DRIVER}.cpp
${CMAKE_CURRENT_LIST_DIR}/display/${BLIT_DISPLAY_DRIVER}.cpp
${CMAKE_CURRENT_LIST_DIR}/input/${BLIT_INPUT_DRIVER}.cpp
${CMAKE_CURRENT_LIST_DIR}/led/${BLIT_LED_DRIVER}.cpp
${CMAKE_CURRENT_LIST_DIR}/storage/${BLIT_STORAGE_DRIVER}.cpp
${CMAKE_CURRENT_LIST_DIR}/usb/${BLIT_USB_DRIVER}.cpp
)

# pull in powman code so the thing can be turned off...
if(PICO_BOARD STREQUAL "pimoroni_tufty2350")
list(APPEND BLIT_BOARD_LIBRARIES hardware_powman)
target_sources(BlitHalPico INTERFACE ${CMAKE_CURRENT_LIST_DIR}/board/pimoroni_tufty2350/powman.c)
endif()

if(BLIT_ENABLE_CORE1)
list(APPEND BLIT_BOARD_DEFINITIONS ENABLE_CORE1)
endif()
Expand Down
3 changes: 3 additions & 0 deletions 32blit-pico/board-config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -49,6 +49,9 @@ endif()
if(NOT BLIT_INPUT_DRIVER)
set(BLIT_INPUT_DRIVER "none")
endif()
if(NOT BLIT_LED_DRIVER)
set(BLIT_LED_DRIVER "none")
endif()
if(NOT BLIT_STORAGE_DRIVER)
set(BLIT_STORAGE_DRIVER "flash")
endif()
Expand Down
1 change: 1 addition & 0 deletions 32blit-pico/board/display_pack/config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ set(BLIT_BOARD_NAME "Display Pack")

blit_driver(display dbi)
blit_driver(input gpio)
blit_driver(led pwm)
1 change: 1 addition & 0 deletions 32blit-pico/board/display_pack_2/config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ set(BLIT_BOARD_NAME "Display Pack 2.0")

blit_driver(display dbi)
blit_driver(input gpio)
blit_driver(led pwm)
1 change: 1 addition & 0 deletions 32blit-pico/board/display_pack_2_8/config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -2,3 +2,4 @@ set(BLIT_BOARD_NAME "Display Pack 2.8")

blit_driver(display dbi)
blit_driver(input gpio)
blit_driver(led pwm)
1 change: 1 addition & 0 deletions 32blit-pico/board/pimoroni_picosystem/config.cmake
Original file line number Diff line number Diff line change
Expand Up @@ -12,3 +12,4 @@ set(BLIT_BOARD_DEFINITIONS
blit_driver(audio beep)
blit_driver(display dbi)
blit_driver(input gpio)
blit_driver(led pwm)
169 changes: 169 additions & 0 deletions 32blit-pico/board/pimoroni_tufty2350.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,169 @@
/*
* Copyright (c) 2024 Raspberry Pi (Trading) Ltd.
*
* SPDX-License-Identifier: BSD-3-Clause
*/

// -----------------------------------------------------
// NOTE: THIS HEADER IS ALSO INCLUDED BY ASSEMBLER SO
// SHOULD ONLY CONSIST OF PREPROCESSOR DIRECTIVES
// -----------------------------------------------------

// pico_cmake_set PICO_PLATFORM=rp2350
// pico_cmake_set PICO_CYW43_SUPPORTED = 1

#ifndef _BOARDS_PICO2_W_H
#define _BOARDS_PICO2_W_H

#define PIMORONI_TUFTY2350

//#define PICO_PANIC_FUNCTION mp_pico_panic

// Board config
// RTC = PCF85063e
#define BW_RTC_I2C i2c0
#define BW_RTC_ADDR (0x51)
#define BW_RTC_I2C_SDA (4)
#define BW_RTC_I2C_SCL (5)

// Rear white LEDs
#define BW_LED_0 (0)
#define BW_LED_1 (1)
#define BW_LED_2 (2)
#define BW_LED_3 (3)

// PSRAM
#define BW_PSRAM_CS (8)

// User inputs
#define BW_SWITCH_A (7)
#define BW_SWITCH_B (9)
#define BW_SWITCH_C (10)
#define BW_SWITCH_UP (11)
#define BW_SWITCH_DOWN (6)

// This is wired to the RESET (Disk / Sleep / Reset / Power On)
// button and used to determine long press status
#define BW_RESET_SW (14) // No pull, active high?

// I2C power for talking to RTC
#define BW_SW_POWER_EN (41)

// Interrupt channels for GPIO wakeup
#define BW_VBUS_DETECT (12) // No pull, active high?
#define BW_RTC_ALARM (13) // Pull up, active low
#define BW_SWITCH_HOME (22) // AKA boot
#define BW_SWITCH_INT (15) // Pull up, active low
#define BW_SWITCH_MASK ((1 << BW_SWITCH_A) | (1 << BW_SWITCH_B) | (1 << BW_SWITCH_C) | (1 << BW_SWITCH_UP) | (1 << BW_SWITCH_DOWN))

// 250 MHz - Working, but not tested on enough boards to fully verify.
// ./build/micropython/lib/pico-sdk/src/rp2_common/hardware_clocks/scripts/vcocalc.py --cmake 250
/*
#define PLL_SYS_REFDIV (1)
#define PLL_SYS_VCO_FREQ_HZ (1500000000)
#define PLL_SYS_POSTDIV1 (6)
#define PLL_SYS_POSTDIV2 (1)
#define SYS_CLK_HZ (250000000)
*/

// 200 MHz - Most of our testing was done at 200MHz.
// ./build/micropython/lib/pico-sdk/src/rp2_common/hardware_clocks/scripts/vcocalc.py --cmake 200
#define PLL_SYS_REFDIV (1)
#define PLL_SYS_VCO_FREQ_HZ (1200000000)
#define PLL_SYS_POSTDIV1 (6)
#define PLL_SYS_POSTDIV2 (1)
#define SYS_CLK_HZ (200000000)

// Support 250MHz if user manually overclocks
#define CYW43_PIO_CLOCK_DIV_INT 3

// --- RP2350 VARIANT ---
// not PICO_RP2350A

// --- UART ---
// no PICO_DEFAULT_UART
// no PICO_DEFAULT_UART_TX_PIN
// no PICO_DEFAULT_UART_RX_PIN

// --- LED ---
// no PICO_DEFAULT_LED_PIN - LED is on Wireless chip
// no PICO_DEFAULT_WS2812_PIN

// --- I2C ---
#ifndef PICO_DEFAULT_I2C
#define PICO_DEFAULT_I2C 0
#endif
#ifndef PICO_DEFAULT_I2C_SDA_PIN
#define PICO_DEFAULT_I2C_SDA_PIN BW_RTC_I2C_SDA
#endif
#ifndef PICO_DEFAULT_I2C_SCL_PIN
#define PICO_DEFAULT_I2C_SCL_PIN BW_RTC_I2C_SCL
#endif

// --- SPI ---
// no PICO_DEFAULT_SPI
// no PICO_DEFAULT_SPI_SCK_PIN
// no PICO_DEFAULT_SPI_TX_PIN
// no PICO_DEFAULT_SPI_RX_PIN
// no PICO_DEFAULT_SPI_CSN_PIN

// --- FLASH ---

#define PICO_BOOT_STAGE2_CHOOSE_W25Q080 1

#ifndef PICO_FLASH_SPI_CLKDIV
#define PICO_FLASH_SPI_CLKDIV 2
#endif

// pico_cmake_set_default PICO_FLASH_SIZE_BYTES = (16 * 1024 * 1024)
#ifndef PICO_FLASH_SIZE_BYTES
#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024)
#endif

// --- CYW43 ---

#ifndef CYW43_WL_GPIO_COUNT
#define CYW43_WL_GPIO_COUNT 3
#endif

// pico_cmake_set_default PICO_RP2350_A2_SUPPORTED = 1
#ifndef PICO_RP2350_A2_SUPPORTED
#define PICO_RP2350_A2_SUPPORTED 1
#endif

// cyw43 SPI pins can't be changed at runtime
#ifndef CYW43_PIN_WL_DYNAMIC
#define CYW43_PIN_WL_DYNAMIC 0
#endif

// gpio pin to power up the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_REG_ON
#define CYW43_DEFAULT_PIN_WL_REG_ON 23u
#endif

// gpio pin for spi data out to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_DATA_OUT
#define CYW43_DEFAULT_PIN_WL_DATA_OUT 24u
#endif

// gpio pin for spi data in from the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_DATA_IN
#define CYW43_DEFAULT_PIN_WL_DATA_IN 24u
#endif

// gpio (irq) pin for the irq line from the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_HOST_WAKE
#define CYW43_DEFAULT_PIN_WL_HOST_WAKE 24u
#endif

// gpio pin for the spi clock line to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_CLOCK
#define CYW43_DEFAULT_PIN_WL_CLOCK 29u
#endif

// gpio pin for the spi chip select to the cyw43 chip
#ifndef CYW43_DEFAULT_PIN_WL_CS
#define CYW43_DEFAULT_PIN_WL_CS 25u
#endif

#endif
5 changes: 5 additions & 0 deletions 32blit-pico/board/pimoroni_tufty2350/config.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
set(BLIT_BOARD_NAME "Tufty 2350")

blit_driver(display dbi)
blit_driver(input gpio)
blit_driver(led pwm_mono)
33 changes: 33 additions & 0 deletions 32blit-pico/board/pimoroni_tufty2350/config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
#pragma once

#define BUTTON_UP_PIN 11
#define BUTTON_DOWN_PIN 6
#define BUTTON_A_PIN 7
#define BUTTON_B_PIN 9
#define BUTTON_X_PIN 10 // C
#define BUTTON_HOME_PIN 22

#define DISPLAY_ST7789

#define DBI_8BIT
#define LCD_ROTATION 270
#define LCD_CS_PIN 27
#define LCD_DC_PIN 28
#define LCD_SCK_PIN 30 // WR
#define LCD_RD_PIN 31
#define LCD_MOSI_PIN 32 // DB0
#define LCD_BACKLIGHT_PIN 26
#define LCD_VSYNC_PIN 21
#define LCD_MAX_CLOCK 15000000

#define LCD_TRANSPOSE 1

#define DEFAULT_I2C_CLOCK 400000

#define LED_MONO_PINS 0, 1, 2, 3

#define USB_VENDOR_ID 0x2E8A
#define USB_PRODUCT_ID 0x1101

#define USB_VENDOR_STR "Pimoroni"
#define USB_PRODUCT_STR "Tufty 2350"
Loading
Loading