pub struct CanConfig<'a, I: Instance> { /* private fields */ }
Expand description
Configuration proxy returned by Can::modify_config
.
Implementations§
source§impl<I: Instance> CanConfig<'_, I>
impl<I: Instance> CanConfig<'_, I>
sourcepub fn set_bit_timing(self, btr: u32) -> Self
pub fn set_bit_timing(self, btr: u32) -> Self
Configures the bit timings.
You can use http://www.bittiming.can-wiki.info/ to calculate the btr
parameter. Enter
parameters as follows:
- Clock Rate: The input clock speed to the CAN peripheral (not the CPU clock speed). This is the clock rate of the peripheral bus the CAN peripheral is attached to (eg. APB1).
- Sample Point: Should normally be left at the default value of 87.5%.
- SJW: Should normally be left at the default value of 1.
Then copy the CAN_BUS_TIME
register value from the table and pass it as the btr
parameter to this method.
sourcepub fn set_loopback(self, enabled: bool) -> Self
pub fn set_loopback(self, enabled: bool) -> Self
Enables or disables loopback mode: Internally connects the TX and RX signals together.
sourcepub fn set_silent(self, enabled: bool) -> Self
pub fn set_silent(self, enabled: bool) -> Self
Enables or disables silent mode: Disconnects the TX signal from the pin.
sourcepub fn set_automatic_retransmit(self, enabled: bool) -> Self
pub fn set_automatic_retransmit(self, enabled: bool) -> Self
Enables or disables automatic retransmission of messages.
If this is enabled, the CAN peripheral will automatically try to retransmit each frame until it can be sent. Otherwise, it will try only once to send each frame.
Automatic retransmission is enabled by default.
sourcepub fn enable(self)
pub fn enable(self)
Leaves initialization mode and enables the peripheral.
To sync with the CAN bus, this will block until 11 consecutive recessive bits are detected on the bus.
If you want to finish configuration without enabling the peripheral, you can call
CanConfig::leave_disabled
or drop
the CanConfig
instead.
sourcepub fn leave_disabled(self)
pub fn leave_disabled(self)
Leaves initialization mode, but keeps the peripheral in sleep mode.
Before the Can
instance can be used, you have to enable it by calling
Can::enable_non_blocking
.