Added Adafruit QT Py RP2040 board.

Added ability to configure indivdual UART, SPI and I2C pin location.
This commit is contained in:
curuvar
2022-07-21 21:04:05 -04:00
committed by Xiang Xiao
parent 421b8ae3e7
commit c21c7ac8dc
113 changed files with 4007 additions and 1836 deletions
@@ -55,9 +55,10 @@ the power.
Pin Mapping
===========
Pads numbered anticlockwise from USB connector.
===== ========== ==========
Pin Signal Notes
Pad Signal Notes
===== ========== ==========
1 Reset Pull to ground to reset the RP2040 processor.
2 3.3V Power out to peripherals.
@@ -50,9 +50,10 @@ A ws2812 (NeoPixel) smart RGB LED controlled by GPIO17.
Pin Mapping
===========
Pads numbered anticlockwise from USB connector.
===== ========== ==========
Pin Signal Notes
Pad Signal Notes
===== ========== ==========
1 D+ Alternate USB data connection.
2 GPIO0 Default TX for UART0 serial console
Binary file not shown.

After

Width:  |  Height:  |  Size: 125 KiB

@@ -0,0 +1,119 @@
=======================
Adafruit QT Py RP2040
=======================
The QT Py RP2040 is a tiny general purpose RP2040 board supplied by
Adafruit.
.. figure:: QT-Py.png
:align: center
Features
========
* RP2040 microcontroller chip
* Dual-core ARM Cortex M0+ processor, flexible clock running up to 133 MHz
* 264kB of SRAM, and 8MB of on-board Flash memory
* Castellated module allows soldering direct to carrier boards
* USB Host and Device support via type C connector.
* Low-power sleep and dormant modes
* Drag & drop programming using mass storage over USB
* 13 multi-function GPIO pins (11 breakout pads and two QT pads)
* 2× SPI, 2× I2C, 2× UART, 4× 12-bit ADC, 16× controllable PWM channels
* Accurate clock and timer on-chip
* Temperature sensor
* Accelerated floating point libraries on-chip
* 8 × Programmable IO (PIO) state machines for custom peripheral support
Serial Console
==============
By default a serial console appears on GPIO pins 20 (RX GPIO1) and pin 5
(TX GPIO1). This console runs a 115200-8N1.
The board can be configured to use the USB connection as the serial console.
Buttons and LEDs
================
A ws2812 (NeoPixel) smart RGB LED controlled by GPIO12 (data) and
GPIO11 (power).
There is a BOOT button which if held down when power is first
applied or the RESET button is pressed will cause the RP2040 to
boot into program mode and appear as a storage device to
a USB connecter. Saving a .UF2 file to this device will
replace the Flash ROM contents on the RP2040.
A RESET button that allows rebooting the board without disconnecting
the power.
Pin Mapping
===========
Pads numbered anticlockwise from USB connector.
===== ========== ==========
Pad Signal Notes
===== ========== ==========
1 GPIO26 ADC0
2 GPIO27 ADC1
3 GPIO28 ADC2
4 GPIO29 ADC3
5 GPIO24
6 GPIO25
7 GPIO20 Default TX for UART1 serial console
8 GPIO5 Default RX for UART1 serial console
9 GPIO6
10 GPIO4
11 GPIO3
12 3.3V Power out to peripherals.
13 Ground
14 5V
===== ========== ==========
The board has a STEMMA QT connector that is also connected to
pins GPIO22 (I2C1 SDA) and GPIO23 (I2C1 SCL).
Power Supply
============
The Raspberry Pi Pico can be powered via the USB connector,
or by supplying +5V to pin 14. The board had a diode that prevents
power from pin 14 from flowing back to the USB socket, although
this can be disabled by connecting on-board solder pads if there
is need to run as a usb host.
The Raspberry Pi Pico chip run on 3.3 volts which is supplied by
an on board regulator.
Configurations
==============
gpio
--------
NuttShell configuration (console enabled in UART1, at 115200 bps) with GPIO examples.
nsh
---
Basic NuttShell configuration (console enabled in UART1, at 115200 bps).
nshsram
-------
NuttShell configuration (console enabled in UART1, at 115200 bps) with interrupt
vectors in RAM.
smp
---
Basic NuttShell configuration (console enabled in UART1, at 115200 bps) with
both ARM cores enabled.
usbnsh
------
Basic NuttShell configuration (console enabled in USB Port, at 115200 bps).
@@ -46,9 +46,10 @@ on the RP2040.
Pin Mapping
===========
Pads numbered anticlockwise from USB connector.
===== ========== ==========
Pin Signal Notes
Pad Signal Notes
===== ========== ==========
1 VBUS Connected to USB +5V
2 Ground
@@ -46,9 +46,10 @@ on the RP2040.
Pin Mapping
===========
Pads numbered anticlockwise from USB connector.
===== ========== ==========
Pin Signal Notes
Pad Signal Notes
===== ========== ==========
1 GPIO0 Default TX for UART0 serial console
2 GPIO1 Default RX for UART1 serial console
+1
View File
@@ -236,6 +236,7 @@ config ARCH_CHIP_RP2040
select ARM_HAVE_WFE_SEV
select LIBC_ARCH_ATOMIC
select ARCH_HAVE_PWM_MULTICHAN
select ARCH_BOARD_COMMON
---help---
Raspberry Pi RP2040 architectures (ARM dual Cortex-M0+).
File diff suppressed because it is too large Load Diff
+8 -8
View File
@@ -487,15 +487,15 @@ struct i2c_slave_s * rp2040_i2c0_slave_initialize
{
rp2040_i2c_slave_t *priv = &i2c0_slave_dev;
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_SLAVE_SDA,
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_SDA_GPIO,
RP2040_GPIO_FUNC_I2C);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_SLAVE_SDA, true, false);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_SDA_GPIO, true, false);
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_SLAVE_SCL,
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_SCL_GPIO,
RP2040_GPIO_FUNC_I2C);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_SLAVE_SCL, true, false);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_SCL_GPIO, true, false);
priv->rx_buffer = rx_buffer;
priv->rx_buf_ptr = rx_buffer;
@@ -552,15 +552,15 @@ struct i2c_slave_s * rp2040_i2c1_slave_initialize
{
rp2040_i2c_slave_t *priv = &i2c1_slave_dev;
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_SLAVE_SDA,
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_SDA_GPIO,
RP2040_GPIO_FUNC_I2C);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_SLAVE_SDA, true, false);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_SDA_GPIO, true, false);
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_SLAVE_SCL,
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_SCL_GPIO,
RP2040_GPIO_FUNC_I2C);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_SLAVE_SCL, true, false);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_SCL_GPIO, true, false);
priv->rx_buffer = rx_buffer;
priv->rx_buf_ptr = rx_buffer;
+40 -26
View File
@@ -48,6 +48,7 @@ struct instance
FAR uint8_t *pixels; /* Buffer to hold pixels */
size_t open_count; /* Number of opens on this instance. */
clock_t last_dma; /* when last DMA completed. */
int power_pin; /* pin for ws2812 power */
};
/****************************************************************************
@@ -168,57 +169,40 @@ static int my_open(FAR struct file *filep)
{
FAR struct inode *inode = filep->f_inode;
FAR struct ws2812_dev_s *dev_data = inode->i_private;
FAR struct instance *priv;
FAR struct instance *priv = (FAR struct instance *)
dev_data->private;
rp2040_pio_sm_config config;
int divisor;
int ret;
nxsem_wait(&dev_data->exclsem);
if (dev_data->private != NULL)
priv->open_count += 1;
if (priv->pixels != NULL)
{
/* We've already been initialized. Keep on truckin' */
ledinfo("rp2040_ws2812 re-open dev: 0x%08lX\n", (uint32_t) dev_data);
priv = (FAR struct instance *) dev_data->private;
priv->open_count += 1;
ret = OK;
goto post_and_return;
}
ledinfo("rp2040_ws2812 open dev: 0x%08lX\n", (uint32_t) dev_data);
/* Allocate struct holding out persistent data */
priv = kmm_zalloc(sizeof(struct instance));
if (priv == NULL)
{
lederr("rp2040_ws2812 open: out of memory\n");
ret = -ENOMEM;
goto post_and_return;
}
priv->open_count = 1;
/* Allocate the pixel buffer */
priv->pixels = kmm_zalloc(4 * dev_data->nleds);
priv->pixels = kmm_zalloc(4 * dev_data->nleds);
if (priv->pixels == NULL)
{
kmm_free(priv);
lederr("rp2040_ws2812 open: out of memory\n");
ret = -ENOMEM;
goto post_and_return;
}
dev_data->private = priv;
/* ==== Load the pio program ==== */
/* get pio instance and load program */
@@ -254,9 +238,6 @@ static int my_open(FAR struct file *filep)
{
kmm_free(priv->pixels);
dev_data->private = NULL;
kmm_free(priv);
ret = -ENOMEM;
goto post_and_return;
}
@@ -329,6 +310,15 @@ static int my_open(FAR struct file *filep)
rp2040_pio_sm_set_enabled(priv->pio, priv->pio_sm, true);
/* Turn on the power pin if any */
if (priv->power_pin >= 0)
{
rp2040_gpio_init(priv->power_pin);
rp2040_gpio_setdir(priv->power_pin, true);
rp2040_gpio_put(priv->power_pin, true);
}
ret = OK;
post_and_return:
@@ -363,6 +353,11 @@ static int my_close(FAR struct file *filep)
priv->open_count -= 1;
if (priv->open_count == 0 && priv->power_pin >= 0)
{
rp2040_gpio_put(priv->power_pin, false);
}
nxsem_post(&dev_data->exclsem);
return OK;
@@ -538,6 +533,7 @@ static ssize_t my_read(FAR struct file *filep,
* Input Parameters:
* Path to the ws2812 device (e.g. "/dev/leds0")
* Port number for the ws2812 chain
* Pin for ws2812 power
* The number of pixels in the chain
* Whether ws2812s have white LEDs
*
@@ -548,10 +544,12 @@ static ssize_t my_read(FAR struct file *filep,
FAR void * rp2040_ws2812_setup(FAR const char *path,
int port,
int power_pin,
uint16_t pixel_count,
bool has_white)
{
FAR struct ws2812_dev_s * dev_data;
FAR struct instance * priv;
int err;
dev_data = kmm_zalloc(sizeof(struct ws2812_dev_s));
@@ -562,6 +560,19 @@ FAR void * rp2040_ws2812_setup(FAR const char *path,
return NULL;
}
/* Allocate struct holding out persistent data */
priv = kmm_zalloc(sizeof(struct instance));
if (priv == NULL)
{
lederr("rp2040_ws2812 open: out of memory\n");
kmm_free(dev_data);
set_errno(ENOMEM);
return NULL;
}
dev_data->open = my_open;
dev_data->close = my_close;
dev_data->write = my_write;
@@ -569,9 +580,12 @@ FAR void * rp2040_ws2812_setup(FAR const char *path,
dev_data->port = port;
dev_data->nleds = pixel_count;
dev_data->clock = CONFIG_WS2812_FREQUENCY;
dev_data->private = priv;
nxsem_init(&dev_data->exclsem, 0, 1);
priv->power_pin = power_pin;
ledinfo("register dev_data: 0x%08lX\n", (uint32_t) dev_data);
err = ws2812_register(path, dev_data);
+2
View File
@@ -53,6 +53,7 @@ extern "C"
* Input Parameters:
* Path to the ws2812 device (e.g. "/dev/leds0")
* Port number for the ws2812 chain
* Pin for ws2812 power
* The number of pixels in the chain
* Whether ws2812s have white LEDs
*
@@ -63,6 +64,7 @@ extern "C"
FAR void * rp2040_ws2812_setup(FAR const char *path,
int port,
int power_pin,
uint16_t pixel_count,
bool has_white);
+11
View File
@@ -1494,6 +1494,13 @@ config ARCH_BOARD_ADAFRUIT_KB2040
This is a port to the Adafruit KB2040 board.
Support is derived from Raspberry Pi Pico support.
config ARCH_BOARD_ADAFRUIT_QT_PY_RP2040
bool "Adafruit QT Py RP2040 board"
depends on ARCH_CHIP_RP2040
---help---
This is a port to the Adafruit QT Py RP2040 board.
Support is derived from Raspberry Pi Pico support.
config ARCH_BOARD_RX65N
bool "RX65N renesas board"
depends on ARCH_CHIP_R5F565NEDDFC
@@ -2645,6 +2652,7 @@ config ARCH_BOARD
default "pimoroni-tiny2040" if ARCH_BOARD_PIMORONI_TINY2040
default "adafruit-feather-rp2040" if ARCH_BOARD_ADAFRUIT_FEATHER_RP2040
default "adafruit-kb2040" if ARCH_BOARD_ADAFRUIT_KB2040
default "adafruit-qt-py-rp2040" if ARCH_BOARD_ADAFRUIT_QT_PY_RP2040
default "rx65n" if ARCH_BOARD_RX65N
default "rx65n-rsk1mb" if ARCH_BOARD_RX65N_RSK1MB
default "rx65n-rsk2mb" if ARCH_BOARD_RX65N_RSK2MB
@@ -2989,6 +2997,9 @@ endif
if ARCH_BOARD_ADAFRUIT_KB2040
source "boards/arm/rp2040/adafruit-kb2040/Kconfig"
endif
if ARCH_BOARD_ADAFRUIT_QT_PY_RP2040
source "boards/arm/rp2040/adafruit-qt-py-rp2040/Kconfig"
endif
if ARCH_BOARD_ARDUINO_DUE
source "boards/arm/sam34/arduino-due/Kconfig"
endif
@@ -13,11 +13,12 @@ config RP2040_FLASH_BOOT
If not, the binary is for SRAM boot.
config RP2040_FLASH_CHIP
string "flash chip name"
string "Second stage boot loader"
default "w25q080"
---help---
Name of NOR flash device connected to RP2040 SoC.
(Used to choose the secondary boot loader.)
This is the name of the Pico-SDK second stage boot loader
to use for this board. This board using a Q64 flash chip
which is compatible with the w25q080 boot loader.
Basically this option should not be changed.
config RP2040_UF2_BINARY
@@ -26,291 +27,6 @@ config RP2040_UF2_BINARY
---help---
Create nuttx.uf2 binary format used on RP2040 based arch.
config RP2040_UART0_GPIO
int "UART0 GPIO pin assign (0,12,28 or -1:no assign)"
default 0
range -1 29
depends on RP2040_UART0
config RP2040_UART1_GPIO
int "UART1 GPIO pin assign (8,20,24 or -1:no assign)"
default -1
range -1 29
depends on RP2040_UART1
config RP2040_I2C0_GPIO
int "I2C0 GPIO pin assign (0,8,12,20,24,28 or -1:no assign)"
default -1
range -1 29
depends on RP2040_I2C0
config RP2040_I2C1_GPIO
int "I2C1 GPIO pin assign (2,6,10,18,26 or -1:no assign)"
default -1
range -1 29
depends on RP2040_I2C1
if RP2040_PWM0
config RP2040_PWM0A_GPIO
int "PWM0 channel 1 GPIO pin assign (0 or -1:no assign)"
default 0
range -1 16
---help---
This sets the GPIO pin to use for the A channel it must be
either 0 or 16, any other value disables the output.
config RP2040_PWM0A_INVERT
bool "PWM0 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM0B_GPIO
int "PWM0 channel 2 GPIO pin assign (1 or -1:no assign)"
default 1
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 1 or 17, any other value disables the output.
config RP2040_PWM0B_INVERT
bool "PWM0 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM0_PHASE_CORRECT
bool "PWM0 phase correct"
default n
endif
if RP2040_PWM1
config RP2040_PWM1A_GPIO
int "PWM1 channel 1 GPIO pin assign (2, 18 or -1:no assign)"
default 2
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 2 or 18, any other value disables the output.
config RP2040_PWM1A_INVERT
bool "PWM1 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM1B_GPIO
int "PWM1 channel 2 GPIO pin assign (3, 19 or -1:no assign)"
default 3
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 3 or 19, any other value disables the output.
config RP2040_PWM1B_INVERT
bool "PWM1 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM1_PHASE_CORRECT
bool "PWM1 phase correct"
default n
endif
if RP2040_PWM2
config RP2040_PWM2A_GPIO
int "PWM2 channel 1 GPIO pin assign (20 or -1:no assign)"
default 4
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 4 or 20, any other value disables the output.
config RP2040_PWM2A_INVERT
bool "PWM2 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
config RP2040_PWM2_PHASE_CORRECT
bool "PWM2 phase correct"
default n
endif
if RP2040_PWM3
config RP2040_PWM3A_GPIO
int "PWM3 channel 1 GPIO pin assign (6 or -1:no assign)"
default 6
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 6 or 22, any other value disables the output.
config RP2040_PWM3A_INVERT
bool "PWM3 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM3B_GPIO
int "PWM3 channel 2 GPIO pin assign (7 or -1:no assign)"
default 7
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 7 or 23, any other value disables the output.
config RP2040_PWM3B_INVERT
bool "PWM3 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM3_PHASE_CORRECT
bool "PWM3 phase correct"
default n
endif
if RP2040_PWM4
config RP2040_PWM4A_GPIO
int "PWM4 channel 1 GPIO pin assign (8, 24 or -1:no assign)"
default 8
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 8 or 24, any other value disables the output.
config RP2040_PWM4A_INVERT
bool "PWM4 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM4B_GPIO
int "PWM4 channel 2 GPIO pin assign (9, 25 or -1:no assign)"
default 9
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 9 or 25, any other value disables the output.
config RP2040_PWM4B_INVERT
bool "PWM4 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM4_PHASE_CORRECT
bool "PWM4 phase correct"
default n
endif
if RP2040_PWM5
config RP2040_PWM5A_GPIO
int "PWM5 channel 1 GPIO pin assign (10, 26 or -1:no assign)"
default 10
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 10 or 26, any other value disables the output.
config RP2040_PWM5A_INVERT
bool "PWM5 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM5B_GPIO
int "PWM5 channel 2 GPIO pin assign (11, 27 or -1:no assign)"
default 11
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 11 or 27, any other value disables the output.
config RP2040_PWM5B_INVERT
bool "PWM5 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM5_PHASE_CORRECT
bool "PWM5 phase correct"
default n
endif
if RP2040_PWM6
config RP2040_PWM6A_GPIO
int "PWM6 channel 1 GPIO pin assign (12, 28 or -1:no assign)"
default 12
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 12 or 28, any other value disables the output.
config RP2040_PWM6A_INVERT
bool "PWM6 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM6B_GPIO
int "PWM6 channel 2 GPIO pin assign (13, 29 or -1:no assign)"
default 13
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 13 or 29, any other value disables the output.
config RP2040_PWM6B_INVERT
bool "PWM6 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM6_PHASE_CORRECT
bool "PWM6 phase correct"
default n
endif
config RP2040_SPI0_GPIO
int "SPI0 GPIO pin assign (0,16 or -1:no assign)"
default -1
range -1 29
depends on RP2040_SPI0
config RP2040_SPI1_GPIO
int "SPI1 GPIO pin assign (8,24,28 or -1:no assign)"
default -1
range -1 29
depends on RP2040_SPI1
config RP2040_LCD_SPI_CH
int "RP2040 LCD SPI channel number"
default 0
@@ -22,7 +22,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -55,7 +54,10 @@ CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_I2S=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -54,7 +53,10 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
@@ -21,7 +21,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -82,7 +81,10 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
CONFIG_RR_INTERVAL=200
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -57,12 +56,14 @@ CONFIG_RAM_SIZE=270336
CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_ENC28J60_INTR_GPIO=11
CONFIG_RP2040_ENC28J60_RESET_GPIO=10
CONFIG_RP2040_ENC28J60_INTR_GPIO=19
CONFIG_RP2040_ENC28J60_RESET_GPIO=18
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=12
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
CONFIG_RR_INTERVAL=200
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -42,7 +41,8 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_I2C0=y
CONFIG_RP2040_I2C0_GPIO=4
CONFIG_RP2040_I2C0_SCL_GPIO=9
CONFIG_RP2040_I2C0_SDA_GPIO=8
CONFIG_RP2040_I2C=y
CONFIG_RP2040_I2C_DRIVER=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -16,7 +16,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_STACKDUMP=y
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_INTERRUPTSTACK=2048
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -46,7 +45,6 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -61,7 +60,8 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_I2C0=y
CONFIG_RP2040_I2C0_GPIO=4
CONFIG_RP2040_I2C0_SCL_GPIO=9
CONFIG_RP2040_I2C0_SDA_GPIO=8
CONFIG_RP2040_I2C=y
CONFIG_RP2040_I2C_DRIVER=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -45,7 +44,6 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=12
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
CONFIG_RR_INTERVAL=200
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -48,7 +47,10 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
@@ -16,7 +16,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -20,7 +20,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -79,7 +78,6 @@ CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_LCD_SPI_CH=1
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=8
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
CONFIG_RR_INTERVAL=200
@@ -20,7 +20,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-feather-rp2040"
CONFIG_ARCH_BOARD_ADAFRUIT_FEATHER_RP2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -76,7 +75,6 @@ CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_LCD_SPI_CH=1
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=8
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=16
CONFIG_RR_INTERVAL=200
@@ -20,7 +20,7 @@
MEMORY
{
flash (rx) : ORIGIN = 0x10000000, LENGTH = 2048K
flash (rx) : ORIGIN = 0x10000000, LENGTH = 8192K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 264K
}
@@ -70,32 +70,32 @@ void rp2040_boardearlyinitialize(void)
/* Set default UART pin */
#if defined(CONFIG_RP2040_UART0) && CONFIG_RP2040_UART0_GPIO >= 0
rp2040_gpio_set_function(CONFIG_RP2040_UART0_GPIO,
#ifdef CONFIG_RP2040_UART0
rp2040_gpio_set_function(CONFIG_RP2040_UART0_TX_GPIO,
RP2040_GPIO_FUNC_UART); /* TX */
rp2040_gpio_set_function(CONFIG_RP2040_UART0_GPIO + 1,
rp2040_gpio_set_function(CONFIG_RP2040_UART0_RX_GPIO,
RP2040_GPIO_FUNC_UART); /* RX */
#ifdef CONFIG_SERIAL_OFLOWCONTROL
rp2040_gpio_set_function(CONFIG_RP2040_UART0_GPIO + 2,
rp2040_gpio_set_function(CONFIG_RP2040_UART0_CTS_GPIO,
RP2040_GPIO_FUNC_UART); /* CTS */
#endif
#ifdef CONFIG_SERIAL_IFLOWCONTROL
rp2040_gpio_set_function(CONFIG_RP2040_UART0_GPIO + 3,
rp2040_gpio_set_function(CONFIG_RP2040_UART0_RTS_GPIO,
RP2040_GPIO_FUNC_UART); /* RTS */
#endif
#endif
#if defined(CONFIG_RP2040_UART1) && CONFIG_RP2040_UART1_GPIO >= 0
rp2040_gpio_set_function(CONFIG_RP2040_UART1_GPIO,
#ifdef CONFIG_RP2040_UART1
rp2040_gpio_set_function(CONFIG_RP2040_UART1_TX_GPIO,
RP2040_GPIO_FUNC_UART); /* TX */
rp2040_gpio_set_function(CONFIG_RP2040_UART1_GPIO + 1,
rp2040_gpio_set_function(CONFIG_RP2040_UART1_RX_GPIO,
RP2040_GPIO_FUNC_UART); /* RX */
#ifdef CONFIG_SERIAL_OFLOWCONTROL
rp2040_gpio_set_function(CONFIG_RP2040_UART1_GPIO + 2,
rp2040_gpio_set_function(CONFIG_RP2040_UART1_CTS_GPIO,
RP2040_GPIO_FUNC_UART); /* CTS */
#endif
#ifdef CONFIG_SERIAL_IFLOWCONTROL
rp2040_gpio_set_function(CONFIG_RP2040_UART1_GPIO + 3,
rp2040_gpio_set_function(CONFIG_RP2040_UART1_RTS_GPIO,
RP2040_GPIO_FUNC_UART); /* RTS */
#endif
#endif
@@ -112,55 +112,55 @@ void rp2040_boardinitialize(void)
{
/* Set default I2C pin */
#if defined(CONFIG_RP2040_I2C0) && CONFIG_RP2040_I2C0_GPIO >= 0
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_GPIO,
#ifdef CONFIG_RP2040_I2C0
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_SDA_GPIO,
RP2040_GPIO_FUNC_I2C); /* SDA */
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_GPIO + 1,
rp2040_gpio_set_function(CONFIG_RP2040_I2C0_SCL_GPIO,
RP2040_GPIO_FUNC_I2C); /* SCL */
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_GPIO, true, false); /* Pull up */
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_GPIO + 1, true, false);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_SDA_GPIO, true, false); /* Pull up */
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C0_SCL_GPIO, true, false);
#endif
#if defined(CONFIG_RP2040_I2C1) && CONFIG_RP2040_I2C1_GPIO >= 0
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_GPIO,
#ifdef CONFIG_RP2040_I2C1
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_SDA_GPIO,
RP2040_GPIO_FUNC_I2C); /* SDA */
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_GPIO + 1,
rp2040_gpio_set_function(CONFIG_RP2040_I2C1_SCL_GPIO,
RP2040_GPIO_FUNC_I2C); /* SCL */
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_GPIO, true, false); /* Pull up */
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_GPIO + 1, true, false);
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_SDA_GPIO, true, false); /* Pull up */
rp2040_gpio_set_pulls(CONFIG_RP2040_I2C1_SCL_GPIO, true, false);
#endif
/* Set default SPI pin */
#if defined(CONFIG_RP2040_SPI0) && CONFIG_RP2040_SPI0_GPIO >= 0
rp2040_gpio_set_function(CONFIG_RP2040_SPI0_GPIO,
#ifdef CONFIG_RP2040_SPI0
rp2040_gpio_set_function(CONFIG_RP2040_SPI0_RX_GPIO,
RP2040_GPIO_FUNC_SPI); /* RX */
rp2040_gpio_set_function(CONFIG_RP2040_SPI0_GPIO + 2,
rp2040_gpio_set_function(CONFIG_RP2040_SPI0_SCK_GPIO,
RP2040_GPIO_FUNC_SPI); /* SCK */
rp2040_gpio_set_function(CONFIG_RP2040_SPI0_GPIO + 3,
rp2040_gpio_set_function(CONFIG_RP2040_SPI0_TX_GPIO,
RP2040_GPIO_FUNC_SPI); /* TX */
/* CSn is controlled by board-specific logic */
rp2040_gpio_init(CONFIG_RP2040_SPI0_GPIO + 1); /* CSn */
rp2040_gpio_setdir(CONFIG_RP2040_SPI0_GPIO + 1, true);
rp2040_gpio_put(CONFIG_RP2040_SPI0_GPIO + 1, true);
rp2040_gpio_init(CONFIG_RP2040_SPI0_CS_GPIO); /* CSn */
rp2040_gpio_setdir(CONFIG_RP2040_SPI0_CS_GPIO, true);
rp2040_gpio_put(CONFIG_RP2040_SPI0_CS_GPIO, true);
#endif
#if defined(CONFIG_RP2040_SPI1) && CONFIG_RP2040_SPI1_GPIO >= 0
rp2040_gpio_set_function(CONFIG_RP2040_SPI1_GPIO,
#ifdef CONFIG_RP2040_SPI1
rp2040_gpio_set_function(CONFIG_RP2040_SPI1_RX_GPIO,
RP2040_GPIO_FUNC_SPI); /* RX */
rp2040_gpio_set_function(CONFIG_RP2040_SPI1_GPIO + 2,
rp2040_gpio_set_function(CONFIG_RP2040_SPI1_SCK_GPIO,
RP2040_GPIO_FUNC_SPI); /* SCK */
rp2040_gpio_set_function(CONFIG_RP2040_SPI1_GPIO + 3,
rp2040_gpio_set_function(CONFIG_RP2040_SPI1_TX_GPIO,
RP2040_GPIO_FUNC_SPI); /* TX */
/* CSn is controlled by board-specific logic */
rp2040_gpio_init(CONFIG_RP2040_SPI1_GPIO + 1); /* CSn */
rp2040_gpio_setdir(CONFIG_RP2040_SPI1_GPIO + 1, true);
rp2040_gpio_put(CONFIG_RP2040_SPI1_GPIO + 1, true);
rp2040_gpio_init(CONFIG_RP2040_SPI1_CS_GPIO); /* CSn */
rp2040_gpio_setdir(CONFIG_RP2040_SPI1_CS_GPIO, true);
rp2040_gpio_put(CONFIG_RP2040_SPI1_CS_GPIO, true);
#endif
}
@@ -462,6 +462,7 @@ int rp2040_bringup(void)
#if defined(CONFIG_RP2040_BOARD_HAS_WS2812) && defined(CONFIG_WS2812)
rp2040_ws2812_setup("/dev/leds0",
CONFIG_RP2040_WS2812_GPIO_PIN,
CONFIG_RP2040_WS2812_PWR_GPIO,
CONFIG_WS2812_LED_COUNT,
HAS_WHITE);
#endif
@@ -74,7 +74,7 @@ void rp2040_spi0select(struct spi_dev_s *dev, uint32_t devid,
spiinfo("devid: %d CS: %s\n", (int)devid,
selected ? "assert" : "de-assert");
rp2040_gpio_put(CONFIG_RP2040_SPI0_GPIO + 1, !selected);
rp2040_gpio_put(CONFIG_RP2040_SPI0_CS_GPIO, !selected);
}
uint8_t rp2040_spi0status(struct spi_dev_s *dev, uint32_t devid)
@@ -97,7 +97,7 @@ int rp2040_spi0cmddata(struct spi_dev_s *dev, uint32_t devid, bool cmd)
* data bits are data or a command.
*/
rp2040_gpio_put(CONFIG_RP2040_SPI0_GPIO, !cmd);
rp2040_gpio_put(CONFIG_RP2040_SPI0_RX_GPIO, !cmd);
return OK;
}
@@ -115,7 +115,7 @@ void rp2040_spi1select(struct spi_dev_s *dev, uint32_t devid,
spiinfo("devid: %d CS: %s\n", (int)devid,
selected ? "assert" : "de-assert");
rp2040_gpio_put(CONFIG_RP2040_SPI1_GPIO + 1, !selected);
rp2040_gpio_put(CONFIG_RP2040_SPI1_CS_GPIO, !selected);
}
uint8_t rp2040_spi1status(struct spi_dev_s *dev, uint32_t devid)
@@ -138,7 +138,7 @@ int rp2040_spi1cmddata(struct spi_dev_s *dev, uint32_t devid, bool cmd)
* data bits are data or a command.
*/
rp2040_gpio_put(CONFIG_RP2040_SPI1_GPIO, !cmd);
rp2040_gpio_put(CONFIG_RP2040_SPI1_RX_GPIO, !cmd);
return OK;
}
+4 -305
View File
@@ -13,11 +13,12 @@ config RP2040_FLASH_BOOT
If not, the binary is for SRAM boot.
config RP2040_FLASH_CHIP
string "flash chip name"
string "Second stage boot loader"
default "w25q080"
---help---
Name of NOR flash device connected to RP2040 SoC.
(Used to choose the secondary boot loader.)
This is the name of the Pico-SDK second stage boot loader
to use for this board. This board using a Q64 flash chip
which is compatible with the w25q080 boot loader.
Basically this option should not be changed.
config RP2040_UF2_BINARY
@@ -26,308 +27,6 @@ config RP2040_UF2_BINARY
---help---
Create nuttx.uf2 binary format used on RP2040 based arch.
config RP2040_UART0_GPIO
int "UART0 GPIO pin assign (0,12,16,28 or -1:no assign)"
default 0
range -1 29
depends on RP2040_UART0
config RP2040_UART1_GPIO
int "UART1 GPIO pin assign (4,8,20,24 or -1:no assign)"
default -1
range -1 29
depends on RP2040_UART1
config RP2040_I2C0_GPIO
int "I2C0 GPIO pin assign (0,4,8,12,28 or -1:no assign)"
default -1
range -1 29
depends on RP2040_I2C0
config RP2040_I2C1_GPIO
int "I2C1 GPIO pin assign (2,6,10,18,26 or -1:no assign)"
default -1
range -1 29
depends on RP2040_I2C1
if RP2040_PWM0
config RP2040_PWM0A_GPIO
int "PWM0 channel 1 GPIO pin assign (0, 16 or -1:no assign)"
default 0
range -1 16
---help---
This sets the GPIO pin to use for the A channel it must be
either 0 or 16, any other value disables the output.
config RP2040_PWM0A_INVERT
bool "PWM0 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM0B_GPIO
int "PWM0 channel 2 GPIO pin assign (1 or -1:no assign)"
default 1
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 1 or 17, any other value disables the output.
config RP2040_PWM0B_INVERT
bool "PWM0 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM0_PHASE_CORRECT
bool "PWM0 phase correct"
default n
endif
if RP2040_PWM1
config RP2040_PWM1A_GPIO
int "PWM1 channel 1 GPIO pin assign (2, 18 or -1:no assign)"
default 2
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 2 or 18, any other value disables the output.
config RP2040_PWM1A_INVERT
bool "PWM1 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM1B_GPIO
int "PWM1 channel 2 GPIO pin assign (3, 19 or -1:no assign)"
default 3
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 3 or 19, any other value disables the output.
config RP2040_PWM1B_INVERT
bool "PWM1 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM1_PHASE_CORRECT
bool "PWM1 phase correct"
default n
endif
if RP2040_PWM2
config RP2040_PWM2A_GPIO
int "PWM2 channel 1 GPIO pin assign (4, 20 or -1:no assign)"
default 4
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 4 or 20, any other value disables the output.
config RP2040_PWM2A_INVERT
bool "PWM2 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM2B_GPIO
int "PWM2 channel 2 GPIO pin assign (5 or -1:no assign)"
default 5
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 5 or 21, any other value disables the output.
config RP2040_PWM2B_INVERT
bool "PWM2 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM2_PHASE_CORRECT
bool "PWM2 phase correct"
default n
endif
if RP2040_PWM3
config RP2040_PWM3A_GPIO
int "PWM3 channel 1 GPIO pin assign (6 or -1:no assign)"
default 6
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 6 or 22, any other value disables the output.
config RP2040_PWM3A_INVERT
bool "PWM3 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM3B_GPIO
int "PWM3 channel 2 GPIO pin assign (7 or -1:no assign)"
default 7
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 7 or 23, any other value disables the output.
config RP2040_PWM3B_INVERT
bool "PWM3 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM3_PHASE_CORRECT
bool "PWM3 phase correct"
default n
endif
if RP2040_PWM4
config RP2040_PWM4A_GPIO
int "PWM4 channel 1 GPIO pin assign (8 or -1:no assign)"
default 8
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 8 or 24, any other value disables the output.
config RP2040_PWM4A_INVERT
bool "PWM4 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM4B_GPIO
int "PWM4 channel 2 GPIO pin assign (9 or -1:no assign)"
default 9
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 9 or 25, any other value disables the output.
config RP2040_PWM4B_INVERT
bool "PWM4 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM4_PHASE_CORRECT
bool "PWM4 phase correct"
default n
endif
if RP2040_PWM5
config RP2040_PWM5A_GPIO
int "PWM5 channel 1 GPIO pin assign (10, 26 or -1:no assign)"
default 10
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 10 or 26, any other value disables the output.
config RP2040_PWM5A_INVERT
bool "PWM5 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM5B_GPIO
int "PWM5 channel 2 GPIO pin assign (27 or -1:no assign)"
default 11
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 11 or 27, any other value disables the output.
config RP2040_PWM5B_INVERT
bool "PWM5 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM5_PHASE_CORRECT
bool "PWM5 phase correct"
default n
endif
if RP2040_PWM6
config RP2040_PWM6A_GPIO
int "PWM6 channel 1 GPIO pin assign (12, 28 or -1:no assign)"
default 12
range -1 29
---help---
This sets the GPIO pin to use for the A channel it must be
either 12 or 28, any other value disables the output.
config RP2040_PWM6A_INVERT
bool "PWM6 channel 1 invert"
default n
---help---
If invert is enabled, the PWM on the A pin will idle high
with the pulse going low.
if PWM_MULTICHAN && PWM_NCHANNELS > 1
config RP2040_PWM6B_GPIO
int "PWM6 channel 2 GPIO pin assign (13, 29 or -1:no assign)"
default 13
range -1 29
---help---
This sets the GPIO pin to use for the B channel it must be
either 13 or 29, any other value disables the output.
config RP2040_PWM6B_INVERT
bool "PWM6 channel 2 invert"
default n
---help---
If invert is enabled, the PWM on the B pin will idle high
with the pulse going low.
endif
config RP2040_PWM6_PHASE_CORRECT
bool "PWM6 phase correct"
default n
endif
config RP2040_SPI0_GPIO
int "SPI0 GPIO pin assign (0,4,16,20 or -1:no assign)"
default -1
range -1 29
depends on RP2040_SPI0
config RP2040_SPI1_GPIO
int "SPI1 GPIO pin assign (8,12,24,28 or -1:no assign)"
default -1
range -1 29
depends on RP2040_SPI1
config RP2040_LCD_SPI_CH
int "RP2040 LCD SPI channel number"
default 0
@@ -22,7 +22,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -55,7 +54,10 @@ CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_I2S=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -54,7 +53,10 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
@@ -21,7 +21,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -82,7 +81,10 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
CONFIG_RR_INTERVAL=200
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -57,12 +56,15 @@ CONFIG_RAM_SIZE=270336
CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_ENC28J60_INTR_GPIO=11
CONFIG_RP2040_ENC28J60_RESET_GPIO=10
CONFIG_RP2040_ENC28J60_INTR_GPIO=3
CONFIG_RP2040_ENC28J60_RESET_GPIO=2
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=12
CONFIG_RP2040_SPI1_TX_GPIO=27
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
CONFIG_RR_INTERVAL=200
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -42,7 +41,6 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_I2C0=y
CONFIG_RP2040_I2C0_GPIO=4
CONFIG_RP2040_I2C=y
CONFIG_RP2040_I2C_DRIVER=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -16,7 +16,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_STACKDUMP=y
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_INTERRUPTSTACK=2048
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -46,7 +45,10 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -61,7 +60,6 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_I2C0=y
CONFIG_RP2040_I2C0_GPIO=4
CONFIG_RP2040_I2C=y
CONFIG_RP2040_I2C_DRIVER=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
@@ -15,7 +15,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -45,7 +44,7 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=12
CONFIG_RP2040_SPI1_TX_GPIO=27
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
CONFIG_RR_INTERVAL=200
@@ -18,7 +18,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -48,7 +47,10 @@ CONFIG_RAM_START=0x20000000
CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_SPI0=y
CONFIG_RP2040_SPI0_GPIO=16
CONFIG_RP2040_SPI0_CS_GPIO=5
CONFIG_RP2040_SPI0_RX_GPIO=4
CONFIG_RP2040_SPI0_SCK_GPIO=6
CONFIG_RP2040_SPI0_TX_GPIO=7
CONFIG_RP2040_SPI=y
CONFIG_RP2040_SPISD=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
@@ -16,7 +16,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -20,7 +20,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -79,7 +78,6 @@ CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_LCD_SPI_CH=1
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=8
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
CONFIG_RR_INTERVAL=200
@@ -20,7 +20,6 @@
CONFIG_ARCH="arm"
CONFIG_ARCH_BOARD="adafruit-kb2040"
CONFIG_ARCH_BOARD_ADAFRUIT_KB2040=y
CONFIG_ARCH_BOARD_COMMON=y
CONFIG_ARCH_CHIP="rp2040"
CONFIG_ARCH_CHIP_RP2040=y
CONFIG_ARCH_RAMVECTORS=y
@@ -76,7 +75,6 @@ CONFIG_READLINE_CMD_HISTORY=y
CONFIG_RP2040_BOARD_HAS_WS2812=y
CONFIG_RP2040_LCD_SPI_CH=1
CONFIG_RP2040_SPI1=y
CONFIG_RP2040_SPI1_GPIO=8
CONFIG_RP2040_SPI=y
CONFIG_RP2040_WS2812_GPIO_PIN=17
CONFIG_RR_INTERVAL=200
@@ -62,10 +62,11 @@
/* GPIO definitions *********************************************************/
#undef BOARD_GPIO_LED_PIN
#define BOARD_NGPIOOUT 1
#define BOARD_NGPIOIN 1
#define BOARD_NGPIOINT 1
#undef BOARD_GPIO_LED_PIN
#define BOARD_GPIO_WS2812_PWR_PIN 11
#define BOARD_NGPIOOUT 1
#define BOARD_NGPIOIN 1
#define BOARD_NGPIOINT 1
/****************************************************************************
* Public Types
@@ -20,7 +20,7 @@
MEMORY
{
flash (rx) : ORIGIN = 0x10000000, LENGTH = 2048K
flash (rx) : ORIGIN = 0x10000000, LENGTH = 8192K
sram (rwx) : ORIGIN = 0x20000000, LENGTH = 264K
}

Some files were not shown because too many files have changed in this diff Show More