hardware flow control(?)

This commit is contained in:
Triss 2022-07-08 04:07:38 +02:00
parent 8e62dd794b
commit c7ec7a1752
3 changed files with 21 additions and 2 deletions

View File

@ -48,8 +48,10 @@ void cdc_uart_init(void) {
gpio_set_function(PINOUT_UART_TX, GPIO_FUNC_UART); gpio_set_function(PINOUT_UART_TX, GPIO_FUNC_UART);
gpio_set_function(PINOUT_UART_RX, GPIO_FUNC_UART); gpio_set_function(PINOUT_UART_RX, GPIO_FUNC_UART);
gpio_set_function(PINOUT_UART_CTS, GPIO_FUNC_SIO);
gpio_set_function(PINOUT_UART_RTS, GPIO_FUNC_SIO);
uart_init(PINOUT_UART_INTERFACE, lc_brate/*PINOUT_UART_BAUDRATE*/); uart_init(PINOUT_UART_INTERFACE, lc_brate/*PINOUT_UART_BAUDRATE*/);
uart_set_hw_flow(PINOUT_UART_INTERFACE, hwflow, hwflow); //uart_set_hw_flow(PINOUT_UART_INTERFACE, hwflow, hwflow);
uart_set_format(PINOUT_UART_INTERFACE, lc_data, lc_stop, lc_parity); uart_set_format(PINOUT_UART_INTERFACE, lc_data, lc_stop, lc_parity);
bi_decl(bi_2pins_with_func(PINOUT_UART_TX, PINOUT_UART_RX, GPIO_FUNC_UART)); bi_decl(bi_2pins_with_func(PINOUT_UART_TX, PINOUT_UART_RX, GPIO_FUNC_UART));
@ -58,6 +60,8 @@ void cdc_uart_deinit(void) {
uart_deinit(PINOUT_UART_INTERFACE); uart_deinit(PINOUT_UART_INTERFACE);
gpio_set_function(PINOUT_UART_TX, GPIO_FUNC_NULL); gpio_set_function(PINOUT_UART_TX, GPIO_FUNC_NULL);
gpio_set_function(PINOUT_UART_RX, GPIO_FUNC_NULL); gpio_set_function(PINOUT_UART_RX, GPIO_FUNC_NULL);
gpio_set_function(PINOUT_UART_CTS, GPIO_FUNC_NULL);
gpio_set_function(PINOUT_UART_RTS, GPIO_FUNC_NULL);
} }
void cdc_uart_task(void) { void cdc_uart_task(void) {
@ -90,6 +94,8 @@ bool cdc_uart_get_hwflow(void) {
bool cdc_uart_set_hwflow(bool enable) { bool cdc_uart_set_hwflow(bool enable) {
hwflow = enable; hwflow = enable;
//uart_set_hw_flow(PINOUT_UART_INTERFACE, enable, enable); //uart_set_hw_flow(PINOUT_UART_INTERFACE, enable, enable);
// TODO: CTS
gpio_put(PINOUT_UART_RTS, enable);
return true; return true;
} }

View File

@ -15,7 +15,7 @@
#define PINOUT_JTAG_TCK 2 // == SWCLK #define PINOUT_JTAG_TCK 2 // == SWCLK
#define PINOUT_JTAG_TMS 3 // == SWDIO #define PINOUT_JTAG_TMS 3 // == SWDIO
#define PINOUT_JTAG_TDI 4 #define PINOUT_JTAG_TDI 4
#define PINOUT_JTAG_TDO 5 #define PINOUT_JTAG_TDO 5 // == SWO
#define PINOUT_JTAG_nTRST 6 #define PINOUT_JTAG_nTRST 6
#define PINOUT_JTAG_nRESET 7 #define PINOUT_JTAG_nRESET 7
#define PINOUT_JTAG_PIO_DEV pio0 #define PINOUT_JTAG_PIO_DEV pio0

View File

@ -469,3 +469,16 @@ struct mode m_01_default = {
}; };
// clang-format on // clang-format on
#if defined(DBOARD_HAS_UART)
// FIXME: use mode-specific callback here?
void tud_cdc_line_state_cb(uint8_t itf, bool dtr, bool rts) {
(void)dtr;
if (mode_current != &m_01_default) return;
if (itf == CDC_N_UART) {
cdc_uart_set_hwflow(rts);
}
}
#endif