Macro can_bit_timings_proc_macro::can_timings_bxcan[][src]

can_timings_bxcan!() { /* proc-macro */ }

This macro generates u32 register for bxcan 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 u32 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_bxcan!(10.mhz(), 1.mhz());
assert_eq!(timing, 0x70000);
let timing = can_timings_bxcan!(10_000_000, 125.khz());
assert_eq!(timing, 0x2f0003);
let timing = can_timings_bxcan!(10_000_000, 125.khz(), midpoint=0.275, tolerance=0.1.pct());
assert_eq!(timing, 0x4d0003);