• The STM supports a special Half duplex mode in the UART see section 27.3.10 in the reference manual, this would save you a port line. Also this might stop you receiving what you transmit.

    Single-wire half-duplex communication
    The single-wire half-duplex mode is selected by setting the HDSEL bit in the USART_CR3
    register. In this mode, the following bits must be kept cleared:
    • LINEN and CLKEN bits in the USART_CR2 register,
    • SCEN and IREN bits in the USART_CR3 register.

    The USART can be configured to follow a single-wire half-duplex protocol. In single-wire
    half-duplex mode, the TX and RX pins are connected internally. The selection between halfand
    full-duplex communication is made with a control bit ‘HALF DUPLEX SEL’ (HDSEL in
    As soon as HDSEL is written to 1:
    • RX is no longer used,
    • TX is always released when no data is transmitted. Thus, it acts as a standard IO in idle
    or in reception. It means that the IO must be configured so that TX is configured as
    floating input (or output high open-drain) when not driven by the USART.
    Apart from this, the communications are similar to what is done in normal USART mode.
    The conflicts on the line must be managed by the software (by the use of a centralized
    arbiter, for instance). In particular, the transmission is never blocked by hardware and
    continue to occur as soon as a data is written in the data register while the TE bit is set.


Avatar for mhoneywill @mhoneywill started