STM32的CANBUS功能模式启动设置是什么意思?



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

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了解不多,但据我了解,它为消息分配时间窗口以满足一些实时要求。因此,通常此位应保持 0。

ABOM(自动总线关闭管理):如果发送错误计数器(TEC)大于255,CAN硬件将切换到总线关闭状态。要恢复,它必须等待恢复序列,即 128 次连续 11 个隐性位的出现。只有在那之后,CAN硬件才能恢复到正常工作状态。此位控制返回行为。如果为 1,则自动返回到正常状态。否则,软件应发出请求,前提是已遵守恢复顺序。

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

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

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

TXFP(传输 FIFO 优先级):您有 3 个传输邮箱。当您填充多个时,硬件必须决定首先传输哪一个。通常,可以假设具有较低ID号的消息更重要,应首先传输。但是,如果您出于某种原因想以先到先得的方式转移它们,则需要将此位设为 1。当然,这只是当地的优先事项。在物理总线上,具有较低 ID 的消息始终具有优先级。

最新更新