Macro can_bit_timings::can_timings [−][src]
can_timings!() { /* proc-macro */ }
This macro generates bit timings struct for provided input frequency and output baudrate.
Inputs:
- required positional argument: input clock frequency in Hertz
- required positional argument: output baudrate in Hertz
- optional named argument midpoint - BS2 segment ratio (default is 0.175)
- optional named argument tolerance - error tolerance (default is 0.5%)
Outputs can_bit_timings_core::CanBitTiming struct into the invocation site.
Frequency can be specified as number or as
a method calls (.mhz()
, .khz()
, .hz()
, .bps()
).
Percents are specified as a ratio (from 0 to 1.0)
or as a method call (from 0.pct()
to 100.pct()
)
let timing = can_timings!(10.mhz(), 1.mhz()); assert_eq!( timing, CanBitTiming{sjw: 1, bs1: 8, bs2: 1, prescaler: 1} ); let timing = can_timings!(10_000_000, 125.khz()); assert_eq!( timing, CanBitTiming{sjw: 1, bs1: 16, bs2: 3, prescaler: 4} ); let timing = can_timings!(10_000_000, 125.khz(), midpoint=0.275, tolerance=0.1.pct()); assert_eq!( timing, CanBitTiming{sjw: 1, bs1: 14, bs2: 5, prescaler: 4} );