Skip to content

Add an option to force IDF's default UART clock source #11191

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 39 commits into from
Apr 9, 2025
Merged
Changes from 1 commit
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
ddc95d9
Add an option to force IDF's default UART clock source
gonzabrusco Mar 27, 2025
a990f65
Merge branch 'master' into serial_clk_select
gonzabrusco Mar 28, 2025
bb136c8
Merge branch 'master' into serial_clk_select
SuGlider Mar 31, 2025
f64ded2
feat(uart): adds function to set clock source
SuGlider Apr 2, 2025
00e9826
Merge branch 'master' into serial_clk_select
SuGlider Apr 2, 2025
baced53
feat(uart): add uart clock source selection method
SuGlider Apr 2, 2025
36efd18
feat(uart): add uart hall function to set the uart clock source
SuGlider Apr 2, 2025
d860572
feat(uart): add function to set the uart clock source
SuGlider Apr 2, 2025
667dcac
feat(uart): set clock source as necessary
SuGlider Apr 2, 2025
720747f
fix(uart): missing class qualifier declaration
SuGlider Apr 2, 2025
e9bf067
fix(uart): fixing a typo and non LP UART SoC clk src setting
SuGlider Apr 2, 2025
858c0c2
fix(uart): variable name, typo error
SuGlider Apr 2, 2025
a7c6054
fix(uart): retores previous identation reducing diff load
SuGlider Apr 2, 2025
d8526f8
feat(uart): apply CONFIG_ARDUINO_SERIAL_FORCE_IDF_DEFAULT_CLOCK_SOURC…
SuGlider Apr 2, 2025
513d67f
feat(uart): adds option for UART_CLK_SRC_DEFAULT
SuGlider Apr 2, 2025
0fe2b60
feat(uart): adds option for setting default uart clock source from IDF
SuGlider Apr 2, 2025
3264693
feat(uart): documents UART_CLK_SRC_DEFAULT as option in header file
SuGlider Apr 2, 2025
4d7afe8
feat(uart): documents using the IDF default uart clock source
SuGlider Apr 2, 2025
673eff2
fix(uart): type missmatch may cause error
SuGlider Apr 2, 2025
5ed541d
fix(uart): type missmatch may cause error, test for -1
SuGlider Apr 2, 2025
530fcd0
feat(uart): considering both HP and LP default uart clock source
SuGlider Apr 2, 2025
7715d40
feat(uart): improve the defined value for UART_CLK_SRC_DEFAULT
SuGlider Apr 2, 2025
4c6d92c
fix(uart): using uart_sclk_t as hal level parameter
SuGlider Apr 2, 2025
291358d
feat(uart): apply default LP uart clock source
SuGlider Apr 2, 2025
3e549d6
fix(uart): considers that it may set the LP UART as well
SuGlider Apr 2, 2025
0651cd5
feat(uart): using UART SCLK enum for uart clock source values
SuGlider Apr 2, 2025
145b0a1
fix(uart): using UART_CLK_SRC_RTC now
SuGlider Apr 2, 2025
5857606
fix(uart): documentation using UART_CLK_SRC_RTC now
SuGlider Apr 2, 2025
4a93111
fix(uart): fix old commentary that is not correct anymore
SuGlider Apr 3, 2025
25b0326
fix(uart): wrong identation in code line
SuGlider Apr 3, 2025
05337af
fix(uart): using uart number as argument instead
SuGlider Apr 3, 2025
aa7a37f
fix(uart): using uart number as argument in setClockSource()
SuGlider Apr 3, 2025
57410d8
fix(uart): using uart number as parameter in uartSetClockSource()
SuGlider Apr 3, 2025
9e1ae8e
feat(uart): update Kconfig.projbuild to reflect functionality
SuGlider Apr 4, 2025
4279699
feat(uart): removing Kconfig.projbuild option to force default clk src
SuGlider Apr 4, 2025
589fa60
feat(uart): removes kconfig option to force uart default clk src
SuGlider Apr 4, 2025
f5918e1
Merge branch 'master' into serial_clk_select
SuGlider Apr 5, 2025
84da5d8
fix(uart): replacing #if #endif by #if #elif #endif for the same enum
SuGlider Apr 6, 2025
3e78c46
ci(pre-commit): Apply automatic fixes
pre-commit-ci-lite[bot] Apr 6, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
feat(uart): add uart clock source selection method
  • Loading branch information
SuGlider authored Apr 2, 2025
commit baced536eed4fdb06d1ab19474fdc5ce9375bede
14 changes: 14 additions & 0 deletions cores/esp32/HardwareSerial.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -607,6 +607,20 @@ bool HardwareSerial::setMode(SerialMode mode) {
return uartSetMode(_uart, mode);
}

// Sets the UART Clock Source based on the compatible SoC options
// This method must be called before starting UART using begin(), otherwise it won't have any effect.
// Clock Source Options are:
// UART_CLK_SRC_APB :: ESP32, ESP32-S2, ESP32-C3 and ESP32-S3
// UART_CLK_SRC_PLL :: ESP32-C2, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2 and ESP32-P4
// UART_CLK_SRC_XTAL :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
// UART_CLK_SRC_RTC_FAST :: ESP32-C2, ESP32-C3, ESP32-C5, ESP32-C6, ESP32-C61, ESP32-H2, ESP32-S3 and ESP32-P4
// UART_CLK_SRC_REF_TICK :: ESP32 and ESP32-S2
// Note: CLK_SRC_PLL Freq depends on the SoC - ESP32-C2 has 40MHz, ESP32-H2 has 48MHz and ESP32-C5, C6, C61 and P4 has 80MHz
// Note: ESP32-C6, C61, ESP32-P4 and ESP32-C5 have LP UART that will use only RTC_FAST or XTAL/2 as Clock Source
bool setClockSource(SerialClkSrc clkSrc) {
return uartSetClockSource(_uart, (uart_sclk_t) clkSrc);
}

// minimum total RX Buffer size is the UART FIFO space (128 bytes for most SoC) + 1. IDF imposition.
// LP UART has FIFO of 16 bytes
size_t HardwareSerial::setRxBufferSize(size_t new_size) {
Expand Down
Loading