mirror of
https://github.com/espressif/esp-idf.git
synced 2025-07-30 02:37:19 +02:00
fix(uart): correct C3/S3 module enable porcedure to avoid undesired line noise
This commit is contained in:
@ -107,12 +107,14 @@ static inline void uart_ll_reset_register(uart_port_t uart_num)
|
|||||||
// ESP32C3 requires a workaround: enable core reset before enabling uart module clock to prevent uart output garbage value
|
// ESP32C3 requires a workaround: enable core reset before enabling uart module clock to prevent uart output garbage value
|
||||||
switch (uart_num) {
|
switch (uart_num) {
|
||||||
case 0:
|
case 0:
|
||||||
|
SYSTEM.perip_rst_en0.reg_uart_rst = 0;
|
||||||
UART0.clk_conf.rst_core = 1;
|
UART0.clk_conf.rst_core = 1;
|
||||||
SYSTEM.perip_rst_en0.reg_uart_rst = 1;
|
SYSTEM.perip_rst_en0.reg_uart_rst = 1;
|
||||||
SYSTEM.perip_rst_en0.reg_uart_rst = 0;
|
SYSTEM.perip_rst_en0.reg_uart_rst = 0;
|
||||||
UART0.clk_conf.rst_core = 0;
|
UART0.clk_conf.rst_core = 0;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
SYSTEM.perip_rst_en0.reg_uart1_rst = 0;
|
||||||
UART1.clk_conf.rst_core = 1;
|
UART1.clk_conf.rst_core = 1;
|
||||||
SYSTEM.perip_rst_en0.reg_uart1_rst = 1;
|
SYSTEM.perip_rst_en0.reg_uart1_rst = 1;
|
||||||
SYSTEM.perip_rst_en0.reg_uart1_rst = 0;
|
SYSTEM.perip_rst_en0.reg_uart1_rst = 0;
|
||||||
|
@ -112,18 +112,21 @@ static inline void uart_ll_reset_register(uart_port_t uart_num)
|
|||||||
// ESP32S3 requires a workaround: enable core reset before enabling uart module clock to prevent uart output garbage value
|
// ESP32S3 requires a workaround: enable core reset before enabling uart module clock to prevent uart output garbage value
|
||||||
switch (uart_num) {
|
switch (uart_num) {
|
||||||
case 0:
|
case 0:
|
||||||
|
SYSTEM.perip_rst_en0.uart_rst = 0;
|
||||||
UART0.clk_conf.rst_core = 1;
|
UART0.clk_conf.rst_core = 1;
|
||||||
SYSTEM.perip_rst_en0.uart_rst = 1;
|
SYSTEM.perip_rst_en0.uart_rst = 1;
|
||||||
SYSTEM.perip_rst_en0.uart_rst = 0;
|
SYSTEM.perip_rst_en0.uart_rst = 0;
|
||||||
UART0.clk_conf.rst_core = 0;
|
UART0.clk_conf.rst_core = 0;
|
||||||
break;
|
break;
|
||||||
case 1:
|
case 1:
|
||||||
|
SYSTEM.perip_rst_en0.uart1_rst = 0;
|
||||||
UART1.clk_conf.rst_core = 1;
|
UART1.clk_conf.rst_core = 1;
|
||||||
SYSTEM.perip_rst_en0.uart1_rst = 1;
|
SYSTEM.perip_rst_en0.uart1_rst = 1;
|
||||||
SYSTEM.perip_rst_en0.uart1_rst = 0;
|
SYSTEM.perip_rst_en0.uart1_rst = 0;
|
||||||
UART1.clk_conf.rst_core = 0;
|
UART1.clk_conf.rst_core = 0;
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
|
SYSTEM.perip_rst_en1.uart2_rst = 0;
|
||||||
UART2.clk_conf.rst_core = 1;
|
UART2.clk_conf.rst_core = 1;
|
||||||
SYSTEM.perip_rst_en1.uart2_rst = 1;
|
SYSTEM.perip_rst_en1.uart2_rst = 1;
|
||||||
SYSTEM.perip_rst_en1.uart2_rst = 0;
|
SYSTEM.perip_rst_en1.uart2_rst = 0;
|
||||||
|
Reference in New Issue
Block a user