From 42188e47e09eb80c73a3d083369a96f0fc7f574c Mon Sep 17 00:00:00 2001 From: Yorick de Wid Date: Sun, 13 Mar 2022 20:52:55 +0000 Subject: [PATCH] Preconfigured baudrates for FDCAN --- src/config.rs | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/config.rs b/src/config.rs index 05a1e12..dcc56af 100644 --- a/src/config.rs +++ b/src/config.rs @@ -26,6 +26,43 @@ pub struct NominalBitTiming { pub sync_jump_width: NonZeroU8, } impl NominalBitTiming { + pub const BITRATE_1M: NominalBitTiming = NominalBitTiming { + prescaler: unsafe { NonZeroU16::new_unchecked(2) }, + seg1: unsafe { NonZeroU8::new_unchecked(13) }, + seg2: unsafe { NonZeroU8::new_unchecked(2) }, + sync_jump_width: unsafe { NonZeroU8::new_unchecked(1) }, + }; + pub const BITRATE_500K: NominalBitTiming = NominalBitTiming { + prescaler: unsafe { NonZeroU16::new_unchecked(4) }, + seg1: unsafe { NonZeroU8::new_unchecked(13) }, + seg2: unsafe { NonZeroU8::new_unchecked(2) }, + sync_jump_width: unsafe { NonZeroU8::new_unchecked(1) }, + }; + pub const BITRATE_250K: NominalBitTiming = NominalBitTiming { + prescaler: unsafe { NonZeroU16::new_unchecked(8) }, + seg1: unsafe { NonZeroU8::new_unchecked(13) }, + seg2: unsafe { NonZeroU8::new_unchecked(2) }, + sync_jump_width: unsafe { NonZeroU8::new_unchecked(1) }, + }; + pub const BITRATE_125K: NominalBitTiming = NominalBitTiming { + prescaler: unsafe { NonZeroU16::new_unchecked(16) }, + seg1: unsafe { NonZeroU8::new_unchecked(13) }, + seg2: unsafe { NonZeroU8::new_unchecked(2) }, + sync_jump_width: unsafe { NonZeroU8::new_unchecked(1) }, + }; + pub const BITRATE_100K: NominalBitTiming = NominalBitTiming { + prescaler: unsafe { NonZeroU16::new_unchecked(20) }, + seg1: unsafe { NonZeroU8::new_unchecked(13) }, + seg2: unsafe { NonZeroU8::new_unchecked(2) }, + sync_jump_width: unsafe { NonZeroU8::new_unchecked(1) }, + }; + pub const BITRATE_50K: NominalBitTiming = NominalBitTiming { + prescaler: unsafe { NonZeroU16::new_unchecked(40) }, + seg1: unsafe { NonZeroU8::new_unchecked(13) }, + seg2: unsafe { NonZeroU8::new_unchecked(2) }, + sync_jump_width: unsafe { NonZeroU8::new_unchecked(1) }, + }; + #[inline] pub(crate) fn nbrp(&self) -> u16 { u16::from(self.prescaler) & 0x1FF