Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit 8e62997

Browse filesBrowse files
SuGliderlucasssvazpre-commit-ci-lite[bot]
authored
fix(UART): sets the correct uart clock source when using begin(baudrate) (espressif#11122)
* fix(uart): uart begin does not set the clock source when baudrate changes * fix(uart): returns success on baud rate change operation * fix(code): uart typo - missing ( in the code * fix(uart): replacing mutex lock to avoid double lock * ci(pre-commit): Apply automatic fixes --------- Co-authored-by: Lucas Saavedra Vaz <32426024+lucasssvaz@users.noreply.github.com> Co-authored-by: pre-commit-ci-lite[bot] <117423508+pre-commit-ci-lite[bot]@users.noreply.github.com>
1 parent 74ee9df commit 8e62997
Copy full SHA for 8e62997

File tree

Expand file treeCollapse file tree

2 files changed

+10
-13
lines changed
Filter options
Expand file treeCollapse file tree

2 files changed

+10
-13
lines changed

‎cores/esp32/esp32-hal-uart.c

Copy file name to clipboardExpand all lines: cores/esp32/esp32-hal-uart.c
+9-12Lines changed: 9 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -585,17 +585,11 @@ uart_t *uartBegin(
585585
uartEnd(uart_nr);
586586
} else {
587587
bool retCode = true;
588-
UART_MUTEX_LOCK();
589588
//User may just want to change some parameters, such as baudrate, data length, parity, stop bits or pins
590589
if (uart->_baudrate != baudrate) {
591-
if (ESP_OK != uart_set_baudrate(uart_nr, baudrate)) {
592-
log_e("UART%d changing baudrate failed.", uart_nr);
593-
retCode = false;
594-
} else {
595-
log_v("UART%d changed baudrate to %d", uart_nr, baudrate);
596-
uart->_baudrate = baudrate;
597-
}
590+
retCode = uartSetBaudRate(uart, baudrate);
598591
}
592+
UART_MUTEX_LOCK();
599593
uart_word_length_t data_bits = (config & 0xc) >> 2;
600594
uart_parity_t parity = config & 0x3;
601595
uart_stop_bits_t stop_bits = (config & 0x30) >> 4;
@@ -972,10 +966,11 @@ void uartFlushTxOnly(uart_t *uart, bool txOnly) {
972966
UART_MUTEX_UNLOCK();
973967
}
974968

975-
void uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
969+
bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
976970
if (uart == NULL) {
977-
return;
971+
return false;
978972
}
973+
bool retCode = true;
979974
UART_MUTEX_LOCK();
980975
#if SOC_UART_SUPPORT_XTAL_CLK // ESP32-S3, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-H2 and ESP32-P4
981976
soc_module_clk_t newClkSrc = UART_SCLK_XTAL;
@@ -993,12 +988,14 @@ void uartSetBaudRate(uart_t *uart, uint32_t baud_rate) {
993988
uart_ll_set_sclk(UART_LL_GET_HW(uart->num), newClkSrc);
994989
#endif
995990
if (uart_set_baudrate(uart->num, baud_rate) == ESP_OK) {
996-
log_v("Setting UART%d baud rate to %d.", uart->num, baud_rate);
991+
log_v("Setting UART%d baud rate to %ld.", uart->num, baud_rate);
997992
uart->_baudrate = baud_rate;
998993
} else {
999-
log_e("Setting UART%d baud rate to %d has failed.", uart->num, baud_rate);
994+
retCode = false;
995+
log_e("Setting UART%d baud rate to %ld has failed.", uart->num, baud_rate);
1000996
}
1001997
UART_MUTEX_UNLOCK();
998+
return retCode;
1002999
}
10031000

10041001
uint32_t uartGetBaudRate(uart_t *uart) {

‎cores/esp32/esp32-hal-uart.h

Copy file name to clipboardExpand all lines: cores/esp32/esp32-hal-uart.h
+1-1Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ void uartWriteBuf(uart_t *uart, const uint8_t *data, size_t len);
5858
void uartFlush(uart_t *uart);
5959
void uartFlushTxOnly(uart_t *uart, bool txOnly);
6060

61-
void uartSetBaudRate(uart_t *uart, uint32_t baud_rate);
61+
bool uartSetBaudRate(uart_t *uart, uint32_t baud_rate);
6262
uint32_t uartGetBaudRate(uart_t *uart);
6363

6464
void uartSetRxInvert(uart_t *uart, bool invert);

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.