esp-idf-hal icon indicating copy to clipboard operation
esp-idf-hal copied to clipboard

[Add] UART RS485 mode

Open xiaguangbo opened this issue 7 months ago • 1 comments

RTS for RS485 Half-Duplex Mode manages DE/~RE, tested

in esp-idf-hal/src/uart.rs: fn new_common

... 
esp!(unsafe {
        uart_driver_install(
            UART::port(),
            if rx.is_some() {
                config.rx_fifo_size as _
            } else {
                0
            },
            if tx.is_some() {
                config.tx_fifo_size as _
            } else {
                0
            },
            config.queue_size as _,
            queue.map(|q| q as *mut _).unwrap_or(ptr::null_mut()),
            InterruptType::to_native(config.intr_flags) as i32,
        )
    })?;

    esp!(unsafe {uart_set_mode(UART::port(), uart_mode_t_UART_MODE_RS485_HALF_DUPLEX)})?; // add this

    // Configure interrupts after installing the driver
    // so it won't get overwritten.
    let usr_intrs = config.event_config.clone().into();
    esp!(unsafe { uart_intr_config(UART::port(), &usr_intrs as *const _) })?;
... 

xiaguangbo avatar Jul 04 '24 18:07 xiaguangbo