我想了解以下功能模式定义的含义,库中有解释。但我不明白,因为解释很短而且不够。我在网上搜索我找不到任何有关的信息。
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;
Run Code Online (Sandbox Code Playgroud)
这些是位于 CAN 主控制寄存器 ( CAN_MCR )中的位的名称。因此,它们含义的正确来源是参考手册。我的以下答案将是参考手册中的一些复制和粘贴,但我将尝试详细解释这些部分。
TTCM(时间触发通信模式):该位激活时间触发通信(TTCAN)模式,它是 CAN 标准的扩展。我对 TTCAN 了解不多,但据我了解,它为消息分配时间窗口以满足一些实时要求。因此,通常该位应保持为 0。
ABOM(自动总线关闭管理):如果传输错误计数器 (TEC) 大于 255,则 CAN 硬件切换到总线关闭状态。要恢复,它必须等待恢复序列,即 11 个连续隐性位出现 128 次。只有在此之后,CAN 硬件才能返回到正常工作状态。该位控制返回行为。如果为 1,则返回正常状态是自动的。否则,软件应发出请求,前提是已观察到恢复序列。
AWUM(自动唤醒模式): CAN 模块可以处于 3 种模式之一:初始化模式、正常模式或睡眠(低功耗)模式。软件请求睡眠模式。但是,您有 2 个选项可以退出睡眠模式。如果该位为 0,则您必须手动退出睡眠模式。您可以启用 CAN 唤醒中断以通知您有关总线活动的信息,然后在 ISR 中退出睡眠模式。但如果该位为 1,则硬件在检测到总线活动时自动返回正常模式。
NART(无自动重传):正常情况下,如果之前的尝试失败,因为仲裁失败等原因,CAN 硬件会重试发送消息。但如果您将此位设为 1,则发送器不会重试。当您使用时间触发通信 (TTCAN) 时,这是必需的。否则,您应该将此位保持为 0。
RFLM(接收 FIFO 锁定模式):您的接收邮箱有 3 级深度,这意味着它们在溢出之前最多可以存储 3 条消息。该位控制邮箱溢出时发生的情况。默认行为是保留最旧的 2 条消息和最新的一条。例如,如果您收到 5 条消息,缓冲区会保留消息 1、2 和 5。但是,如果您将此位设为 1,邮箱将保留消息 1、2 和 3,并丢弃新到达的消息。
TXFP(传输 FIFO 优先级):您有 3 个传输邮箱。当您填充多个时,硬件必须决定先传输哪一个。通常,人们可以假设具有较低 ID 号的消息更重要,应该首先传输。但是,如果您出于某种原因想以先到先得的方式传输它们,则需要将此位设为 1。当然,这只是本地优先级。在物理总线上,ID 较低的消息总是具有优先权。
| 归档时间: |
|
| 查看次数: |
2015 次 |
| 最近记录: |