@@ -192,14 +192,19 @@ uart_t* uartBegin(uint8_t uart_nr, uint32_t baudrate, uint32_t config, int8_t rx
192
192
UART_MUTEX_LOCK ();
193
193
194
194
uart_config_t uart_config ;
195
- uart_config .baud_rate = _get_effective_baudrate (baudrate );
196
195
uart_config .data_bits = (config & 0xc ) >> 2 ;
197
196
uart_config .parity = (config & 0x3 );
198
197
uart_config .stop_bits = (config & 0x30 ) >> 4 ;
199
198
uart_config .flow_ctrl = UART_HW_FLOWCTRL_DISABLE ;
200
199
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
203
208
ESP_ERROR_CHECK (uart_driver_install (uart_nr , rx_buffer_size , tx_buffer_size , 20 , & (uart -> uart_event_queue ), 0 ));
204
209
ESP_ERROR_CHECK (uart_param_config (uart_nr , & uart_config ));
205
210
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
216
221
return uart ;
217
222
}
218
223
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
220
225
void uartSetFastReading (uart_t * uart )
221
226
{
222
227
if (uart == NULL ) {
0 commit comments