110 return ErrorCode::NOT_SUPPORT;
164 return static_cast<uint32_t
>(e);
176 return static_cast<ErrorID>(id);
218 uint32_t start_id_mask = 0, uint32_t end_id_mask = UINT32_MAX);
359 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 uint32_t CAN_ERROR_ID_PREFIX
错误 ID 前缀 Error ID prefix.
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.
LockFreeList subscriber_list_[static_cast< uint8_t >(Type::TYPE_NUM)]
按帧类型划分的订阅者链表数组。Subscriber lists per frame type.
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.
LockFreeList subscriber_list_fd_[static_cast< uint8_t >(Type::REMOTE_STANDARD)]
按帧类型划分的 FD 订阅者链表数组。FD subscriber lists per frame type.
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.
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.
uint32_t id
CAN ID(11/29 bit 或 ErrorID)。CAN ID (11/29 bits or ErrorID).
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.
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.
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.
uint32_t end_id_mask
结束 ID 或匹配值。End ID or match value.