@@ -59,7 +59,7 @@ struct uart_struct_t {
59
59
uint16_t _rx_buffer_size , _tx_buffer_size ; // UART RX and TX buffer sizes
60
60
bool _inverted ; // UART inverted signal
61
61
uint8_t _rxfifo_full_thrhd ; // UART RX FIFO full threshold
62
- int8_t _uart_clock_source ; // UART Clock Source used when it is started using uartBegin ()
62
+ int8_t _uart_clock_source ; // UART Clock Source that should be used if user defines an specific one with setClockSource ()
63
63
};
64
64
65
65
#if CONFIG_DISABLE_HAL_LOCKS
@@ -820,7 +820,7 @@ uart_t *uartBegin(
820
820
uart_config .baud_rate = baudrate ;
821
821
#if SOC_UART_LP_NUM >= 1
822
822
if (uart_nr >= SOC_UART_HP_NUM ) { // it is a LP UART NUM
823
- if (uart -> _uart_clock_source > 0 ) {
823
+ if (uart -> _uart_clock_source >= 0 ) {
824
824
uart_config .lp_source_clk = (soc_periph_lp_uart_clk_src_t )uart -> _uart_clock_source ; // use user defined LP UART clock
825
825
log_v ("Setting UART%d to user defined LP clock source (%d) " , uart_nr , uart -> _uart_clock_source );
826
826
} else {
@@ -881,14 +881,7 @@ uart_t *uartBegin(
881
881
uart -> _tx_buffer_size = tx_buffer_size ;
882
882
uart -> has_peek = false;
883
883
uart -> peek_byte = 0 ;
884
- #if SOC_UART_LP_NUM >= 1
885
- if (uart_nr >= SOC_UART_HP_NUM ) {
886
- uart -> _uart_clock_source = uart_config .lp_source_clk ;
887
- } else
888
- #endif
889
- {
890
- uart -> _uart_clock_source = uart_config .source_clk ;
891
- }
884
+ // uart->_uart_clock_source can only change by explicit user API request/call
892
885
}
893
886
UART_MUTEX_UNLOCK ();
894
887
@@ -1149,10 +1142,9 @@ bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
1149
1142
}
1150
1143
bool retCode = true;
1151
1144
soc_module_clk_t newClkSrc = UART_SCLK_DEFAULT ;
1152
- int8_t previousClkSrc = uart -> _uart_clock_source ;
1153
1145
#if SOC_UART_LP_NUM >= 1
1154
1146
if (uart -> num >= SOC_UART_HP_NUM ) { // it is a LP UART NUM
1155
- if (uart -> _uart_clock_source > 0 ) {
1147
+ if (uart -> _uart_clock_source >= 0 ) {
1156
1148
newClkSrc = (soc_periph_lp_uart_clk_src_t )uart -> _uart_clock_source ; // use user defined LP UART clock
1157
1149
log_v ("Setting UART%d to user defined LP clock source (%d) " , uart -> num , newClkSrc );
1158
1150
} else {
@@ -1187,13 +1179,10 @@ bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
1187
1179
}
1188
1180
}
1189
1181
UART_MUTEX_LOCK ();
1190
- // if necessary, set the correct UART Clock Source before changing the baudrate
1191
- if (previousClkSrc < 0 || previousClkSrc != newClkSrc ) {
1192
- HP_UART_SRC_CLK_ATOMIC () {
1193
- uart_ll_set_sclk (UART_LL_GET_HW (uart -> num ), newClkSrc );
1194
- }
1195
- uart -> _uart_clock_source = newClkSrc ;
1182
+ HP_UART_SRC_CLK_ATOMIC () {
1183
+ uart_ll_set_sclk (UART_LL_GET_HW (uart -> num ), newClkSrc );
1196
1184
}
1185
+ // uart->_uart_clock_source can only change by explicit user API request/call
1197
1186
if (uart_set_baudrate (uart -> num , baud_rate ) == ESP_OK ) {
1198
1187
log_v ("Setting UART%d baud rate to %ld." , uart -> num , baud_rate );
1199
1188
uart -> _baudrate = baud_rate ;
@@ -1312,7 +1301,7 @@ bool uartSetClockSource(uint8_t uartNum, uart_sclk_t clkSrc) {
1312
1301
{
1313
1302
uart -> _uart_clock_source = clkSrc ;
1314
1303
}
1315
- //log_i ("UART%d set clock source to %d", uart->num, uart->_uart_clock_source);
1304
+ log_v ("UART%d set clock source to %d" , uart -> num , uart -> _uart_clock_source );
1316
1305
return true;
1317
1306
}
1318
1307
0 commit comments