diff --git a/components/hal/esp32c2/include/hal/uart_ll.h b/components/hal/esp32c2/include/hal/uart_ll.h index 7c5e3d12ed..498071aba9 100644 --- a/components/hal/esp32c2/include/hal/uart_ll.h +++ b/components/hal/esp32c2/include/hal/uart_ll.h @@ -708,8 +708,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_app_ctrl(uart_dev_t *hw) hw->conf0.irda_en = 0; hw->conf0.sw_rts = 0; hw->conf0.irda_en = 0; - hw->rs485_conf.dl0_en = 1; - hw->rs485_conf.dl1_en = 1; hw->rs485_conf.en = 1; } @@ -726,12 +724,9 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_half_duplex(uart_dev_t *hw) hw->conf0.sw_rts = 1; // Half duplex mode hw->rs485_conf.tx_rx_en = 0; - // Setting this bit will allow data to be transmitted while receiving data(full-duplex mode). - // But note that this full-duplex mode has no conflict detection function - hw->rs485_conf.rx_busy_tx_en = 0; + // This is to void collision + hw->rs485_conf.rx_busy_tx_en = 1; hw->conf0.irda_en = 0; - hw->rs485_conf.dl0_en = 1; - hw->rs485_conf.dl1_en = 1; hw->rs485_conf.en = 1; } @@ -749,8 +744,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_collision_detect(uart_dev_t *hw) hw->rs485_conf.tx_rx_en = 1; // Transmitter should send data when the receiver is busy, hw->rs485_conf.rx_busy_tx_en = 1; - hw->rs485_conf.dl0_en = 1; - hw->rs485_conf.dl1_en = 1; hw->conf0.sw_rts = 0; hw->rs485_conf.en = 1; } diff --git a/components/hal/esp32c3/include/hal/uart_ll.h b/components/hal/esp32c3/include/hal/uart_ll.h index f9f00ad85a..8261a6662d 100644 --- a/components/hal/esp32c3/include/hal/uart_ll.h +++ b/components/hal/esp32c3/include/hal/uart_ll.h @@ -711,8 +711,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_app_ctrl(uart_dev_t *hw) hw->conf0.irda_en = 0; hw->conf0.sw_rts = 0; hw->conf0.irda_en = 0; - hw->rs485_conf.dl0_en = 1; - hw->rs485_conf.dl1_en = 1; hw->rs485_conf.en = 1; } @@ -727,14 +725,11 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_half_duplex(uart_dev_t *hw) { // Enable receiver, sw_rts = 1 generates low level on RTS pin hw->conf0.sw_rts = 1; - // Half duplex mode + // Must be set to 0 to automatically remove echo hw->rs485_conf.tx_rx_en = 0; - // Setting this bit will allow data to be transmitted while receiving data(full-duplex mode). - // But note that this full-duplex mode has no conflict detection function - hw->rs485_conf.rx_busy_tx_en = 0; + // This is to void collision + hw->rs485_conf.rx_busy_tx_en = 1; hw->conf0.irda_en = 0; - hw->rs485_conf.dl0_en = 1; - hw->rs485_conf.dl1_en = 1; hw->rs485_conf.en = 1; } @@ -752,8 +747,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_collision_detect(uart_dev_t *hw) hw->rs485_conf.tx_rx_en = 1; // Transmitter should send data when the receiver is busy, hw->rs485_conf.rx_busy_tx_en = 1; - hw->rs485_conf.dl0_en = 1; - hw->rs485_conf.dl1_en = 1; hw->conf0.sw_rts = 0; hw->rs485_conf.en = 1; } diff --git a/components/hal/esp32c6/include/hal/uart_ll.h b/components/hal/esp32c6/include/hal/uart_ll.h index cbbf308bdc..c6793ff8c4 100644 --- a/components/hal/esp32c6/include/hal/uart_ll.h +++ b/components/hal/esp32c6/include/hal/uart_ll.h @@ -913,8 +913,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_app_ctrl(uart_dev_t *hw) hw->conf0_sync.irda_en = 0; hw->conf0_sync.sw_rts = 0; hw->conf0_sync.irda_en = 0; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); } @@ -936,12 +934,9 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_half_duplex(uart_dev_t *hw) hw->conf0_sync.sw_rts = 1; // Half duplex mode hw->rs485_conf_sync.rs485tx_rx_en = 0; - // Setting this bit will allow data to be transmitted while receiving data(full-duplex mode). - // But note that this full-duplex mode has no conflict detection function - hw->rs485_conf_sync.rs485rxby_tx_en = 0; + // This is to void collision + hw->rs485_conf_sync.rs485rxby_tx_en = 1; hw->conf0_sync.irda_en = 0; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); } @@ -964,8 +959,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_collision_detect(uart_dev_t *hw) hw->rs485_conf_sync.rs485tx_rx_en = 1; // Transmitter should send data when the receiver is busy, hw->rs485_conf_sync.rs485rxby_tx_en = 1; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->conf0_sync.sw_rts = 0; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); diff --git a/components/hal/esp32h2/include/hal/uart_ll.h b/components/hal/esp32h2/include/hal/uart_ll.h index 14cbbfb14f..ed21113f62 100644 --- a/components/hal/esp32h2/include/hal/uart_ll.h +++ b/components/hal/esp32h2/include/hal/uart_ll.h @@ -755,8 +755,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_app_ctrl(uart_dev_t *hw) hw->conf0_sync.irda_en = 0; hw->conf0_sync.sw_rts = 0; hw->conf0_sync.irda_en = 0; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); } @@ -774,12 +772,9 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_half_duplex(uart_dev_t *hw) hw->conf0_sync.sw_rts = 1; // Half duplex mode hw->rs485_conf_sync.rs485tx_rx_en = 0; - // Setting this bit will allow data to be transmitted while receiving data(full-duplex mode). - // But note that this full-duplex mode has no conflict detection function - hw->rs485_conf_sync.rs485rxby_tx_en = 0; + // This is to void collision + hw->rs485_conf_sync.rs485rxby_tx_en = 1; hw->conf0_sync.irda_en = 0; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); } @@ -798,8 +793,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_collision_detect(uart_dev_t *hw) hw->rs485_conf_sync.rs485tx_rx_en = 1; // Transmitter should send data when the receiver is busy, hw->rs485_conf_sync.rs485rxby_tx_en = 1; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->conf0_sync.sw_rts = 0; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); diff --git a/components/hal/esp32p4/include/hal/uart_ll.h b/components/hal/esp32p4/include/hal/uart_ll.h index 70560c235d..b0f86ae79f 100644 --- a/components/hal/esp32p4/include/hal/uart_ll.h +++ b/components/hal/esp32p4/include/hal/uart_ll.h @@ -1029,8 +1029,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_app_ctrl(uart_dev_t *hw) hw->conf0_sync.irda_en = 0; hw->conf0_sync.sw_rts = 0; hw->conf0_sync.irda_en = 0; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); } @@ -1052,12 +1050,9 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_rs485_half_duplex(uart_dev_t *hw) hw->conf0_sync.sw_rts = 1; // Half duplex mode hw->rs485_conf_sync.rs485tx_rx_en = 0; - // Setting this bit will allow data to be transmitted while receiving data(full-duplex mode). - // But note that this full-duplex mode has no conflict detection function - hw->rs485_conf_sync.rs485rxby_tx_en = 0; + // This is to void collision + hw->rs485_conf_sync.rs485rxby_tx_en = 1; hw->conf0_sync.irda_en = 0; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw); } @@ -1080,8 +1075,6 @@ FORCE_INLINE_ATTR void uart_ll_set_mode_collision_detect(uart_dev_t *hw) hw->rs485_conf_sync.rs485tx_rx_en = 1; // Transmitter should send data when the receiver is busy, hw->rs485_conf_sync.rs485rxby_tx_en = 1; - hw->rs485_conf_sync.dl0_en = 1; - hw->rs485_conf_sync.dl1_en = 1; hw->conf0_sync.sw_rts = 0; hw->rs485_conf_sync.rs485_en = 1; uart_ll_update(hw);