Skip to content

Commit 99f66d3

Browse files
authored
fixes UART at lower than 80MHz | S3 C3 (espressif#7496)
1 parent 9275dbf commit 99f66d3

File tree

1 file changed

+9
-4
lines changed

1 file changed

+9
-4
lines changed

Diff for: cores/esp32/esp32-hal-uart.c

+9-4
Original file line numberDiff line numberDiff line change
@@ -192,14 +192,19 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx
192192
UART_MUTEX_LOCK();
193193

194194
uart_config_t uart_config;
195-
uart_config.baud_rate = _get_effective_baudrate(baudrate);
196195
uart_config.data_bits = (config & 0xc) >> 2;
197196
uart_config.parity = (config & 0x3);
198197
uart_config.stop_bits = (config & 0x30) >> 4;
199198
uart_config.flow_ctrl = UART_HW_FLOWCTRL_DISABLE;
200199
uart_config.rx_flow_ctrl_thresh = rxfifo_full_thrhd;
201-
uart_config.source_clk = UART_SCLK_APB;
202-
200+
#if SOC_UART_SUPPORT_XTAL_CLK
201+
// works independently of APB frequency
202+
uart_config.source_clk = UART_SCLK_XTAL; // ESP32C3, ESP32S3
203+
uart_config.baud_rate = baudrate;
204+
#else
205+
uart_config.source_clk = UART_SCLK_APB; // ESP32, ESP32S2
206+
uart_config.baud_rate = _get_effective_baudrate(baudrate);
207+
#endif
203208
ESP_ERROR_CHECK(uart_driver_install(uart_nr, rx_buffer_size, tx_buffer_size, 20, &(uart->uart_event_queue), 0));
204209
ESP_ERROR_CHECK(uart_param_config(uart_nr, &uart_config));
205210
ESP_ERROR_CHECK(uart_set_pin(uart_nr, txPin, rxPin, UART_PIN_NO_CHANGE, UART_PIN_NO_CHANGE));
@@ -216,7 +221,7 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx
216221
return uart;
217222
}
218223

219-
// This code is under testing - for now just keep it here
224+
// This function code is under testing - for now just keep it here
220225
void uartSetFastReading(uart_t* uart)
221226
{
222227
if(uart == NULL) {

0 commit comments

Comments
 (0)