rp2/machine_uart: Allow new TX/RX pins on RP2350.
Signed-off-by: Damien George <damien@micropython.org>
This commit is contained in:
@@ -69,8 +69,13 @@
|
|||||||
#define MAX_BUFFER_SIZE (32766)
|
#define MAX_BUFFER_SIZE (32766)
|
||||||
|
|
||||||
#define IS_VALID_PERIPH(uart, pin) (((((pin) + 4) & 8) >> 3) == (uart))
|
#define IS_VALID_PERIPH(uart, pin) (((((pin) + 4) & 8) >> 3) == (uart))
|
||||||
|
#if PICO_RP2350
|
||||||
|
#define IS_VALID_TX(uart, pin) (((pin) & 1) == 0 && IS_VALID_PERIPH(uart, pin))
|
||||||
|
#define IS_VALID_RX(uart, pin) (((pin) & 1) == 1 && IS_VALID_PERIPH(uart, pin))
|
||||||
|
#else
|
||||||
#define IS_VALID_TX(uart, pin) (((pin) & 3) == 0 && IS_VALID_PERIPH(uart, pin))
|
#define IS_VALID_TX(uart, pin) (((pin) & 3) == 0 && IS_VALID_PERIPH(uart, pin))
|
||||||
#define IS_VALID_RX(uart, pin) (((pin) & 3) == 1 && IS_VALID_PERIPH(uart, pin))
|
#define IS_VALID_RX(uart, pin) (((pin) & 3) == 1 && IS_VALID_PERIPH(uart, pin))
|
||||||
|
#endif
|
||||||
#define IS_VALID_CTS(uart, pin) (((pin) & 3) == 2 && IS_VALID_PERIPH(uart, pin))
|
#define IS_VALID_CTS(uart, pin) (((pin) & 3) == 2 && IS_VALID_PERIPH(uart, pin))
|
||||||
#define IS_VALID_RTS(uart, pin) (((pin) & 3) == 3 && IS_VALID_PERIPH(uart, pin))
|
#define IS_VALID_RTS(uart, pin) (((pin) & 3) == 3 && IS_VALID_PERIPH(uart, pin))
|
||||||
|
|
||||||
@@ -398,8 +403,8 @@ static void mp_machine_uart_init_helper(machine_uart_obj_t *self, size_t n_args,
|
|||||||
__dsb(); // make sure UARTLCR_H register is written to
|
__dsb(); // make sure UARTLCR_H register is written to
|
||||||
uart_set_fifo_enabled(self->uart, true);
|
uart_set_fifo_enabled(self->uart, true);
|
||||||
__dsb(); // make sure UARTLCR_H register is written to
|
__dsb(); // make sure UARTLCR_H register is written to
|
||||||
gpio_set_function(self->tx, GPIO_FUNC_UART);
|
gpio_set_function(self->tx, UART_FUNCSEL_NUM(self->uart, self->tx));
|
||||||
gpio_set_function(self->rx, GPIO_FUNC_UART);
|
gpio_set_function(self->rx, UART_FUNCSEL_NUM(self->uart, self->rx));
|
||||||
if (self->invert & UART_INVERT_RX) {
|
if (self->invert & UART_INVERT_RX) {
|
||||||
gpio_set_inover(self->rx, GPIO_OVERRIDE_INVERT);
|
gpio_set_inover(self->rx, GPIO_OVERRIDE_INVERT);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user