我想了解以下功能模式定义的含义,库中有解释。但是我不明白,因为解释很短而且不够。我在网上找不到任何信息。
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;
答案 0 :(得分:2)
这些是位于CAN主控制寄存器( CAN_MCR )中的位的名称。因此,其含义的正确来源是参考手册。我的以下回答将是参考手册中的某些复制和粘贴操作,但我将尝试详细解释这些内容。
TTCM(时间触发通信模式):该位激活时间触发通信(TTCAN)模式,这是CAN标准的扩展。我对TTCAN不太了解,但是据我了解,它为消息分配了时间窗口,以满足某些实时要求。因此,通常该位应保持为0。
ABOM(自动断电管理)::如果传输错误计数器(TEC)大于255,则CAN硬件将切换到断电状态。要恢复,它必须等待恢复序列,即11个连续隐性位的128次出现。只有在此之后,CAN硬件才可以返回到正常操作状态。该位控制返回行为。如果为1,则自动返回正常状态。否则,只要遵守恢复顺序,软件应发出请求。
AWUM(自动唤醒模式):CAN模块可以处于以下三种模式之一:初始化模式,正常模式或睡眠(低功耗)模式。睡眠模式由软件请求。但是,您有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的消息始终具有优先级。