From cfbf3b2d93e0e7face4d518b85bca46dc9b4e2d6 Mon Sep 17 00:00:00 2001 From: marble Date: Mon, 3 Apr 2023 16:15:17 +0200 Subject: [PATCH] cdc_uart: add RTS and DTR pins --- src/cdc_uart.c | 10 ++++++++++ src/picoprobe_config.h | 2 ++ 2 files changed, 12 insertions(+) diff --git a/src/cdc_uart.c b/src/cdc_uart.c index 45942cf..1099819 100644 --- a/src/cdc_uart.c +++ b/src/cdc_uart.c @@ -43,6 +43,13 @@ void cdc_uart_init(void) { gpio_set_pulls(PICOPROBE_UART_TX, 1, 0); gpio_set_pulls(PICOPROBE_UART_RX, 1, 0); uart_init(PICOPROBE_UART_INTERFACE, PICOPROBE_UART_BAUDRATE); + + gpio_init(PICOPROBE_UART_DTR); + gpio_init(PICOPROBE_UART_RTS); + gpio_set_dir(PICOPROBE_UART_DTR, GPIO_OUT); + gpio_set_dir(PICOPROBE_UART_RTS, GPIO_OUT); + gpio_put(PICOPROBE_UART_DTR, 1); + gpio_put(PICOPROBE_UART_RTS, 1); } void cdc_task(void) @@ -117,6 +124,9 @@ void tud_cdc_line_coding_cb(uint8_t itf, cdc_line_coding_t const* line_coding) void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts) { + gpio_put(PICOPROBE_UART_DTR, !dtr); + gpio_put(PICOPROBE_UART_RTS, !rts); + /* CDC drivers use linestate as a bodge to activate/deactivate the interface. * Resume our UART polling on activate, stop on deactivate */ if (!dtr && !rts) diff --git a/src/picoprobe_config.h b/src/picoprobe_config.h index 1552c36..017a297 100644 --- a/src/picoprobe_config.h +++ b/src/picoprobe_config.h @@ -58,6 +58,8 @@ // UART config #define PICOPROBE_UART_TX 4 #define PICOPROBE_UART_RX 5 +#define PICOPROBE_UART_RTS 7 +#define PICOPROBE_UART_DTR 8 #define PICOPROBE_UART_INTERFACE uart1 #define PICOPROBE_UART_BAUDRATE 115200