165 return static_cast<uint32_t
>(e);
177 return static_cast<ErrorID>(id);
219 uint32_t start_id_mask = 0, uint32_t end_id_mask = UINT32_MAX);
360 uint32_t start_id_mask = 0, uint32_t end_id_mask = UINT32_MAX);
CAN 通信抽象类,定义经典 CAN 帧与订阅接口。 Abstract class for CAN communication with classic CAN frames and subscript...
static constexpr uint32_t FromErrorID(ErrorID e) noexcept
将 ErrorID 转为 id / Convert ErrorID to ClassicPack::id.
static constexpr bool IsErrorId(uint32_t id) noexcept
判断 id 是否处于错误 ID 空间 / Check if id is in error ID space.
Type
CAN 消息类型 / CAN frame type.
@ EXTENDED
扩展数据帧(29-bit ID) / Extended data frame (29-bit ID).
@ REMOTE_EXTENDED
扩展远程帧 / Extended remote frame.
@ STANDARD
标准数据帧(11-bit ID) / Standard data frame (11-bit ID).
@ REMOTE_STANDARD
标准远程帧 / Standard remote frame.
@ ERROR
错误帧(虚拟事件) / Error frame (virtual event).
@ TYPE_NUM
类型数量上界 / Number of frame types.
virtual ErrorCode AddMessage(const ClassicPack &pack)=0
添加经典 CAN 消息 / Add classic CAN message.
static constexpr ErrorID ToErrorID(uint32_t id) noexcept
将 id 解释为 ErrorID / Interpret id as ErrorID.
virtual uint32_t GetClockFreq() const =0
获取 CAN 外设时钟频率(Hz)。 Get CAN peripheral clock frequency in Hz.
virtual ErrorCode GetErrorState(ErrorState &state) const
查询当前错误状态(快照)。 Query current CAN controller error state (snapshot).
virtual ErrorCode SetConfig(const CAN::Configuration &cfg)=0
设置 CAN 配置 / Set CAN configuration.
void OnMessage(const ClassicPack &pack, bool in_isr)
分发接收到的经典 CAN 帧。 Dispatch a received classic CAN frame.
void Register(Callback cb, Type type, FilterMode mode=FilterMode::ID_RANGE, uint32_t start_id_mask=0, uint32_t end_id_mask=UINT32_MAX)
注册经典 CAN 消息回调。 Register classic CAN message callback.
ErrorID
ClassicPack::type == Type::ERROR 时使用的虚拟 ID。 Virtual IDs used when ClassicPack::type == Type::ERROR.
static LIBXR_PACKED_END constexpr uint32_t CAN_ERROR_ID_PREFIX
错误 ID 前缀 / Error ID prefix.
virtual ~CAN()=default
虚析构函数 / Virtual destructor.
FilterMode
CAN 过滤器模式 / CAN filter mode.
CAN()=default
构造函数 / Constructor.
FDCAN 通信抽象类,扩展支持 CAN FD 帧。 Abstract class for FDCAN communication with CAN FD frame support.
FDCAN()=default
构造函数 / Constructor.
virtual ~FDCAN()=default
虚析构函数 / Virtual destructor.
virtual ErrorCode AddMessage(const FDPack &pack)=0
添加 FD CAN 消息 / Add FD CAN message.
void OnMessage(const FDPack &pack, bool in_isr)
分发接收到的 FD CAN 帧。 Dispatch a received FD CAN frame.
virtual ErrorCode SetConfig(const CAN::Configuration &cfg) override=0
设置经典 CAN 配置。 Set classic CAN configuration.
virtual ErrorCode SetConfig(const FDCAN::Configuration &cfg)=0
设置 FDCAN 配置。 Set FDCAN configuration.
void Register(CallbackFD cb, Type type, FilterMode mode=FilterMode::ID_RANGE, uint32_t start_id_mask=0, uint32_t end_id_mask=UINT32_MAX)
注册 FDCAN FD 帧回调。 Register FDCAN FD frame callback.
FilterMode
CAN 过滤器模式 / CAN filter mode.
链表实现,用于存储和管理数据节点。 A linked list implementation for storing and managing data nodes.
LibXR 命名空间 / LibXR namespace.
ErrorCode
定义错误码枚举 / Defines an enumeration for error codes
@ NOT_SUPPORT
不支持 / Not supported
CAN 位时序配置 / Bit timing configuration for CAN.
uint32_t brp
预分频 / Baud rate prescaler.
uint32_t sjw
同步跳宽 / Synchronization jump width.
uint32_t phase_seg2
相位段 2 / Phase segment 2.
uint32_t prop_seg
传播段 / Propagation segment.
uint32_t phase_seg1
相位段 1 / Phase segment 1.
经典 CAN 帧数据结构 / Classic CAN frame structure.
Type type
帧类型 / Frame type.
uint8_t data[8]
数据载荷 / Data payload (up to 8 bytes).
uint8_t dlc
有效数据长度(0~8) / Data length code (0–8).
CAN 配置参数 / CAN configuration parameters.
BitTiming bit_timing
位时序配置 / Bit timing configuration.
float sample_point
仲裁相位采样点(0~1) / Nominal sample point (0–1).
Mode mode
工作模式 / Operating mode.
uint32_t bitrate
仲裁相位目标波特率 / Target nominal bitrate.
CAN 当前错误状态快照(来自硬件计数器/状态机)。 Snapshot of current CAN controller error state (from HW counters/state).
bool bus_off
是否处于 BUS-OFF / True if controller is bus-off.
bool error_passive
是否处于 Error Passive / True if error-passive.
uint8_t tx_error_counter
发送错误计数 TEC / Transmit error counter (TEC).
bool error_warning
是否处于 Error Warning / True if error-warning.
uint8_t rx_error_counter
接收错误计数 REC / Receive error counter (REC).
经典 CAN 订阅过滤器 / Classic CAN subscription filter.
uint32_t start_id_mask
起始 ID 或掩码 / Start ID or mask.
uint32_t end_id_mask
结束 ID 或匹配值 / End ID or match value.
Callback cb
回调函数 / Callback function.
FilterMode mode
过滤模式 / Filter mode.
Type type
帧类型 / Frame type.
CAN 工作模式 / CAN operating mode.
bool triple_sampling
三采样 / Triple sampling.
bool loopback
回环模式 / Loopback mode.
bool one_shot
单次发送模式 / One-shot transmission.
bool listen_only
只听(静默)模式 / Listen-only (silent) mode.
FDCAN 配置参数,扩展 CAN::Configuration。 FDCAN configuration, extending CAN::Configuration.
FDMode fd_mode
FD 模式配置 / FD mode configuration.
float data_sample_point
数据相位采样点 / Data-phase sample point.
DataBitTiming data_timing
数据相位位时序 / Data-phase bit timing.
uint32_t data_bitrate
数据相位波特率 / Data-phase bitrate.
数据相位位时序配置 / Data phase bit timing configuration.
uint32_t prop_seg
传播段 / Propagation segment.
uint32_t sjw
同步跳宽 / Synchronization jump width.
uint32_t phase_seg2
相位段 2 / Phase segment 2.
uint32_t brp
预分频 / Prescaler.
uint32_t phase_seg1
相位段 1 / Phase segment 1.
FDCAN FD 模式配置 / FDCAN FD mode configuration.
bool esi
全局 ESI 标志 / Global ESI flag.
bool brs
是否启用 BRS / Enable Bit Rate Switch.
bool fd_enabled
是否启用 CAN FD / Enable CAN FD.
CAN FD 帧数据结构 / CAN FD frame structure.
Type type
帧类型 / Frame type.
uint32_t id
CAN ID / CAN ID.
uint8_t len
数据长度(0~64) / Data length (0–64 bytes).
uint8_t data[64]
数据载荷 / Data payload.
FDCAN 订阅过滤器 / FDCAN subscription filter.
FilterMode mode
过滤模式 / Filter mode.
uint32_t start_id_mask
起始 ID 或掩码 / Start ID or mask.
CallbackFD cb
回调函数 / Callback function.
Type type
帧类型 / Frame type.
uint32_t end_id_mask
结束 ID 或匹配值 / End ID or match value.