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

STM32的CANBUS功能模式初始化设置的含义是什么?,stm32,can-bus,Stm32,Can Bus,我想了解以下函数模式定义的含义,库中有解释。但我不明白这一点,因为解释非常简短,而且还不够。我在网上搜索,找不到任何有关的信息 CAN_InitStructure.CAN_TTCM = DISABLE; CAN_InitStructure.CAN_ABOM = DISABLE; CAN_InitStructure.CAN_AWUM = DISABLE; CAN_InitStructure.CAN_NART = ENABLE; CAN_InitStructure.C

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

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\U MCR中的位的名称。因此,其含义的正确来源是参考手册。我下面的回答将是从参考手册中复制粘贴的,但我将尝试详细解释这些内容

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

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

AWUM自动唤醒模式:CAN模块可以处于3种模式之一:初始化模式、正常模式或低功耗睡眠模式。睡眠模式由软件请求。但是,您有两个退出睡眠模式的选项。如果该位为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较低的消息始终具有优先权。

TTCAN是一些奇怪的现场总线标准,适用于安全应用程序,在这些应用程序中,软件包必须相互实时到达,类似于CANopen同步功能。我认为它仍然在各处的汽车中使用。它之所以存在,是因为在理论上,除非您能够保证时间,否则“正常”不能正式视为安全组件。然而,实际上,CAN比外面的大多数东西都安全。您可以在应用程序层通过定期传输来实现实时需求。所以我认为TTCAN已经过时了,但我自己还没有使用过。