From 7ee36e332888de73c795abf606d2017e0ae7bdbb Mon Sep 17 00:00:00 2001 From: Graham Sanderson Date: Mon, 1 Mar 2021 09:59:05 -0600 Subject: [PATCH] Rationalize board header pin defines, and add partner board headers (#192) * Board definition header files for the iniital set of SparkFun rp2040 boards * Add default PICO_DEFAULT_I2C*, allow no PICO_DEFAULT_LED_PIN, no PICO_DEFAULT_UART* (instead of -1) Fixup SparkFun headers * Pimoroni board headers * Add LED related board defines PICO_CONFIGs (to pico_stdlib for now) * more board config changes * add Adafruit feather, itsybitsy, qtpy board headers * add PICO_DEFAULT_WS2812_POWER_PIN define * MOSI/MISO -> TX/RX, some UART cleanup.. make vgaboard.h defines take preference over pico.h ones * local change to tinyusb to cope with no default LED or UART * fix review issues Co-authored-by: Kirk Benell Co-authored-by: ZodiusInfuser Co-authored-by: hathach --- .../include/boards/adafruit_feather_rp2040.h | 88 +++++++++++ .../boards/adafruit_itsybitsy_rp2040.h | 92 +++++++++++ .../include/boards/adafruit_qtpy_rp2040.h | 91 +++++++++++ src/boards/include/boards/pico.h | 18 ++- .../include/boards/pimoroni_keybow2040.h | 132 ++++++++++++++++ .../include/boards/pimoroni_picosystem.h | 145 ++++++++++++++++++ src/boards/include/boards/pimoroni_tiny2040.h | 96 ++++++++++++ src/boards/include/boards/sparkfun_micromod.h | 68 ++++++++ src/boards/include/boards/sparkfun_promicro.h | 68 ++++++++ .../include/boards/sparkfun_thingplus.h | 75 +++++++++ src/boards/include/boards/vgaboard.h | 64 +++----- src/common/pico_stdlib/include/pico/stdlib.h | 10 ++ .../hardware_i2c/include/hardware/i2c.h | 14 +- .../hardware_pio/include/hardware/pio.h | 2 +- .../hardware_spi/include/hardware/spi.h | 14 ++ .../hardware_uart/include/hardware/uart.h | 25 ++- src/rp2_common/pico_stdio_uart/stdio_uart.c | 24 +-- 17 files changed, 952 insertions(+), 74 deletions(-) create mode 100644 src/boards/include/boards/adafruit_feather_rp2040.h create mode 100644 src/boards/include/boards/adafruit_itsybitsy_rp2040.h create mode 100644 src/boards/include/boards/adafruit_qtpy_rp2040.h create mode 100644 src/boards/include/boards/pimoroni_keybow2040.h create mode 100644 src/boards/include/boards/pimoroni_picosystem.h create mode 100644 src/boards/include/boards/pimoroni_tiny2040.h create mode 100644 src/boards/include/boards/sparkfun_micromod.h create mode 100644 src/boards/include/boards/sparkfun_promicro.h create mode 100644 src/boards/include/boards/sparkfun_thingplus.h diff --git a/src/boards/include/boards/adafruit_feather_rp2040.h b/src/boards/include/boards/adafruit_feather_rp2040.h new file mode 100644 index 0000000..631c52d --- /dev/null +++ b/src/boards/include/boards/adafruit_feather_rp2040.h @@ -0,0 +1,88 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- + +#ifndef _BOARDS_ADAFRUIT_FEATHER_RP2040_H +#define _BOARDS_ADAFRUIT_FEATHER_RP2040_H + +// For board detection +#define ADAFRUIT_FEATHER_RP2040 + +//------------- UART -------------// +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +//------------- LED -------------// +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN 13 +#endif + +#ifndef PICO_DEFAULT_WS2812_PIN +#define PICO_DEFAULT_WS2812_PIN 16 +#endif + +//------------- I2C -------------// +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif + +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 2 +#endif + +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 3 +#endif + +//------------- SPI -------------// +#ifndef PICO_DEFAULT_SPI +#define PICO_DEFAULT_SPI 0 +#endif + +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN 19 +#endif + +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN 20 +#endif + +#ifndef PICO_DEFAULT_SPI_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN 18 +#endif + +//------------- FLASH -------------// +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/adafruit_itsybitsy_rp2040.h b/src/boards/include/boards/adafruit_itsybitsy_rp2040.h new file mode 100644 index 0000000..55015c6 --- /dev/null +++ b/src/boards/include/boards/adafruit_itsybitsy_rp2040.h @@ -0,0 +1,92 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- + +#ifndef _BOARDS_ADAFRUIT_ITSYBITSY_RP2040_H +#define _BOARDS_ADAFRUIT_ITSYBITSY_RP2040_H + +// For board detection +#define ADAFRUIT_ITSYBITSY_RP2040 + +//------------- UART -------------// +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +//------------- LED -------------// +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN 11 +#endif + +#ifndef PICO_DEFAULT_WS2812_PIN +#define PICO_DEFAULT_WS2812_PIN 17 +#endif + +#ifndef PICO_DEFAULT_WS2812_POWER_PIN +#define PICO_DEFAULT_WS2812_POWER_PIN 16 +#endif + +//------------- I2C -------------// +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif + +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 2 +#endif + +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 3 +#endif + +//------------- SPI -------------// +#ifndef PICO_DEFAULT_SPI +#define PICO_DEFAULT_SPI 0 +#endif + +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN 19 +#endif + +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN 20 +#endif + +#ifndef PICO_DEFAULT_SPI_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN 18 +#endif + +//------------- FLASH -------------// +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/adafruit_qtpy_rp2040.h b/src/boards/include/boards/adafruit_qtpy_rp2040.h new file mode 100644 index 0000000..cfe68ab --- /dev/null +++ b/src/boards/include/boards/adafruit_qtpy_rp2040.h @@ -0,0 +1,91 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- + +#ifndef _BOARDS_ADAFRUIT_QTPY_RP2040_H +#define _BOARDS_ADAFRUIT_QTPY_RP2040_H + +// For board detection +#define ADAFRUIT_QTPY_RP2040 + +//------------- UART -------------// +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 1 +#endif + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 20 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 9 +#endif + +//------------- LED -------------// +// No normal LED +// #define PICO_DEFAULT_LED_PIN 13 + +#ifndef PICO_DEFAULT_WS2812_PIN +#define PICO_DEFAULT_WS2812_PIN 12 +#endif + +#ifndef PICO_DEFAULT_WS2812_POWER_PIN +#define PICO_DEFAULT_WS2812_POWER_PIN 11 +#endif + +//------------- I2C -------------// +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif + +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 24 +#endif + +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 25 +#endif + +//------------- SPI -------------// +#ifndef PICO_DEFAULT_SPI +#define PICO_DEFAULT_SPI 0 +#endif + +#ifndef PICO_DEFAULT_SPI_TX_PIN +#define PICO_DEFAULT_SPI_TX_PIN 3 +#endif + +#ifndef PICO_DEFAULT_SPI_RX_PIN +#define PICO_DEFAULT_SPI_RX_PIN 4 +#endif + +#ifndef PICO_DEFAULT_SPI_SCK_PIN +#define PICO_DEFAULT_SPI_SCK_PIN 6 +#endif + +//------------- FLASH -------------// +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (4 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/pico.h b/src/boards/include/boards/pico.h index c1ab781..1eba2e3 100644 --- a/src/boards/include/boards/pico.h +++ b/src/boards/include/boards/pico.h @@ -14,21 +14,35 @@ #ifndef _BOARDS_PICO_H #define _BOARDS_PICO_H +// --- UART --- #ifndef PICO_DEFAULT_UART #define PICO_DEFAULT_UART 0 #endif - #ifndef PICO_DEFAULT_UART_TX_PIN #define PICO_DEFAULT_UART_TX_PIN 0 #endif - #ifndef PICO_DEFAULT_UART_RX_PIN #define PICO_DEFAULT_UART_RX_PIN 1 #endif +// --- LED --- #ifndef PICO_DEFAULT_LED_PIN #define PICO_DEFAULT_LED_PIN 25 #endif +// 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 4 +#endif +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 5 +#endif + +// --- FLASH --- #ifndef PICO_FLASH_SPI_CLKDIV #define PICO_FLASH_SPI_CLKDIV 2 diff --git a/src/boards/include/boards/pimoroni_keybow2040.h b/src/boards/include/boards/pimoroni_keybow2040.h new file mode 100644 index 0000000..46c5134 --- /dev/null +++ b/src/boards/include/boards/pimoroni_keybow2040.h @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- + +#ifndef _BOARDS_PIMORONI_KEYBOW2040_H +#define _BOARDS_PIMORONI_KEYBOW2040_H + +// For board detection +#define PIMORONI_KEYBOW2040 + +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +#ifndef KEYBOW2040_I2C_SDA_PIN +#define KEYBOW2040_I2C_SDA_PIN 4 +#endif + +#ifndef KEYBOW2040_I2C_SCL_PIN +#define KEYBOW2040_I2C_SCL_PIN 5 +#endif + +#ifndef KEYBOW2040_I2C_INT_PIN +#define KEYBOW2040_I2C_INT_PIN 3 +#endif + +#ifndef KEYBOW2040_USER_SW_PIN +#define KEYBOW2040_USER_SW_PIN 23 +#endif + +#ifndef KEYBOW2040_SW0_PIN +#define KEYBOW2040_SW0_PIN 21 +#endif + +#ifndef KEYBOW2040_SW1_PIN +#define KEYBOW2040_SW1_PIN 20 +#endif + +#ifndef KEYBOW2040_SW2_PIN +#define KEYBOW2040_SW2_PIN 19 +#endif + +#ifndef KEYBOW2040_SW3_PIN +#define KEYBOW2040_SW3_PIN 18 +#endif + +#ifndef KEYBOW2040_SW4_PIN +#define KEYBOW2040_SW4_PIN 17 +#endif + +#ifndef KEYBOW2040_SW5_PIN +#define KEYBOW2040_SW5_PIN 16 +#endif + +#ifndef KEYBOW2040_SW6_PIN +#define KEYBOW2040_SW6_PIN 15 +#endif + +#ifndef KEYBOW2040_SW7_PIN +#define KEYBOW2040_SW7_PIN 14 +#endif + +#ifndef KEYBOW2040_SW8_PIN +#define KEYBOW2040_SW8_PIN 13 +#endif + +#ifndef KEYBOW2040_SW9_PIN +#define KEYBOW2040_SW9_PIN 12 +#endif + +#ifndef KEYBOW2040_SW10_PIN +#define KEYBOW2040_SW10_PIN 11 +#endif + +#ifndef KEYBOW2040_SW11_PIN +#define KEYBOW2040_SW11_PIN 10 +#endif + +#ifndef KEYBOW2040_SW12_PIN +#define KEYBOW2040_SW12_PIN 9 +#endif + +#ifndef KEYBOW2040_SW13_PIN +#define KEYBOW2040_SW13_PIN 8 +#endif + +#ifndef KEYBOW2040_SW14_PIN +#define KEYBOW2040_SW14_PIN 7 +#endif + +#ifndef KEYBOW2040_SW15_PIN +#define KEYBOW2040_SW15_PIN 6 +#endif + +#ifndef KEYBOW2040_NUM_SWITCHES +#define KEYBOW2040_NUM_SWITCHES_PINS 16 +#endif + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 + +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/pimoroni_picosystem.h b/src/boards/include/boards/pimoroni_picosystem.h new file mode 100644 index 0000000..c249469 --- /dev/null +++ b/src/boards/include/boards/pimoroni_picosystem.h @@ -0,0 +1,145 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- + +#ifndef _BOARDS_PIMORONI_PICOSYSTEM_H +#define _BOARDS_PIMORONI_PICOSYSTEM_H + +// For board detection +#define PIMORONI_PICOSYSTEM + +#ifndef PICOSYSTEM_VBUS_DETECT_PIN +#define PICOSYSTEM_VBUS_DETECT_PIN 2 +#endif + +#ifndef PICOSYSTEM_LCD_RESET_PIN +#define PICOSYSTEM_LCD_RESET_PIN 4 +#endif + +#ifndef PICOSYSTEM_LCD_CS_PIN +#define PICOSYSTEM_LCD_CS_PIN 5 +#endif + +#ifndef PICOSYSTEM_LCD_SCLK_PIN +#define PICOSYSTEM_LCD_SCLK_PIN 6 +#endif + +#ifndef PICOSYSTEM_LCD_MOSI_PIN +#define PICOSYSTEM_LCD_MOSI_PIN 7 +#endif + +#ifndef PICOSYSTEM_LCD_VSYNC_PIN +#define PICOSYSTEM_LCD_VSYNC_PIN 8 +#endif + +#ifndef PICOSYSTEM_LCD_DC_PIN +#define PICOSYSTEM_LCD_DC_PIN 9 +#endif + +#ifndef PICOSYSTEM_AUDIO_PIN +#define PICOSYSTEM_AUDIO_PIN 11 +#endif + +#ifndef PICOSYSTEM_BACKLIGHT_PIN +#define PICOSYSTEM_BACKLIGHT_PIN 12 +#endif + +#ifndef PICOSYSTEM_LED_G_PIN +#define PICOSYSTEM_LED_G_PIN 13 +#endif + +#ifndef PICOSYSTEM_LED_R_PIN +#define PICOSYSTEM_LED_R_PIN 14 +#endif + +#ifndef PICOSYSTEM_LED_B_PIN +#define PICOSYSTEM_LED_B_PIN 15 +#endif + +#ifndef PICOSYSTEM_SW_Y_PIN +#define PICOSYSTEM_SW_Y_PIN 16 +#endif + +#ifndef PICOSYSTEM_SW_X_PIN +#define PICOSYSTEM_SW_X_PIN 17 +#endif + +#ifndef PICOSYSTEM_SW_A_PIN +#define PICOSYSTEM_SW_A_PIN 18 +#endif + +#ifndef PICOSYSTEM_SW_B_PIN +#define PICOSYSTEM_SW_B_PIN 19 +#endif + +#ifndef PICOSYSTEM_SW_DOWN_PIN +#define PICOSYSTEM_SW_DOWN_PIN 20 +#endif + +#ifndef PICOSYSTEM_SW_RIGHT_PIN +#define PICOSYSTEM_SW_RIGHT_PIN 21 +#endif + +#ifndef PICOSYSTEM_SW_LEFT_PIN +#define PICOSYSTEM_SW_LEFT_PIN 22 +#endif + +#ifndef PICOSYSTEM_SW_UP_PIN +#define PICOSYSTEM_SW_UP_PIN 23 +#endif + +#ifndef PICOSYSTEM_CHARGE_STAT_PIN +#define PICOSYSTEM_CHARGE_STAT_PIN 24 +#endif + +#ifndef PICOSYSTEM_BAT_SENSE_PIN +#define PICOSYSTEM_BAT_SENSE_PIN 26 +#endif + +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +// Included so basic examples will work, and set it to the green LED +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN PICOSYSTEM_LED_G_PIN +#endif + +#ifndef PICO_DEFAULT_LED_PIN_INVERTED +#define PICO_DEFAULT_LED_PIN_INVERTED 1 +#endif + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 + +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/pimoroni_tiny2040.h b/src/boards/include/boards/pimoroni_tiny2040.h new file mode 100644 index 0000000..29194e4 --- /dev/null +++ b/src/boards/include/boards/pimoroni_tiny2040.h @@ -0,0 +1,96 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- + +#ifndef _BOARDS_PIMORONI_TINY2040_H +#define _BOARDS_PIMORONI_TINY2040_H + +// For board detection +#define PIMORONI_TINY2040 + +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +#ifndef TINY2040_LED_R_PIN +#define TINY2040_LED_R_PIN 18 +#endif + +#ifndef TINY2040_LED_G_PIN +#define TINY2040_LED_G_PIN 19 +#endif + +#ifndef TINY2040_LED_B_PIN +#define TINY2040_LED_B_PIN 20 +#endif + +#ifndef TINY2040_USER_SW_PIN +#define TINY2040_USER_SW_PIN 23 +#endif + +#ifndef TINY2040_A0_PIN +#define TINY2040_A0_PIN 26 +#endif + +#ifndef TINY2040_A1_PIN +#define TINY2040_A1_PIN 27 +#endif + +#ifndef TINY2040_A2_PIN +#define TINY2040_A2_PIN 28 +#endif + +#ifndef TINY2040_A3_PIN +#define TINY2040_A3_PIN 29 +#endif + +#ifndef TINY2040_NUM_IO_PINS +#define TINY2040_NUM_IO_PINS 8 +#endif + +#ifndef TINY2040_NUM_ADC_PINS +#define TINY2040_NUM_ADC_PINS 4 +#endif + +// Included so basic examples will work, and set it to the green LED +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN TINY2040_LED_G_PIN +#endif + +#ifndef PICO_DEFAULT_LED_PIN_INVERTED +#define PICO_DEFAULT_LED_PIN_INVERTED 1 +#endif + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (8 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/sparkfun_micromod.h b/src/boards/include/boards/sparkfun_micromod.h new file mode 100644 index 0000000..52dcaeb --- /dev/null +++ b/src/boards/include/boards/sparkfun_micromod.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- +// +//------------------------------------------------------------------------------------------ +// Board definition for the SparkFun RP2040 MicroMod processor board +// +// This header may be included by other board headers as "boards/sparkfun_micromod.h" + +#ifndef _BOARDS_SPARKFUN_MICROMOD_H +#define _BOARDS_SPARKFUN_MICROMOD_H + +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#define + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN 25 +#endif + +// Default I2C - for qwiic connector +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif + +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 4 +#endif + +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 5 +#endif + +// spi flash +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 + +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/sparkfun_promicro.h b/src/boards/include/boards/sparkfun_promicro.h new file mode 100644 index 0000000..d63ab41 --- /dev/null +++ b/src/boards/include/boards/sparkfun_promicro.h @@ -0,0 +1,68 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- +// +//------------------------------------------------------------------------------------------ +// Board definition for the SparkFun RP2040 ProMicro +// +// This header may be included by other board headers as "boards/sparkfun_promicro.h" + +#ifndef _BOARDS_SPARKFUN_PROMICRO_H +#define _BOARDS_SPARKFUN_PROMICRO_H + +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +// The PRO Micro doesnt have a plain LED, but a WS2812 +//#ifndef PICO_DEFAULT_LED_PIN +//#define PICO_DEFAULT_LED_PIN 25 +//#endif +#ifndef PICO_DEFAULT_WS2812_PIN +#define PICO_DEFAULT_WS2812_PIN 25 +#endif + +// Default I2C - for the onboard qwiic connector +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 0 +#endif +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 16 +#endif +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 17 +#endif + +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +// board has 16M onboard flash +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) +#endif + +// All boards have B1 RP2040 + +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/sparkfun_thingplus.h b/src/boards/include/boards/sparkfun_thingplus.h new file mode 100644 index 0000000..eac3aa4 --- /dev/null +++ b/src/boards/include/boards/sparkfun_thingplus.h @@ -0,0 +1,75 @@ +/* + * Copyright (c) 2020 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 +// ----------------------------------------------------- +// +//------------------------------------------------------------------------------------------ +// Board definition for the SparkFun RP2040 Thing Plus +// +// This header may be included by other board headers as "boards/sparkfun_thingplus.h" + +#ifndef _BOARDS_SPARKFUN_THINGPLUS_H +#define _BOARDS_SPARKFUN_THINGPLUS_H + +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 0 +#endif +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 0 +#endif +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 1 +#endif + +#ifndef PICO_DEFAULT_LED_PIN +#define PICO_DEFAULT_LED_PIN 25 +#endif + +// Default I2C - for qwiic connector +#ifndef PICO_DEFAULT_I2C +#define PICO_DEFAULT_I2C 1 +#endif +#ifndef PICO_DEFAULT_I2C_SDA_PIN +#define PICO_DEFAULT_I2C_SDA_PIN 6 +#endif +#ifndef PICO_DEFAULT_I2C_SCL_PIN +#define PICO_DEFAULT_I2C_SCL_PIN 7 +#endif + +// spi flash +#ifndef PICO_FLASH_SPI_CLKDIV +#define PICO_FLASH_SPI_CLKDIV 2 +#endif + +#ifndef PICO_FLASH_SIZE_BYTES +#define PICO_FLASH_SIZE_BYTES (16 * 1024 * 1024) +#endif + +// The thing plus has a SD Card. +#define PICO_SD_CLK_PIN 14 +#define PICO_SD_CMD_PIN 15 +#define PICO_SD_DAT0_PIN 12 +// DAT pins count down +#define PICO_SD_DAT_PIN_INCREMENT -1 + +#ifndef PICO_SD_DAT_PIN_COUNT +#define PICO_SD_DAT_PIN_COUNT 4 +#endif + +// All boards have B1 RP2040 + +#ifndef PICO_FLOAT_SUPPORT_ROM_V1 +#define PICO_FLOAT_SUPPORT_ROM_V1 0 +#endif + +#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 +#define PICO_DOUBLE_SUPPORT_ROM_V1 0 +#endif + +#endif diff --git a/src/boards/include/boards/vgaboard.h b/src/boards/include/boards/vgaboard.h index e2c3674..de1448d 100644 --- a/src/boards/include/boards/vgaboard.h +++ b/src/boards/include/boards/vgaboard.h @@ -12,22 +12,6 @@ #ifndef _BOARDS_VGABOARD_H #define _BOARDS_VGABOARD_H -#ifndef PICO_DEFAULT_UART -#define PICO_DEFAULT_UART 1 -#endif - -#ifndef PICO_DEFAULT_UART_TX_PIN -#define PICO_DEFAULT_UART_TX_PIN 20 -#endif - -#ifndef PICO_DEFAULT_UART_RX_PIN -#define PICO_DEFAULT_UART_RX_PIN 21 -#endif - -#ifndef PICO_DEFAULT_LED_PIN -#define PICO_DEFAULT_LED_PIN 25 // same as Pico -#endif - // Audio pins. I2S BCK, LRCK are on the same pins as PWM L/R. // - When outputting I2S, PWM sees BCK and LRCK, which should sound silent as // they are constant duty cycle, and above the filter cutoff @@ -54,25 +38,30 @@ #define VGABOARD_BUTTON_B_PIN 6 #define VGABOARD_BUTTON_C_PIN 11 -#ifndef PICO_SCANVIDEO_COLOR_PIN_BASE +#ifndef PICO_DEFAULT_UART +#define PICO_DEFAULT_UART 1 +#endif + +#ifndef PICO_DEFAULT_UART_TX_PIN +#define PICO_DEFAULT_UART_TX_PIN 20 +#endif + +#ifndef PICO_DEFAULT_UART_RX_PIN +#define PICO_DEFAULT_UART_RX_PIN 21 +#endif + #define PICO_SCANVIDEO_COLOR_PIN_BASE VGABOARD_VGA_COLOR_PIN_BASE -#endif - -#ifndef PICO_SCANVIDEO_SYMC_PIN_BASE #define PICO_SCANVIDEO_SYNC_PIN_BASE VGABOARD_VGA_SYNC_PIN_BASE -#endif -#ifndef PICO_SD_CLK_PIN #define PICO_SD_CLK_PIN VGABOARD_SD_CLK_PIN -#endif - -#ifndef PICO_SD_CMD_PIN #define PICO_SD_CMD_PIN VGABOARD_SD_CMD_PIN +#define PICO_SD_DAT0_PIN VGABOARD_SD_DAT0_PIN + +#ifndef PICO_SD_DAT_PIN_COUNT +#define PICO_SD_DAT_PIN_COUNT 4 #endif -#ifndef PICO_SD_DAT0_PIN -#define PICO_SD_DAT0_PIN VGABOARD_SD_DAT0_PIN -#endif +#define PICO_SD_DAT_PIN_INCREMENT 1 #define PICO_AUDIO_I2S_DATA_PIN VGABOARD_I2S_DIN_PIN #define PICO_AUDIO_I2S_CLOCK_PIN_BASE VGABOARD_I2S_BCK_PIN @@ -80,25 +69,12 @@ #define PICO_AUDIO_PWM_L_PIN VGABOARD_PWM_L_PIN #define PICO_AUDIO_PWM_R_PIN VGABOARD_PWM_R_PIN -#ifndef PICO_FLASH_SPI_CLKDIV -#define PICO_FLASH_SPI_CLKDIV 2 -#endif - -#ifndef PICO_FLASH_SIZE_BYTES -#define PICO_FLASH_SIZE_BYTES (2 * 1024 * 1024) -#endif - // Drive high to force power supply into PWM mode (lower ripple on 3V3 at light loads) #define PICO_SMPS_MODE_PIN 23 -#ifndef PICO_FLOAT_SUPPORT_ROM_V1 -#define PICO_FLOAT_SUPPORT_ROM_V1 1 -#endif - -#ifndef PICO_DOUBLE_SUPPORT_ROM_V1 -#define PICO_DOUBLE_SUPPORT_ROM_V1 1 -#endif - #define PICO_VGA_BOARD +// vgaboard has a Pico on it, so default anything we haven't set above +#include "boards/pico.h" + #endif diff --git a/src/common/pico_stdlib/include/pico/stdlib.h b/src/common/pico_stdlib/include/pico/stdlib.h index 9803028..7f72376 100644 --- a/src/common/pico_stdlib/include/pico/stdlib.h +++ b/src/common/pico_stdlib/include/pico/stdlib.h @@ -56,6 +56,16 @@ extern "C" { #include "pico/stdio_semihosting.h" #endif +// PICO_CONFIG: PICO_DEFAULT_LED_PIN, Optionally defined a pin that drives a regular LED on the board, default=undefined, group=pico_stdlib + +// PICO_CONFIG: PICO_DEFAULT_LED_PIN_INVERTED, 1 if LED is inverted, 0 otherwise, type=int, default=0, group=pico_stdlib +#ifndef PICO_DEFAULT_LED_PIN_INVERTED +#define PICO_DEFAULT_LED_PIN_INVERTED 0 +#endif + +// PICO_CONFIG: PICO_DEFAULT_WS2812_PIN, Optionally defined a pin that controls data to a WS2812 compatible LED on the board, default=undefined, group=pico_stdlib +// PICO_CONFIG: PICO_DEFAULT_WS2812_POWER_PIN, Optionally defined a pin that controls power to a WS2812 compatible LED on the board, default=undefined, group=pico_stdlib + /*! \brief Set up the default UART and assign it to the default GPIO's * \ingroup pico_stdlib * diff --git a/src/rp2_common/hardware_i2c/include/hardware/i2c.h b/src/rp2_common/hardware_i2c/include/hardware/i2c.h index 5f4a74c..7d6760d 100644 --- a/src/rp2_common/hardware_i2c/include/hardware/i2c.h +++ b/src/rp2_common/hardware_i2c/include/hardware/i2c.h @@ -48,6 +48,10 @@ extern "C" { typedef struct i2c_inst i2c_inst_t; +// PICO_CONFIG: PICO_DEFAULT_I2C, Define the default I2C for a board, default=undefined, group=hardware_i2c +// PICO_CONFIG: PICO_DEFAULT_I2C_SDA_PIN, Define the default I2C SDA, min=0, max=29, default=undefined, group=hardware_i2c +// PICO_CONFIG: PICO_DEFAULT_I2C_SCL_PIN, Define the default I2C SCL pin, min=0, max=29, default=undefined, group=hardware_i2c + /** The I2C identifiers for use in I2C functions. * * e.g. i2c_init(i2c0, 48000) @@ -61,6 +65,14 @@ extern i2c_inst_t i2c1_inst; #define i2c0 (&i2c0_inst) ///< Identifier for I2C HW Block 0 #define i2c1 (&i2c1_inst) ///< Identifier for I2C HW Block 1 +#if !defined(PICO_DEFAULT_I2C_INSTANCE) && defined(PICO_DEFAULT_I2C) +#define PICO_DEFAULT_I2C_INSTANCE (__CONCAT(i2c,PICO_DEFAULT_I2C)) +#endif + +#ifdef PICO_DEFAULT_I2C_INSTANCE +#define i2c_default PICO_DEFAULT_I2C_INSTANCE +#endif + /** @} */ // ---------------------------------------------------------------------------- @@ -126,7 +138,7 @@ struct i2c_inst { * \ingroup hardware_i2c * * \param i2c I2C instance - * \return Number of UART, 0 or 1. + * \return Number of I2C, 0 or 1. */ static inline uint i2c_hw_index(i2c_inst_t *i2c) { invalid_params_if(I2C, i2c != i2c0 && i2c != i2c1); diff --git a/src/rp2_common/hardware_pio/include/hardware/pio.h b/src/rp2_common/hardware_pio/include/hardware/pio.h index ac0d626..0f59f7e 100644 --- a/src/rp2_common/hardware_pio/include/hardware/pio.h +++ b/src/rp2_common/hardware_pio/include/hardware/pio.h @@ -341,7 +341,7 @@ static inline void sm_config_set_out_special(pio_sm_config *c, bool sticky, bool * \param status_n parameter for the mov status operation (currently a bit count) */ static inline void sm_config_set_mov_status(pio_sm_config *c, enum pio_mov_status_type status_sel, uint status_n) { - valid_params_if(PIO, join >= STATUS_TX_LESSTHAN && join <= STATUS_RX_LESSTHAN); + valid_params_if(PIO, status_sel >= STATUS_TX_LESSTHAN && status_sel <= STATUS_RX_LESSTHAN); c->execctrl = (c->execctrl & ~(PIO_SM0_EXECCTRL_STATUS_SEL_BITS | PIO_SM0_EXECCTRL_STATUS_N_BITS)) | ((((uint)status_sel) << PIO_SM0_EXECCTRL_STATUS_SEL_LSB) & PIO_SM0_EXECCTRL_STATUS_SEL_BITS) diff --git a/src/rp2_common/hardware_spi/include/hardware/spi.h b/src/rp2_common/hardware_spi/include/hardware/spi.h index 0d29043..a913e67 100644 --- a/src/rp2_common/hardware_spi/include/hardware/spi.h +++ b/src/rp2_common/hardware_spi/include/hardware/spi.h @@ -35,6 +35,12 @@ extern "C" { * Each controller can be connected to a number of GPIO pins, see the datasheet GPIO function selection table for more information. */ +// PICO_CONFIG: PICO_DEFAULT_SPI, Define the default SPI for a board, default=undefined, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_SCK_PIN, Define the default SPI SCK pin, min=0, max=29, default=undefined, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_TX_PIN, Define the default SPI TX pin, min=0, max=29, default=undefined, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_RX_PIN, Define the default SPI RX pin, min=0, max=29, default=undefined, group=hardware_spi +// PICO_CONFIG: PICO_DEFAULT_SPI_CSN_PIN, Define the default SPI CSN pin, min=0, max=29, default=undefined, group=hardware_spi + /** * Opaque type representing an SPI instance. */ @@ -56,6 +62,14 @@ typedef struct spi_inst spi_inst_t; */ #define spi1 ((spi_inst_t * const)spi1_hw) +#if !defined(PICO_DEFAULT_SPI_INSTANCE) && defined(PICO_DEFAULT_SPI) +#define PICO_DEFAULT_SPI_INSTANCE (__CONCAT(spi,PICO_DEFAULT_SPI)) +#endif + +#ifdef PICO_DEFAULT_SPI_INSTANCE +#define spi_default PICO_DEFAULT_SPI_INSTANCE +#endif + typedef enum { SPI_CPHA_0 = 0, SPI_CPHA_1 = 1 diff --git a/src/rp2_common/hardware_uart/include/hardware/uart.h b/src/rp2_common/hardware_uart/include/hardware/uart.h index ee84899..69ade78 100644 --- a/src/rp2_common/hardware_uart/include/hardware/uart.h +++ b/src/rp2_common/hardware_uart/include/hardware/uart.h @@ -29,26 +29,15 @@ extern "C" { #define PICO_UART_DEFAULT_CRLF 0 #endif -// PICO_CONFIG: PICO_DEFAULT_UART, Define the default UART used for printf etc, default=0, group=hardware_uart -#ifndef PICO_DEFAULT_UART -#define PICO_DEFAULT_UART 0 ///< Default UART instance -#endif +// PICO_CONFIG: PICO_DEFAULT_UART, Define the default UART used for printf etc, default=undefined, group=hardware_uart +// PICO_CONFIG: PICO_DEFAULT_UART_TX_PIN, Define the default UART TX pin, min=0, max=29, default=undefined, group=hardware_uart +// PICO_CONFIG: PICO_DEFAULT_UART_RX_PIN, Define the default UART RX pin, min=0, max=29, default=undefined, group=hardware_uart // PICO_CONFIG: PICO_DEFAULT_UART_BAUD_RATE, Define the default UART baudrate, max=921600, default=115200, group=hardware_uart #ifndef PICO_DEFAULT_UART_BAUD_RATE #define PICO_DEFAULT_UART_BAUD_RATE 115200 ///< Default baud rate #endif -// PICO_CONFIG: PICO_DEFAULT_UART_TX_PIN, Define the default UART TX pin, min=0, max=29, default=0, group=hardware_uart -#ifndef PICO_DEFAULT_UART_TX_PIN -#define PICO_DEFAULT_UART_TX_PIN 0 ///< Default TX pin -#endif - -// PICO_CONFIG: PICO_DEFAULT_UART_RX_PIN, Define the default UART RX pin, min=0, max=29, default=1, group=hardware_uart -#ifndef PICO_DEFAULT_UART_RX_PIN -#define PICO_DEFAULT_UART_RX_PIN 1 ///< Default RX pin -#endif - /** \file hardware/uart.h * \defgroup hardware_uart hardware_uart * @@ -93,11 +82,13 @@ typedef struct uart_inst uart_inst_t; /** @} */ -#ifndef PICO_DEFAULT_UART_INSTANCE +#if !defined(PICO_DEFAULT_UART_INSTANCE) && defined(PICO_DEFAULT_UART) #define PICO_DEFAULT_UART_INSTANCE (__CONCAT(uart,PICO_DEFAULT_UART)) #endif +#ifdef PICO_DEFAULT_UART_INSTANCE #define uart_default PICO_DEFAULT_UART_INSTANCE +#endif /*! \brief Convert UART instance to hardware instance number * \ingroup hardware_uart @@ -414,7 +405,11 @@ void uart_set_translate_crlf(uart_inst_t *uart, bool translate); * \ingroup hardware_uart */ static inline void uart_default_tx_wait_blocking(void) { +#ifdef uart_default uart_tx_wait_blocking(uart_default); +#else + assert(false); +#endif } /*! \brief Wait for up to a certain number of microseconds for the RX FIFO to be non empty diff --git a/src/rp2_common/pico_stdio_uart/stdio_uart.c b/src/rp2_common/pico_stdio_uart/stdio_uart.c index d5767a7..b8ff761 100644 --- a/src/rp2_common/pico_stdio_uart/stdio_uart.c +++ b/src/rp2_common/pico_stdio_uart/stdio_uart.c @@ -18,11 +18,12 @@ static uart_inst_t *uart_instance; #endif void stdio_uart_init() { +#ifdef uart_default int tx_pin = -1; int rx_pin = -1; -#if defined(PICO_DEFAULT_UART_TX_PIN) && PICO_DEFAULT_UART_TX_PIN != -1 +#ifdef PICO_DEFAULT_UART_TX_PIN tx_pin = PICO_DEFAULT_UART_TX_PIN; -#if defined(PICO_DEFAULT_UART_RX_PIN) && PICO_DEFAULT_UART_RX_PIN != -1 +#ifdef PICO_DEFAULT_UART_RX_PIN rx_pin = PICO_DEFAULT_UART_RX_PIN; stdio_bi_decl_if_func_used(bi_program_feature("UART stdin / stdout")); bi_decl_if_func_used(bi_2pins_with_func(PICO_DEFAULT_UART_RX_PIN, PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART)); @@ -30,22 +31,23 @@ void stdio_uart_init() { stdio_bi_decl_if_func_used(bi_program_feature("UART stdout")); bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART)); #endif -#elif defined(PICO_DEFAULT_UART_RX_PIN) && PICO_DEFAULT_UART_RX_PIN != -1 +#elif defined(PICO_DEFAULT_UART_RX_PIN) rx_pin = PICO_DEFAULT_UART_RX_PIN; stdio_bi_decl_if_func_used(bi_program_feature("UART stdin")); bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_RX_PIN, GPIO_FUNC_UART)); #endif -#if !defined(PICO_DEFAULT_UART_BAUD_RATE) || !defined(uart_default) +#if !defined(PICO_DEFAULT_UART_BAUD_RATE) panic("UART baud rate undefined"); #else stdio_uart_init_full(uart_default, PICO_DEFAULT_UART_BAUD_RATE, tx_pin, rx_pin); #endif +#endif } void stdout_uart_init() { -#ifdef PICO_DEFAULT_UART_TX_PIN +#if defined(uart_default) && defined(PICO_DEFAULT_UART_TX_PIN) bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_TX_PIN, GPIO_FUNC_UART)); -#if !defined(PICO_DEFAULT_UART_BAUD_RATE) || !defined(uart_default) +#if !defined(PICO_DEFAULT_UART_BAUD_RATE) panic("UART baud rate undefined"); #else stdio_bi_decl_if_func_used(bi_program_feature("UART stdout")); @@ -55,9 +57,9 @@ void stdout_uart_init() { } void stdin_uart_init() { -#ifdef PICO_DEFAULT_UART_RX_PIN +#if defined(uart_default) && defined(PICO_DEFAULT_UART_RX_PIN) bi_decl_if_func_used(bi_1pin_with_func(PICO_DEFAULT_UART_RX_PIN, GPIO_FUNC_UART)); -#if !defined(PICO_DEFAULT_UART_BAUD_RATE) || !defined(uart_default) +#if !defined(PICO_DEFAULT_UART_BAUD_RATE) panic("UART baud rate undefined"); #else stdio_bi_decl_if_func_used(bi_program_feature("UART stdin")); @@ -76,14 +78,14 @@ void stdio_uart_init_full(struct uart_inst *uart, uint baud_rate, int tx_pin, in static void stdio_uart_out_chars(const char *buf, int length) { for (int i = 0; i