@@ -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
220225void uartSetFastReading (uart_t * uart )
221226{
222227 if (uart == NULL ) {
0 commit comments