Skip to content

Commit 4b4ec44

Browse files
authored
Merge branch 'master' into master
2 parents 65bf32f + 8e62997 commit 4b4ec44

File tree

4 files changed

+15
-14
lines changed

4 files changed

+15
-14
lines changed

cores/esp32/esp32-hal-uart.c

+9-12
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

+1-1
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);

tests/validation/uart/diagram.esp32.json

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
{
77
"type": "board-esp32-devkit-c-v4",
88
"id": "esp",
9-
"attrs": { "cpuFrequency": "40" }
9+
"attrs": { "cpuFrequency": "120" }
1010
}
1111
],
1212
"connections": [

tests/validation/uart/uart.ino

+4
Original file line numberDiff line numberDiff line change
@@ -53,6 +53,8 @@ public:
5353
: uart_num(num), serial(serial_ref), peeked_char(-1), default_rx_pin(rx_pin), default_tx_pin(tx_pin), recv_msg("") {}
5454

5555
void begin(unsigned long baudrate) {
56+
// pinMode will force enabling the internal pullup resistor (IDF 5.3.2 Change)
57+
pinMode(default_rx_pin, INPUT_PULLUP);
5658
serial.begin(baudrate, SERIAL_8N1, default_rx_pin, default_tx_pin);
5759
while (!serial) {
5860
delay(10);
@@ -365,6 +367,8 @@ void change_pins_test(void) {
365367

366368
if (TEST_UART_NUM == 1) {
367369
UARTTestConfig &config = *uart_test_configs[0];
370+
// pinMode will force enabling the internal pullup resistor (IDF 5.3.2 Change)
371+
pinMode(NEW_RX1, INPUT_PULLUP);
368372
config.serial.setPins(NEW_RX1, NEW_TX1);
369373
TEST_ASSERT_EQUAL(NEW_RX1, uart_get_RxPin(config.uart_num));
370374
TEST_ASSERT_EQUAL(NEW_TX1, uart_get_TxPin(config.uart_num));

0 commit comments

Comments
 (0)