Skip to content

Serial: Sending break condition #190

Open
@dbrgn

Description

@dbrgn

It seems like an embedded-hal driver cannot issue a USART break condition using only the embedded-hal serial trait, right?

A break condition is signaled to the module by keeping the UART_RX pin
low for longer than the time to transmit a complete character. For example,
at the default baud rate of 57600 bps keeping the UART_RX pin low for 938
us is a valid break condition, whereas at 9600 bps this would be interpreted
as a 0x00 character. Thus, the break condition needs to be long enough
to still be interpreted as such at the baud rate that is currently in use.

Also, in Wikipedia: https://en.wikipedia.org/wiki/Universal_asynchronous_receiver-transmitter#Break_condition

It seems that a HAL would have to reconfigure the pin as GPIO output pin, pull it low for a certain duration (depending on baudrate), then reconfigure it as serial pin again.

Would it make sense to add a BreakCondition trait to the serial module?

trait BreakCondition {
    type Error;
    fn send_break_condition(&mut self) -> nb::Result<(), Self::Error>;
}

(Edit: Updated to take &mut self instead of self)

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions