Skip to content

Commit 6605b6e

Browse files
New Boards: Pimoroni Blinky 2350 and Badger 2350 (#5434)
* Prepares target for Piromoni Blinky 2350 * Adds target for Piromoni Badger 2350 * Updates submodules * Removes redundant csv mention * Revert "Updates submodules" This reverts commit f05c2e1.
1 parent ec18e89 commit 6605b6e

4 files changed

Lines changed: 243 additions & 0 deletions

File tree

src/machine/board_badger2350.go

Lines changed: 113 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,113 @@
1+
//go:build badger2350
2+
3+
// Chip: RP2350A (QFN-60, 30 GPIO) -> target inherits from "rp2350".
4+
// Pin source: https://github.com/pimoroni/badger2350/blob/main/board/pins.csv
5+
//
6+
// NOTES (verify before first flash):
7+
// - POWER_EN (GPIO27) likely switches peripheral/display power.
8+
// Verify polarity against the schematic; pull HIGH early if needed,
9+
// otherwise the display will remain blank.
10+
// - CHARGE_STAT is connected to EXT_GPIO2 (I2C IO expander) according to pins.csv,
11+
// NOT the RP2350 -> intentionally not defined as a pin here.
12+
13+
package machine
14+
15+
// Crystal oscillator frequency.
16+
const xoscFreq = 12 // MHz
17+
18+
// User buttons.
19+
const (
20+
BUTTON_A Pin = GPIO7
21+
BUTTON_B Pin = GPIO9
22+
BUTTON_C Pin = GPIO10
23+
BUTTON_UP Pin = GPIO11
24+
BUTTON_DOWN Pin = GPIO6
25+
BUTTON_HOME Pin = GPIO22
26+
BUTTON_BOOT Pin = BUTTON_HOME
27+
28+
// System / RTC-related buttons.
29+
BUTTON_RESET Pin = GPIO14
30+
BUTTON_INT Pin = GPIO15
31+
)
32+
33+
// Case LEDs (4-zone mono illumination), named CL0..CL3 in the docs.
34+
const (
35+
CL0 Pin = GPIO0
36+
CL1 Pin = GPIO1
37+
CL2 Pin = GPIO2
38+
CL3 Pin = GPIO3
39+
40+
// Convention: first zone as default LED.
41+
LED = CL0
42+
)
43+
44+
// E-ink display (Inky), on SPI0.
45+
const (
46+
INKY_BUSY Pin = GPIO16
47+
INKY_CS Pin = GPIO17
48+
INKY_SCLK Pin = GPIO18
49+
INKY_MOSI Pin = GPIO19
50+
INKY_DC Pin = GPIO20
51+
INKY_RES Pin = GPIO21
52+
)
53+
54+
// SPI0 default pins == Inky bus. SDI is unused by the EPD,
55+
// but GPIO16 is a valid SPI0 RX line on the RP2350.
56+
const (
57+
SPI0_SCK_PIN = GPIO18 // INKY_SCLK
58+
SPI0_SDO_PIN = GPIO19 // INKY_MOSI
59+
SPI0_SDI_PIN = GPIO16 // (unused by the EPD)
60+
)
61+
62+
// SPI1 is not routed to any header; NoPin satisfies the machine package.
63+
const (
64+
SPI1_SCK_PIN Pin = NoPin
65+
SPI1_SDO_PIN Pin = NoPin
66+
SPI1_SDI_PIN Pin = NoPin
67+
)
68+
69+
// UART pins - default RP2350 UART0 mapping.
70+
// Note: GPIO0/GPIO1 are also CL0/CL1 (case LEDs)
71+
// Do not use UART0 and LEDs simultaneously.
72+
const (
73+
UART0_TX_PIN = GPIO0
74+
UART0_RX_PIN = GPIO1
75+
UART_TX_PIN = UART0_TX_PIN
76+
UART_RX_PIN = UART0_RX_PIN
77+
)
78+
79+
// I2C0 (Qwiic/STEMMA QT + RTC PCF85063A).
80+
const (
81+
I2C0_SDA_PIN = GPIO4
82+
I2C0_SCL_PIN = GPIO5
83+
)
84+
85+
// I2C1 is not routed to any header; NoPin satisfies the machine package.
86+
const (
87+
I2C1_SDA_PIN Pin = NoPin
88+
I2C1_SCL_PIN Pin = NoPin
89+
)
90+
91+
// Power / Sensing.
92+
const (
93+
VBUS_DETECT Pin = GPIO12
94+
RTC_ALARM Pin = GPIO13
95+
VBAT_SENSE Pin = GPIO26
96+
POWER_EN Pin = GPIO27
97+
SENSE_1V1 Pin = GPIO28
98+
99+
BATTERY = VBAT_SENSE
100+
)
101+
102+
var DefaultUART = UART0
103+
104+
// USB identifiers
105+
const (
106+
usb_STRING_PRODUCT = "Badger 2350"
107+
usb_STRING_MANUFACTURER = "Pimoroni"
108+
)
109+
110+
var (
111+
usb_VID uint16 = 0x2E8A
112+
usb_PID uint16 = 0x0005
113+
)

src/machine/board_blinky2350.go

Lines changed: 112 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,112 @@
1+
//go:build blinky2350
2+
3+
// Chip: RP2350A (QFN-60, 30 GPIO) -> target inherits from "rp2350".
4+
// Pin source: https://github.com/pimoroni/blinky2350/blob/main/board/pins.csv
5+
//
6+
// NOTES (verify before first flash):
7+
// - POWER_EN (GPIO27) likely switches peripheral power.
8+
// Verify polarity against the schematic; pull HIGH early if needed,
9+
// otherwise the display will remain blank.
10+
// - CHARGE_STAT is connected to EXT_GPIO2 (I2C IO expander) according to pins.csv,
11+
// NOT the RP2350 -> intentionally not defined as a pin here.
12+
// - The dot matrix is NOT driven via SPI (Latch/Blank/
13+
// Row-Clock are not SPI signals) -> use PIO or bit-banging.
14+
// SPI0 and SPI1 are therefore set to NoPin (required by the machine package).
15+
16+
package machine
17+
18+
// Crystal oscillator frequency.
19+
const xoscFreq = 12 // MHz
20+
21+
// User buttons.
22+
const (
23+
BUTTON_A Pin = GPIO7
24+
BUTTON_B Pin = GPIO9
25+
BUTTON_C Pin = GPIO10
26+
BUTTON_UP Pin = GPIO11
27+
BUTTON_DOWN Pin = GPIO6
28+
BUTTON_HOME Pin = GPIO22
29+
BUTTON_BOOT Pin = BUTTON_HOME
30+
31+
BUTTON_RESET Pin = GPIO14
32+
BUTTON_INT Pin = GPIO15
33+
)
34+
35+
// Case LEDs (4-zone mono illumination), named CL0..CL3 in the docs.
36+
const (
37+
CL0 Pin = GPIO0
38+
CL1 Pin = GPIO1
39+
CL2 Pin = GPIO2
40+
CL3 Pin = GPIO3
41+
42+
LED = CL0
43+
)
44+
45+
// LED dot matrix: column shift register + row driver.
46+
// NOT SPI -> drive via PIO or bit-banging.
47+
const (
48+
DISPLAY_COL_SCLK Pin = GPIO16
49+
DISPLAY_COL_DATA Pin = GPIO17
50+
DISPLAY_COL_LATCH Pin = GPIO18
51+
DISPLAY_COL_BLANK Pin = GPIO19
52+
DISPLAY_ROW_DATA Pin = GPIO20
53+
DISPLAY_ROW_CLK Pin = GPIO21
54+
)
55+
56+
// I2C0 (Qwiic/STEMMA QT + RTC).
57+
const (
58+
I2C0_SDA_PIN = GPIO4
59+
I2C0_SCL_PIN = GPIO5
60+
)
61+
62+
// I2C1 is not routed to any header; NoPin satisfies the machine package.
63+
const (
64+
I2C1_SDA_PIN Pin = NoPin
65+
I2C1_SCL_PIN Pin = NoPin
66+
)
67+
68+
// SPI pins - the LED matrix is driven via PIO/bit-banging, not SPI.
69+
// NoPin satisfies the machine package requirements.
70+
const (
71+
SPI0_SCK_PIN Pin = NoPin
72+
SPI0_SDO_PIN Pin = NoPin
73+
SPI0_SDI_PIN Pin = NoPin
74+
75+
SPI1_SCK_PIN Pin = NoPin
76+
SPI1_SDO_PIN Pin = NoPin
77+
SPI1_SDI_PIN Pin = NoPin
78+
)
79+
80+
// UART pins - default RP2350 UART0 mapping.
81+
// Note: GPIO0/GPIO1 are also CL0/CL1 (case LEDs)
82+
// Do not use UART0 and LEDs simultaneously.
83+
const (
84+
UART0_TX_PIN = GPIO0
85+
UART0_RX_PIN = GPIO1
86+
UART_TX_PIN = UART0_TX_PIN
87+
UART_RX_PIN = UART0_RX_PIN
88+
)
89+
90+
// Power / sensing.
91+
const (
92+
VBUS_DETECT Pin = GPIO12
93+
RTC_ALARM Pin = GPIO13
94+
VBAT_SENSE Pin = GPIO26
95+
POWER_EN Pin = GPIO27
96+
SENSE_1V1 Pin = GPIO28
97+
98+
BATTERY = VBAT_SENSE
99+
)
100+
101+
var DefaultUART = UART0
102+
103+
// USB identifiers
104+
const (
105+
usb_STRING_PRODUCT = "Blinky 2350"
106+
usb_STRING_MANUFACTURER = "Pimoroni"
107+
)
108+
109+
var (
110+
usb_VID uint16 = 0x2E8A
111+
usb_PID uint16 = 0x0005
112+
)

targets/badger2350.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"inherits": ["rp2350"],
3+
"build-tags": ["badger2350"],
4+
"serial-port": ["2e8a:0005"],
5+
"default-stack-size": 8192,
6+
"ldflags": [
7+
"--defsym=__flash_size=16M"
8+
]
9+
}

targets/blinky2350.json

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
{
2+
"inherits": ["rp2350"],
3+
"build-tags": ["blinky2350"],
4+
"serial-port": ["2e8a:0005"],
5+
"default-stack-size": 8192,
6+
"ldflags": [
7+
"--defsym=__flash_size=16M"
8+
]
9+
}

0 commit comments

Comments
 (0)