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}
);