STM32的CANBUS功能模式初始化设置是什么意思?

What is the meaning of CANBUS function mode initilazing settings for STM32?

我想了解以下功能模式定义的含义,库中有解释。但我不明白,因为解释很短而且不够。我在网上搜索我找不到任何相关信息。

CAN_InitStructure.CAN_TTCM = DISABLE;
    CAN_InitStructure.CAN_ABOM = DISABLE;
    CAN_InitStructure.CAN_AWUM = DISABLE;
    CAN_InitStructure.CAN_NART = ENABLE;
    CAN_InitStructure.CAN_RFLM = DISABLE;
    CAN_InitStructure.CAN_TXFP = ENABLE;

这些是位于 CAN 主控制寄存器 (CAN_MCR) 中的位的名称。因此,它们含义的正确来源是参考手册。我的以下回答会从参考手册中复制和粘贴,但我会尝试详细解释这些部分。

TTCM(时间触发通信模式): 该位激活时间触发通信 (TTCAN) 模式,它是 CAN 标准的扩展。我对 TTCAN 了解不多,但据我了解,它为消息分配时间 windows 以满足某些 real-time 要求。因此,通常该位应保持为 0。

ABOM(自动bus-off管理):如果传输错误计数器(TEC)大于255,CAN硬件切换到bus-off状态.要恢复,它必须等待恢复序列,即 11 个连续隐性位出现 128 次。只有这样,CAN 硬件才能return 进入正常运行状态。该位控制 returning 行为。如果它是 1,return 进入正常状态是自动的。否则,软件应发出请求,前提是已观察到恢复序列。

AWUM(自动唤醒模式): CAN 模块可以处于 3 种模式之一:初始化模式、正常模式或睡眠(低功耗)模式。睡眠模式由软件请求。但是,您有 2 个选项可以退出睡眠模式。如果该位为 0,则必须手动退出睡眠模式。您可以启用 CAN 唤醒中断以通知您总线 activity,然后在 ISR 中退出睡眠模式。但如果该位为 1,则硬件 return 在检测到总线 activity 时自动进入正常模式。

NART(无自动重传): 通常,如果之前的尝试失败,CAN 硬件会重试传输消息,因为仲裁丢失等原因。但是如果您将此位设置为 1 ,发射机不重试。当您使用时间触发通信 (TTCAN) 时,这是必需的。否则,您应该将此位保留为 0。

RFLM(接收 FIFO 锁定模式): 您的接收邮箱有 3 级深度,这意味着它们在溢出之前最多可以存储 3 条消息。该位控制邮箱溢出时发生的情况。默认行为是保留最旧的 2 条消息和最新的一条。例如,如果您收到 5 条消息,缓冲区将保留消息 1、2 和 5。但是,如果您将此位设置为 1,则邮箱将保留消息 1、2 和 3 并丢弃新到达的消息。

TXFP(发送FIFO优先级):你有3个发送邮箱。当你填充多个时,硬件必须决定先传输哪一个。通常,可以假设 ID 号较小的消息更重要,应该首先传输。但是如果你因为某种原因想以first-comes-first-served的方式传输它们,你需要把这个位设置为1。当然,这只是本地优先级。在物理总线上,ID 小的消息总是优先的。