5.12 FDCAN 使用说明

本章说明 N32H49x 标准外设库中 FDCAN 驱动的文件组成、81 个公开函数,以及 FDCAN_Classic、FDCAN_Interrupt、FDCAN_Loopback、FDCAN_Polling、TTCAN_Level1、TTCAN_Level2 6 个示例。FDCAN 支持经典 CAN 与 CAN FD 帧格式,并内置时间触发通信(TTCAN)功能;消息 RAM 的分配、位时序与 TTCAN 调度的寄存器定义请配合用户手册的“数据波特率可变的控制器局域网(FDCAN)”章节阅读。

5.12.1 相关文件

相对路径 作用
firmware/n32h49x_std_periph_driver/inc/n32h49x_fdcan.h 定义 FDCAN_InitType、FDCAN_FilterType、FDCAN_TxHeaderType、FDCAN_RxHeaderType、FDCAN_TT_InitType、FDCAN_TriggerType 等结构体,以及帧格式、工作模式、数据长度、中断与 TT 标志等宏;
按 13 个区段声明 81 个公开函数,覆盖复位、初始化与配置直至时间触发中断与标志
firmware/n32h49x_std_periph_driver/src/n32h49x_fdcan.c 实现上述 81 个函数:初始化与工作模式、消息 RAM 与接收过滤器配置、接收 FIFO 与接收缓冲、时间戳与超时计数器、收发器延迟补偿、发送缓冲与发送 FIFO/队列、时间触发通信(TTCAN)、中断与标志管理
projects/n32h49x_EVAL/examples/FDCAN/ FDCAN 示例根目录,含 FDCAN_Classic、FDCAN_Interrupt、FDCAN_Loopback、FDCAN_Polling、TTCAN_Level1、TTCAN_Level2 6 个示例
projects/n32h49x_EVAL/examples/FDCAN/FDCAN_Classic/ 该示例的工程目录组成:MDK-ARM/、EWARM/、inc/、src/、readme.txt
projects/n32h49x_EVAL/bsp/ 多个示例共用的板级支持文件:串口日志打印与延时

5.12.2 API 参考

搜索 API共 81 个函数

以下 81 个公开函数按 n32h49x_fdcan.h 的声明顺序分为 13 组;每个条目给出功能摘要与 n32h49x_fdcan.c 中该函数正上方的注释原文。

复位

FDCAN_DeInit

初始化与配置

FDCAN_Init、FDCAN_EnterSleep、FDCAN_ExitSleep、FDCAN_EnableISOMode、FDCAN_DisableISOMode、FDCAN_EnableEdgeFilter、FDCAN_DisableEdgeFilter、FDCAN_Start、FDCAN_Stop

协议状态与错误计数

FDCAN_GetProtocolStatus、FDCAN_GetErrorCounters

看门狗与受限模式

FDCAN_ConfigRamWatchdog、FDCAN_CheckRestrictedMode、FDCAN_ExitRestrictedMode

接收滤波

FDCAN_ConfigFilter、FDCAN_ConfigGlobalFilter、FDCAN_ConfigExtIdMask

接收 FIFO 与接收缓冲

FDCAN_ConfigRxFifoMode、FDCAN_ConfigFifoWatermark、FDCAN_GetRxFifoFillLevel、FDCAN_GetRxMsg、FDCAN_GetHpMsgStatus、FDCAN_CheckNewRxBufMsg

时间戳

FDCAN_ConfigTSPrescaler、FDCAN_Config_TS、FDCAN_Get_TS、FDCAN_Reset_TS、FDCAN_ConfigExtTSDivider、FDCAN_EnableExtTS

超时计数器

FDCAN_ConfigTimeoutCounter、FDCAN_EnableTimeoutCounter、FDCAN_DisableTimeoutCounter、FDCAN_GetTimeoutCounter、FDCAN_ResetTimeoutCounter

收发器延迟补偿

FDCAN_ConfigTxDelayCompensation、FDCAN_EnableTxDelayCompensation、FDCAN_DisableTxDelayCompensation

发送

FDCAN_AddMsgToTxFifoQ、FDCAN_AddMsgToTxBuffer、FDCAN_EnableTxBufferRequest、FDCAN_GetLastTxFifoQReqBuf、FDCAN_AbortTxRequest、FDCAN_GetTxEvent、FDCAN_CheckTxBufRequest、FDCAN_CheckBufTxResult、FDCAN_CheckBufTxCancel、FDCAN_GetTxFifoFreeLevel

时间触发通信

FDCAN_TT_Init、FDCAN_TT_ConfigRefMsg、FDCAN_TT_ConfigTrigger、FDCAN_TT_SetGlobalTime、FDCAN_TT_SetClockSync、FDCAN_TT_ConfigStopWatch、FDCAN_TT_ConfigRegTimeMark、FDCAN_TT_EnableRegTMPulse、FDCAN_TT_EnableTrigTMPulse、FDCAN_TT_EnableGapPinCtrl、FDCAN_TT_EnableTMGapCtrl、FDCAN_TT_SetNextIsGap、FDCAN_TT_SetEndOfGap、FDCAN_TT_ConfigExtSyncPhase、FDCAN_TT_EnableExtSync、FDCAN_TT_GetStatus

中断与标志

FDCAN_GetFlag、FDCAN_ClearFlag、FDCAN_ConfigIntLine、FDCAN_EnableInt、FDCAN_DisableInt、FDCAN_GetIntFlag、FDCAN_ActivateInt、FDCAN_DeactivateInt

时间触发中断与标志

FDCAN_TT_GetIntFlag、FDCAN_TT_GetFlag、FDCAN_TT_ClearFlag、FDCAN_TT_ConfigIntLine、FDCAN_TT_EnableInt、FDCAN_TT_DisableInt、FDCAN_TT_GetInt、FDCAN_TT_ActivateInt、FDCAN_TT_DeactivateInt

void FDCAN_DeInit(FDCAN_Module* FDCANx)将 FDCANx 外设寄存器复位为默认复位值。
源码注释
name   FDCAN_DeInit.
fun    Reset the FDCANx peripheral registers to their default reset values.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
ErrorStatus FDCAN_Init(FDCAN_Module* FDCANx, FDCAN_InitType *FDCAN_InitParam)按 FDCAN_InitParam 中指定的参数初始化 FDCAN 外设。
源码注释
name   FDCAN_Init.
fun    Initializes the FDCAN peripheral according to the specified
       parameters in the FDCAN_InitParam..
param  FDCANx pointer to specified FDCAN,must be one of the following value:
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  FDCAN_InitParam: pointer to a FDCAN_InitType structure.
          - FrameFormat:
               - FDCAN_FRAME_CLASSIC
               - FDCAN_FRAME_FD_NO_BRS
               - FDCAN_FRAME_FD_BRS
          - Mode:
               - FDCAN_MODE_NORMAL
               - FDCAN_MODE_RESTRICTED_OPERATION
               - FDCAN_MODE_BUS_MONITORING
               - FDCAN_MODE_INTERNAL_LOOPBACK
               - FDCAN_MODE_EXTERNAL_LOOPBACK
          - Prescaler: Must be a value between 1 and 512.
          - SyncJumpWidth: Must be a value between 1 and 128.
          - TimeSeg1: Must be a value between 2 and 256.
          - TimeSeg2: Must be a value between 2 and 128.
          - DataPrescaler: Must be a value between 1 and 32.
          - DataSyncJumpWidth: Must be a value between 1 and 16.
          - DataTimeSeg1: Must be a value between 1 and 32.
          - DataTimeSeg2: Must be a value between 1 and 16.
          - MsgRamStrAddr: Must be a value between 0x20000000 and 0x2008FFFF,
                                       or between 0x10000000 and 0x1008FFFF.
          - MsgRamOffset: Must be a value between 0 and 4480.
          - StdFilterSize: Must be a value between 0 and 128.
          - ExtFilterSize: Must be a value between 0 and 64.
          - RxFifo0Size: Must be a value between 0 and 64.
          - RxFifo1Size: Must be a value between 0 and 64.
          - RxBufferSize: Must be a value between 0 and 64.
          - TxEventSize: Must be a value between 0 and 32.
          - TxBufferSize: Must be a value between 0 and 32.
          - RxFifo0DataSize:
               - FDCAN_DATA_BYTES_8
               - FDCAN_DATA_BYTES_12
               - FDCAN_DATA_BYTES_16
               - FDCAN_DATA_BYTES_20
               - FDCAN_DATA_BYTES_24
               - FDCAN_DATA_BYTES_32
               - FDCAN_DATA_BYTES_48
               - FDCAN_DATA_BYTES_64
          - RxFifo1DataSize:
               - FDCAN_DATA_BYTES_8
               - FDCAN_DATA_BYTES_12
               - FDCAN_DATA_BYTES_16
               - FDCAN_DATA_BYTES_20
               - FDCAN_DATA_BYTES_24
               - FDCAN_DATA_BYTES_32
               - FDCAN_DATA_BYTES_48
               - FDCAN_DATA_BYTES_64
          - RxBufferDataSize:
               - FDCAN_DATA_BYTES_8
               - FDCAN_DATA_BYTES_12
               - FDCAN_DATA_BYTES_16
               - FDCAN_DATA_BYTES_20
               - FDCAN_DATA_BYTES_24
               - FDCAN_DATA_BYTES_32
               - FDCAN_DATA_BYTES_48
               - FDCAN_DATA_BYTES_64
          - TxBufferDataSize:
               - FDCAN_DATA_BYTES_8
               - FDCAN_DATA_BYTES_12
               - FDCAN_DATA_BYTES_16
               - FDCAN_DATA_BYTES_20
               - FDCAN_DATA_BYTES_24
               - FDCAN_DATA_BYTES_32
               - FDCAN_DATA_BYTES_48
               - FDCAN_DATA_BYTES_64
          - TxFifoQueueMode:
               - FDCAN_TX_FIFO_MODE
               - FDCAN_TX_QUEUE_MODE
          - TxFifoQueueSize: Must be a value between 0 and 32.
          - AutoRetransmission:
               - ENABLE
               - DISABLE
          - TransmitPause:
               - ENABLE
               - DISABLE
          - ProtocolException:
               - ENABLE
               - DISABLE
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_EnterSleep(FDCAN_Module *FDCANx)进入睡眠模式。
源码注释
name   FDCAN_EnterSleep.
fun    Enter sleep mode.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_ExitSleep(FDCAN_Module *FDCANx)退出睡眠模式。
源码注释
name   FDCAN_ExitSleep.
fun    Exit sleep mode
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_EnableISOMode(FDCAN_Module *FDCANx)使能 ISO 11898-1 协议模式,CAN FD 帧格式符合 ISO 11898-1 标准。
源码注释
name   FDCAN_EnableISOMode.
fun    Enable ISO 11898-1 protocol mode.
       CAN FD frame format is according to ISO 11898-1 standard.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_DisableISOMode(FDCAN_Module *FDCANx)关闭 ISO 11898-1 协议模式,CAN FD 帧格式符合 Bosch CAN FD 规范 V1.0。
源码注释
name   FDCAN_DisableISOMode.
fun    Disable ISO 11898-1 protocol mode.
       CAN FD frame format is according to Bosch CAN FD specification V1.0.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_EnableEdgeFilter(FDCAN_Module *FDCANx)使能总线集成期间的边沿滤波,硬同步需要连续两个显性 tq 才能检测到边沿。
源码注释
name   FDCAN_EnableEdgeFilter.
fun    Enable edge filtering during bus integration.
       Two consecutive dominant tq are required to detect an edge for hard synchronization.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_DisableEdgeFilter(FDCAN_Module *FDCANx)关闭总线集成期间的边沿滤波,硬同步只需一个显性 tq 即可检测到边沿。
源码注释
name   FDCAN_DisableEdgeFilter.
fun    Disable edge filtering during bus integration.
       One dominant tq is required to detect an edge for hard synchronization.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_Start(FDCAN_Module *FDCANx)启动 FDCAN 模块。
源码注释
name   FDCAN_Start.
fun    Start the FDCAN module.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
ErrorStatus FDCAN_Stop(FDCAN_Module *FDCANx)停止 FDCAN 模块并允许访问配置寄存器。
源码注释
name   FDCAN_Stop.
fun    Stop the FDCAN module and enable access to configuration registers.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_GetProtocolStatus(FDCAN_Module *FDCANx, FDCAN_ProtocolStatus *ProtocolStatus)获取协议状态。
源码注释
name   FDCAN_GetProtocolStatus.
fun    Get protocol status.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  ProtocolStatus pointer to an FDCAN_ProtocolStatus structure.
          - uint32_t LastError
               - FDCAN_LAST_ERROR_NONE
               - FDCAN_LAST_ERROR_STUFF
               - FDCAN_LAST_ERROR_FORM
               - FDCAN_LAST_ERROR_ACK
               - FDCAN_LAST_ERROR_BIT1
               - FDCAN_LAST_ERROR_BIT0
               - FDCAN_LAST_ERROR_CRC
               - FDCAN_LAST_ERROR_NO_CHANGE
          - uint32_t LastDataError
               - FDCAN_LAST_DATA_ERROR_NONE
               - FDCAN_LAST_DATA_ERROR_STUFF
               - FDCAN_LAST_DATA_ERROR_FORM
               - FDCAN_LAST_DATA_ERROR_ACK
               - FDCAN_LAST_DATA_ERROR_BIT1
               - FDCAN_LAST_DATA_ERROR_BIT0
               - FDCAN_LAST_DATA_ERROR_CRC
               - FDCAN_LAST_DATA_ERROR_NO_CHANGE
          - uint32_t Activity
               - FDCAN_COM_STATE_SYNC
               - FDCAN_COM_STATE_IDLE
               - FDCAN_COM_STATE_RX
               - FDCAN_COM_STATE_TX
          - uint32_t Error
               - FDCAN_ERROR_ACTIVE
               - FDCAN_ERROR_PASSIVE
          - uint32_t Warning
               - FDCAN_WARNING_BELOW_96
               - FDCAN_WARNING_REACH_96
          - uint32_t BusOff
               - FDCAN_BUS_ON
               - FDCAN_BUS_OFF
          - uint32_t RxESIflag
               - FDCAN_ESI_NOT_SET
               - FDCAN_ESI_SET
          - uint32_t RxBRSflag
               - FDCAN_BRS_NOT_SET
               - FDCAN_BRS_SET
          - uint32_t RxFDFflag
               - FDCAN_FDMSG_NOT_RECEIVED
               - FDCAN_FDMSG_RECEIVED
          - uint32_t Exception
               - FDCAN_NO_EXCEPTION
               - FDCAN_HAVE_EXCEPTION
          - uint32_t TDCvalue
               This parameter can be a value between 0 and 127
return none
void FDCAN_GetErrorCounters(FDCAN_Module *FDCANx, FDCAN_ErrorCounters *ErrorCounters)获取错误计数器数值。
源码注释
name   FDCAN_GetErrorCounters.
fun    Get error counter values.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  ErrorCounters pointer to an FDCAN_ErrorCounters structure.
          - TxErrorCnt
               This parameter can be a value between 0 and 255
          - RxErrorCnt
               This parameter can be a value between 0 and 127
          - RxErrorPassive
               - FDCAN_RX_ERROR_BELOW_128
               - FDCAN_RX_ERROR_REACH_128
          - ErrorLogging
               This parameter can be a value between 0 and 255.
return none
void FDCAN_ConfigRamWatchdog(FDCAN_Module *FDCANx, uint32_t Value)配置 RAM 看门狗。
源码注释
name   FDCAN_ConfigRamWatchdog.
fun    Configure the RAM watchdog.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Value Start value of the Message RAM Watchdog Counter.
          This parameter must be a number between 0x00 and 0xFF
return none
uint32_t FDCAN_CheckRestrictedMode(FDCAN_Module *FDCANx)检查 FDCAN 外设是否进入受限工作模式。
源码注释
name   FDCAN_CheckRestrictedMode.
fun    Check if the FDCAN peripheral entered Restricted Operation Mode.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return Status
          - FDCAN_MODE_NORMAL : Normal FDCAN operation.
          - FDCAN_MODE_RESTRICTED_OPERATION : Restricted Operation Mode active.
void FDCAN_ExitRestrictedMode(FDCAN_Module *FDCANx)退出受限工作模式。
源码注释
name   FDCAN_ExitRestrictedMode.
fun    Exit Restricted Operation Mode.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_ConfigFilter(FDCAN_Module *FDCANx, FDCAN_FilterType *sFilterConfig)按 FDCAN_FilterType 结构体中指定的参数配置 FDCAN 接收过滤器。
源码注释
name   FDCAN_ConfigFilter.
fun    Configure the FDCAN reception filter according to the specified
       parameters in the FDCAN_FilterType structure.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param sFilterConfig pointer to an FDCAN_FilterTypeDef structure
          - IdType
               - FDCAN_STANDARD_ID
               - FDCAN_EXTENDED_ID
          - FilterIndex
               This parameter must be a value between:
               - 0 and 127, if IdType is FDCAN_STANDARD_ID
               - 0 and 63, if IdType is FDCAN_EXTENDED_ID
          - FilterType
               - FDCAN_FILTER_RANGE
               - FDCAN_FILTER_DUAL
               - FDCAN_FILTER_MASK
               - FDCAN_FILTER_RANGE_NO_EIDM
          - FilterConfig
               -FDCAN_FILTER_DISABLE
               -FDCAN_FILTER_TO_RXFIFO0
               -FDCAN_FILTER_TO_RXFIFO1
               -FDCAN_FILTER_REJECT
               -FDCAN_FILTER_HP
               -FDCAN_FILTER_TO_RXFIFO0_HP
               -FDCAN_FILTER_TO_RXFIFO1_HP
               -FDCAN_FILTER_TO_RXBUFFER
          - FilterID1
               This parameter must be a value between:
               - 0 and 0x7FF, if IdType is FDCAN_STANDARD_ID
               - 0 and 0x1FFFFFFF, if IdType is FDCAN_EXTENDED_ID
          - FilterID2
               This parameter must be a value between:
               - 0 and 0x7FF, if IdType is FDCAN_STANDARD_ID
               - 0 and 0x1FFFFFFF, if IdType is FDCAN_EXTENDED_ID
               This parameter is ignored if FilterConfig is set to FDCAN_FILTER_TO_RXBUFFER
          - RxBufferIndex
               This parameter must be a value between 0 and 63.
               And it is ignored if FilterConfig is not FDCAN_FILTER_TO_RXBUFFER
return none
void FDCAN_ConfigGlobalFilter(FDCAN_Module *FDCANx, uint32_t NonMatchingStd, uint32_t NonMatchingExt, uint32_t RejectRemoteStd, uint32_t RejectRemoteExt)配置 FDCAN 全局过滤器。
源码注释
name   FDCAN_ConfigGlobalFilter.
fun    Configure the FDCAN global filter.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  NonMatchingStd :
          - FDCAN_ACCEPT_STD_IN_RX_FIFO0
          - FDCAN_ACCEPT_STD_IN_RX_FIFO1
          - FDCAN_REJECT_STD
param  NonMatchingExt :
          - FDCAN_ACCEPT_EXT_IN_RX_FIFO0
          - FDCAN_ACCEPT_EXT_IN_RX_FIFO1
          - FDCAN_REJECT_EXT
param  RejectRemoteStd :
          - FDCAN_FILTER_STD_REMOTE
          - FDCAN_REJECT_STD_REMOTE
param  RejectRemoteExt :
          - FDCAN_FILTER_EXT_REMOTE
          - FDCAN_REJECT_EXT_REMOTE
return
void FDCAN_ConfigExtIdMask(FDCAN_Module *FDCANx, uint32_t Mask)配置扩展 ID 掩码。
源码注释
name   FDCAN_ConfigExtIdMask.
fun    CConfigure the extended ID mask.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Mask :Extended ID Mask.
       This parameter must be a number between 0 and 0x1FFFFFFF
return none
void FDCAN_ConfigRxFifoMode(FDCAN_Module *FDCANx, uint32_t RxFifo, uint32_t Mode)配置接收 FIFO 工作模式。
源码注释
name   FDCAN_ConfigRxFifoMode.
fun    Configure the Rx FIFO operation mode.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  RxFifo
          - FDCAN_RX_FIFO0
          - FDCAN_RX_FIFO1
param  Mode
          - FDCAN_RX_FIFO_BLOCKING
          - FDCAN_RX_FIFO_OVERWRITE
return none
void FDCAN_ConfigFifoWatermark(FDCAN_Module *FDCANx, uint32_t FIFO, uint32_t Watermark)配置发送/接收 FIFO 水位。
源码注释
name   FDCAN_ConfigFifoWatermark.
fun    Configure the Tx/RX FIFO watermark.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  FIFO
          - FDCAN_RX_FIFO0
          - FDCAN_RX_FIFO1
          - FDCAN_TX_EVENT_FIFO
param  Watermark level for FIFO watermark interrupt.
          This parameter must be a number between:
          - 0 and 32, if FIFO is FDCAN_TX_EVENT_FIFO
          - 0 and 64, if FIFO is FDCAN_RX_FIFO0 or FDCAN_RX_FIFO1
return none
uint32_t FDCAN_GetRxFifoFillLevel(FDCAN_Module *FDCANx, uint32_t RxFifo)返回接收 FIFO 的填充水平。
源码注释
name   FDCAN_GetRxFifoFillLevel.
fun    Return Rx FIFO fill level.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  RxFifo :
          - FDCAN_RX_FIFO0
          - FDCAN_RX_FIFO1
return Rx FIFO fill level.
ErrorStatus FDCAN_GetRxMsg(FDCAN_Module *FDCANx, uint32_t RxLocation, FDCAN_RxHeaderType *pRxHeader, uint8_t *pRxData)从接收缓冲/FIFO 区取出一帧 FDCAN 报文写入消息 RAM。
源码注释
name   FDCAN_GetRxMsg.
fun    Get an FDCAN frame from the Rx Buffer/FIFO zone into the message RAM.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  RxLocation :
          - FDCAN_RX_FIFO0
          - FDCAN_RX_FIFO1
          - FDCAN_RX_BUFFER0
          - FDCAN_RX_BUFFER1
          - FDCAN_RX_BUFFER2
          - FDCAN_RX_BUFFER3
          - FDCAN_RX_BUFFER4
          - FDCAN_RX_BUFFER5
          - FDCAN_RX_BUFFER6
          - FDCAN_RX_BUFFER7
          - FDCAN_RX_BUFFER8
          - FDCAN_RX_BUFFER9
          - FDCAN_RX_BUFFER10
          - FDCAN_RX_BUFFER11
          - FDCAN_RX_BUFFER12
          - FDCAN_RX_BUFFER13
          - FDCAN_RX_BUFFER14
          - FDCAN_RX_BUFFER15
          - FDCAN_RX_BUFFER16
          - FDCAN_RX_BUFFER17
          - FDCAN_RX_BUFFER18
          - FDCAN_RX_BUFFER19
          - FDCAN_RX_BUFFER20
          - FDCAN_RX_BUFFER21
          - FDCAN_RX_BUFFER22
          - FDCAN_RX_BUFFER23
          - FDCAN_RX_BUFFER24
          - FDCAN_RX_BUFFER25
          - FDCAN_RX_BUFFER26
          - FDCAN_RX_BUFFER27
          - FDCAN_RX_BUFFER28
          - FDCAN_RX_BUFFER29
          - FDCAN_RX_BUFFER30
          - FDCAN_RX_BUFFER31
          - FDCAN_RX_BUFFER32
          - FDCAN_RX_BUFFER33
          - FDCAN_RX_BUFFER34
          - FDCAN_RX_BUFFER35
          - FDCAN_RX_BUFFER36
          - FDCAN_RX_BUFFER37
          - FDCAN_RX_BUFFER38
          - FDCAN_RX_BUFFER39
          - FDCAN_RX_BUFFER40
          - FDCAN_RX_BUFFER41
          - FDCAN_RX_BUFFER42
          - FDCAN_RX_BUFFER43
          - FDCAN_RX_BUFFER44
          - FDCAN_RX_BUFFER45
          - FDCAN_RX_BUFFER46
          - FDCAN_RX_BUFFER47
          - FDCAN_RX_BUFFER48
          - FDCAN_RX_BUFFER49
          - FDCAN_RX_BUFFER50
          - FDCAN_RX_BUFFER51
          - FDCAN_RX_BUFFER52
          - FDCAN_RX_BUFFER53
          - FDCAN_RX_BUFFER54
          - FDCAN_RX_BUFFER55
          - FDCAN_RX_BUFFER56
          - FDCAN_RX_BUFFER57
          - FDCAN_RX_BUFFER58
          - FDCAN_RX_BUFFER59
          - FDCAN_RX_BUFFER60
          - FDCAN_RX_BUFFER61
          - FDCAN_RX_BUFFER62
          - FDCAN_RX_BUFFER63
param  pRxHeader :pointer to a FDCAN_RxHeaderType structure.
          - IdType
               - FDCAN_STANDARD_ID
               - FDCAN_EXTENDED_ID
          - ID
               This parameter must be a value between:
               - 0 and 0x7FF, if IdType is FDCAN_STANDARD_ID
               - 0 and 0x1FFFFFFF, if IdType is FDCAN_EXTENDED_ID
          - RxFrameType
               - FDCAN_DATA_FRAME
               - FDCAN_REMOTE_FRAME
          - DataLength
               - FDCAN_DLC_BYTES_0
               - FDCAN_DLC_BYTES_1
               - FDCAN_DLC_BYTES_2
               - FDCAN_DLC_BYTES_3
               - FDCAN_DLC_BYTES_4
               - FDCAN_DLC_BYTES_5
               - FDCAN_DLC_BYTES_6
               - FDCAN_DLC_BYTES_7
               - FDCAN_DLC_BYTES_8
               - FDCAN_DLC_BYTES_12
               - FDCAN_DLC_BYTES_16
               - FDCAN_DLC_BYTES_20
               - FDCAN_DLC_BYTES_24
               - FDCAN_DLC_BYTES_32
               - FDCAN_DLC_BYTES_48
               - FDCAN_DLC_BYTES_64
          - ErrorState
               - FDCAN_ESI_ACTIVE
               - FDCAN_ESI_PASSIVE
          - BitRateSwitch
               - FDCAN_BRS_OFF
               - FDCAN_BRS_ON
          - FDFormat
               - FDCAN_CLASSIC_CAN
               - FDCAN_FD_CAN
          - RxTimestamp
               This parameter must be a value between 0 and 0xFFFF
          - FilterIndex
               This parameter must be a value between:
               - 0 and 127, if IdType is FDCAN_STANDARD_ID
               - 0 and 63, if IdType is FDCAN_EXTENDED_ID
          - Matching
               - FDCAN_ACCEPT_MACHING_FIDX
               - FDCAN_ACCEPT_NON_MATCHING
param  pRxData :pointer to a buffer containing the payload of the Rx frame.
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_GetHpMsgStatus(FDCAN_Module *FDCANx, FDCAN_HpMsgStatus *HpMsgStatus)获取高优先级报文状态。
源码注释
name   FDCAN_GetHpMsgStatus.
fun    Get high priority message status.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  HpMsgStatus pointer to an FDCAN_HpMsgStatus structure.
          - FilterList
               - FDCAN_HP_STANDARD_FILTER_LIST
               - FDCAN_HP_EXTENDED_FILTER_LIST
          - FilterIndex
               This parameter can be a value between:
               - 0 and 127, if FilterList is FDCAN_HP_STANDARD_FILTER_LIST
               - 0 and 63, if FilterList is FDCAN_HP_EXTENDED_FILTER_LIST
          - MsgStore
               - FDCAN_HP_STORAGE_NO_FIFO
               - FDCAN_HP_STORAGE_MSG_LOST
               - FDCAN_HP_STORAGE_RXFIFO0
               - FDCAN_HP_STORAGE_RXFIFO1
          - MsgIndex
               - FDCAN_HP_STORAGE_RXFIFO0
               - FDCAN_HP_STORAGE_RXFIFO1
return none
FlagStatus FDCAN_CheckNewRxBufMsg(FDCAN_Module *FDCANx, uint32_t Index)检查所选接收缓冲中是否收到新报文。
源码注释
name   FDCAN_CheckNewRxBufMsg.
fun    Check if a new message is received in the selected Rx buffer.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Index Rx buffer index.
          - FDCAN_RX_BUFFER0
          - FDCAN_RX_BUFFER1
          - FDCAN_RX_BUFFER2
          - FDCAN_RX_BUFFER3
          - FDCAN_RX_BUFFER4
          - FDCAN_RX_BUFFER5
          - FDCAN_RX_BUFFER6
          - FDCAN_RX_BUFFER7
          - FDCAN_RX_BUFFER8
          - FDCAN_RX_BUFFER9
          - FDCAN_RX_BUFFER10
          - FDCAN_RX_BUFFER11
          - FDCAN_RX_BUFFER12
          - FDCAN_RX_BUFFER13
          - FDCAN_RX_BUFFER14
          - FDCAN_RX_BUFFER15
          - FDCAN_RX_BUFFER16
          - FDCAN_RX_BUFFER17
          - FDCAN_RX_BUFFER18
          - FDCAN_RX_BUFFER19
          - FDCAN_RX_BUFFER20
          - FDCAN_RX_BUFFER21
          - FDCAN_RX_BUFFER22
          - FDCAN_RX_BUFFER23
          - FDCAN_RX_BUFFER24
          - FDCAN_RX_BUFFER25
          - FDCAN_RX_BUFFER26
          - FDCAN_RX_BUFFER27
          - FDCAN_RX_BUFFER28
          - FDCAN_RX_BUFFER29
          - FDCAN_RX_BUFFER30
          - FDCAN_RX_BUFFER31
          - FDCAN_RX_BUFFER32
          - FDCAN_RX_BUFFER33
          - FDCAN_RX_BUFFER34
          - FDCAN_RX_BUFFER35
          - FDCAN_RX_BUFFER36
          - FDCAN_RX_BUFFER37
          - FDCAN_RX_BUFFER38
          - FDCAN_RX_BUFFER39
          - FDCAN_RX_BUFFER40
          - FDCAN_RX_BUFFER41
          - FDCAN_RX_BUFFER42
          - FDCAN_RX_BUFFER43
          - FDCAN_RX_BUFFER44
          - FDCAN_RX_BUFFER45
          - FDCAN_RX_BUFFER46
          - FDCAN_RX_BUFFER47
          - FDCAN_RX_BUFFER48
          - FDCAN_RX_BUFFER49
          - FDCAN_RX_BUFFER50
          - FDCAN_RX_BUFFER51
          - FDCAN_RX_BUFFER52
          - FDCAN_RX_BUFFER53
          - FDCAN_RX_BUFFER54
          - FDCAN_RX_BUFFER55
          - FDCAN_RX_BUFFER56
          - FDCAN_RX_BUFFER57
          - FDCAN_RX_BUFFER58
          - FDCAN_RX_BUFFER59
          - FDCAN_RX_BUFFER60
          - FDCAN_RX_BUFFER61
          - FDCAN_RX_BUFFER62
          - FDCAN_RX_BUFFER63
return FlagStatus
          - RESET : No new message on RxBufferIndex.
          - SET   : New message received on RxBufferIndex.
void FDCAN_ConfigTSPrescaler(FDCAN_Module *FDCANx, uint32_t Prescaler)配置时间戳计数器预分频值。
源码注释
name   FDCAN_ConfigTSPrescaler.
fun    Configure the timestamp counter Prescaler.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Prescaler
          - FDCAN_TIMESTAMP_PRESC_1
          - FDCAN_TIMESTAMP_PRESC_2
          - FDCAN_TIMESTAMP_PRESC_3
          - FDCAN_TIMESTAMP_PRESC_4
          - FDCAN_TIMESTAMP_PRESC_5
          - FDCAN_TIMESTAMP_PRESC_6
          - FDCAN_TIMESTAMP_PRESC_7
          - FDCAN_TIMESTAMP_PRESC_8
          - FDCAN_TIMESTAMP_PRESC_9
          - FDCAN_TIMESTAMP_PRESC_10
          - FDCAN_TIMESTAMP_PRESC_11
          - FDCAN_TIMESTAMP_PRESC_12
          - FDCAN_TIMESTAMP_PRESC_13
          - FDCAN_TIMESTAMP_PRESC_14
          - FDCAN_TIMESTAMP_PRESC_15
          - FDCAN_TIMESTAMP_PRESC_16
return none
void FDCAN_Config_TS(FDCAN_Module *FDCANx, uint32_t Select)配置时间戳模式。
源码注释
name   FDCAN_Config_TS.
fun    Config the timestamp mode.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Select
          - FDCAN_TIMESTAMP_DISABLE
          - FDCAN_TIMESTAMP_INTERNAL
          - FDCAN_TIMESTAMP_EXTERNAL
return none
uint16_t FDCAN_Get_TS(FDCAN_Module *FDCANx)获取时间戳计数器数值。
源码注释
name   FDCAN_Get_TS.
fun    Get the timestamp counter value.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return Value Timestamp counter value
void FDCAN_Reset_TS(FDCAN_Module *FDCANx)将内部时间戳计数器复位为零。
源码注释
name   FDCAN_Reset_TS.
fun    Reset the internal timestamp counter to zero.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_ConfigExtTSDivider(FDCAN_Module *FDCANx, uint32_t Div)配置外部时间戳时钟的分频系数。
源码注释
name   FDCAN_ConfigExtTSDivider.
fun    Config the clock diveder of external timestamp clock.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Div :
          - FDCAN_EXT_TIMESTAMP_DIV_4
          - FDCAN_EXT_TIMESTAMP_DIV_8
          - FDCAN_EXT_TIMESTAMP_DIV_16
          - FDCAN_EXT_TIMESTAMP_DIV_32
          - FDCAN_EXT_TIMESTAMP_DIV_64
          - FDCAN_EXT_TIMESTAMP_DIV_128
          - FDCAN_EXT_TIMESTAMP_DIV_256
          - FDCAN_EXT_TIMESTAMP_DIV_512
return none
void FDCAN_EnableExtTS(FDCAN_Module *FDCANx, FunctionalState Cmd)使能或关闭外部时间戳。
源码注释
name   FDCAN_EnableExtTS.
fun    Enalbe or disable the external timestamp.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Cmd :
          - ENABLE
          - DISABLE
return none
void FDCAN_ConfigTimeoutCounter(FDCAN_Module *FDCANx, uint32_t TimeoutSelect, uint32_t TimeoutPeriod)配置超时计数器。
源码注释
name   FDCAN_ConfigTimeoutCounter.
fun    Configure the timeout counter.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  TimeoutSelect :
          - FDCAN_TIMEOUT_CONTINUOUS
          - FDCAN_TIMEOUT_TX_EVENT_FIFO
          - FDCAN_TIMEOUT_RX_FIFO0
          - FDCAN_TIMEOUT_RX_FIFO1
param  TimeoutPeriod :Start value of the timeout down-counter.
       This parameter must be a number between 0x0000 and 0xFFFF
return none
void FDCAN_EnableTimeoutCounter(FDCAN_Module *FDCANx)使能超时计数器。
源码注释
name   FDCAN_EnableTimeoutCounter.
fun    Enable the timeout counter.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_DisableTimeoutCounter(FDCAN_Module *FDCANx)关闭超时计数器。
源码注释
name   FDCAN_DisableTimeoutCounter.
fun    Disable the timeout counter.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
uint16_t FDCAN_GetTimeoutCounter(FDCAN_Module *FDCANx)获取超时计数器数值。
源码注释
name   FDCAN_GetTimeoutCounter.
fun    Get the timeout counter value.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return Timeout counter value
void FDCAN_ResetTimeoutCounter(FDCAN_Module *FDCANx)将超时计数器复位为起始值。
源码注释
name   FDCAN_ResetTimeoutCounter.
fun    Reset the timeout counter to its start value.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_ConfigTxDelayCompensation(FDCAN_Module *FDCANx, uint32_t Offset, uint32_t Filter)配置收发器延迟补偿。
源码注释
name   FDCAN_ConfigTxDelayCompensation.
fun    Configure the transmitter delay compensation.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Offset :Transmitter Delay Compensation Offset.
          This parameter must be a number between 0x00 and 0x7F.
param  Filter :Transmitter Delay Compensation Filter Window Length.
          This parameter must be a number between 0x00 and 0x7F.
return none
void FDCAN_EnableTxDelayCompensation(FDCAN_Module *FDCANx)使能收发器延迟补偿。
源码注释
name   FDCAN_EnableTxDelayCompensation.
fun    Enable the transmitter delay compensation.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
void FDCAN_DisableTxDelayCompensation(FDCAN_Module *FDCANx)关闭收发器延迟补偿。
源码注释
name   FDCAN_DisableTxDelayCompensation.
fun    Disable the transmitter delay compensation.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return none
ErrorStatus FDCAN_AddMsgToTxFifoQ(FDCAN_Module *FDCANx, FDCAN_TxHeaderType *pTxHeader, uint8_t *pTxData)将报文加入发送 FIFO/队列并激活对应的发送请求。
源码注释
name   FDCAN_AddMsgToTxFifoQ.
fun    Add a message to the Tx FIFO/Queue and activate the corresponding transmission request
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  pTxHeader :pointer to a FDCAN_TxHeaderType structure.
          - IdType
               - FDCAN_STANDARD_ID
               - FDCAN_EXTENDED_ID
          - ID
               This parameter must be a value between:
               - 0 and 0x7FF, if IdType is FDCAN_STANDARD_ID
               - 0 and 0x1FFFFFFF, if IdType is FDCAN_EXTENDED_ID
          - TxFrameType
               - FDCAN_DATA_FRAME
               - FDCAN_REMOTE_FRAME
          - DataLength
               - FDCAN_DLC_BYTES_0
               - FDCAN_DLC_BYTES_1
               - FDCAN_DLC_BYTES_2
               - FDCAN_DLC_BYTES_3
               - FDCAN_DLC_BYTES_4
               - FDCAN_DLC_BYTES_5
               - FDCAN_DLC_BYTES_6
               - FDCAN_DLC_BYTES_7
               - FDCAN_DLC_BYTES_8
               - FDCAN_DLC_BYTES_12
               - FDCAN_DLC_BYTES_16
               - FDCAN_DLC_BYTES_20
               - FDCAN_DLC_BYTES_24
               - FDCAN_DLC_BYTES_32
               - FDCAN_DLC_BYTES_48
               - FDCAN_DLC_BYTES_64
          - ErrorState
               - FDCAN_ESI_ACTIVE
               - FDCAN_ESI_PASSIVE
          - BitRateSwitch
               - FDCAN_BRS_OFF
               - FDCAN_BRS_ON
          - FDFormat
               - FDCAN_CLASSIC_CAN
               - FDCAN_FD_CAN
          - TxEventFifo
               - FDCAN_NO_TX_EVENTS
               - FDCAN_STORE_TX_EVENTS
          - MsgMarker
               This parameter must be a value between 0 and 0xFF
param  pTxData :pointer to a buffer containing the payload of the Tx frame.
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_AddMsgToTxBuffer(FDCAN_Module *FDCANx, FDCAN_TxHeaderType *pTxHeader, uint8_t *pTxData, uint32_t BufferIndex)将报文加入专用发送缓冲。
源码注释
name   FDCAN_AddMsgToTxBuffer.
fun    Add a message to a dedicated Tx buffer
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  pTxHeader :pointer to a FDCAN_TxHeaderType structure.
          - IdType
               - FDCAN_STANDARD_ID
               - FDCAN_EXTENDED_ID
          - ID
               This parameter must be a value between:
               - 0 and 0x7FF, if IdType is FDCAN_STANDARD_ID
               - 0 and 0x1FFFFFFF, if IdType is FDCAN_EXTENDED_ID
          - TxFrameType
               - FDCAN_DATA_FRAME
               - FDCAN_REMOTE_FRAME
          - DataLength
               - FDCAN_DLC_BYTES_0
               - FDCAN_DLC_BYTES_1
               - FDCAN_DLC_BYTES_2
               - FDCAN_DLC_BYTES_3
               - FDCAN_DLC_BYTES_4
               - FDCAN_DLC_BYTES_5
               - FDCAN_DLC_BYTES_6
               - FDCAN_DLC_BYTES_7
               - FDCAN_DLC_BYTES_8
               - FDCAN_DLC_BYTES_12
               - FDCAN_DLC_BYTES_16
               - FDCAN_DLC_BYTES_20
               - FDCAN_DLC_BYTES_24
               - FDCAN_DLC_BYTES_32
               - FDCAN_DLC_BYTES_48
               - FDCAN_DLC_BYTES_64
          - ErrorState
               - FDCAN_ESI_ACTIVE
               - FDCAN_ESI_PASSIVE
          - BitRateSwitch
               - FDCAN_BRS_OFF
               - FDCAN_BRS_ON
          - FDFormat
               - FDCAN_CLASSIC_CAN
               - FDCAN_FD_CAN
          - TxEventFifo
               - FDCAN_NO_TX_EVENTS
               - FDCAN_STORE_TX_EVENTS
          - MsgMarker
               This parameter must be a value between 0 and 0xFF
param  pTxData :pointer to a buffer containing the payload of the Tx frame.
param  BufferIndex :
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_EnableTxBufferRequest(FDCAN_Module *FDCANx, uint32_t BufferIndex)使能发送请求。
源码注释
name   FDCAN_EnableTxBufferRequest.
fun    Enable transmission request.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  BufferIndex :
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
return none
uint32_t FDCAN_GetLastTxFifoQReqBuf(FDCAN_Module *FDCANx)获取最近一次发送 FIFO/队列请求的发送缓冲索引。
源码注释
name   FDCAN_GetLastTxFifoQReqBuf.
fun    Get Tx buffer index of latest Tx FIFO/Queue request.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return Tx buffer index of last Tx FIFO/Queue request
          - 0:  no Tx FIFO/Queue request have been submitted
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
void FDCAN_AbortTxRequest(FDCAN_Module *FDCANx, uint32_t BufferIndex)取消发送请求。
源码注释
name   FDCAN_AbortTxRequest.
fun    Abort transmission request.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  BufferIndex :
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
return none
ErrorStatus FDCAN_GetTxEvent(FDCAN_Module *FDCANx, FDCAN_TxEventFifoType *pTxEvent)从发送事件 FIFO 区取出一条 FDCAN 发送事件写入消息 RAM。
源码注释
name   FDCAN_GetTxEvent.
fun    Get an FDCAN Tx event from the Tx Event FIFO zone into the message RAM.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  pTxEvent pointer to a FDCAN_TxEventFifoType structure.
          - IdType
               - FDCAN_STANDARD_ID
               - FDCAN_EXTENDED_ID
          - ID
               This parameter must be a value between:
               - 0 and 0x7FF, if IdType is FDCAN_STANDARD_ID
               - 0 and 0x1FFFFFFF, if IdType is FDCAN_EXTENDED_ID
          - TxFrameType
               - FDCAN_DATA_FRAME
               - FDCAN_REMOTE_FRAME
          - DataLength
               - FDCAN_DLC_BYTES_0
               - FDCAN_DLC_BYTES_1
               - FDCAN_DLC_BYTES_2
               - FDCAN_DLC_BYTES_3
               - FDCAN_DLC_BYTES_4
               - FDCAN_DLC_BYTES_5
               - FDCAN_DLC_BYTES_6
               - FDCAN_DLC_BYTES_7
               - FDCAN_DLC_BYTES_8
               - FDCAN_DLC_BYTES_12
               - FDCAN_DLC_BYTES_16
               - FDCAN_DLC_BYTES_20
               - FDCAN_DLC_BYTES_24
               - FDCAN_DLC_BYTES_32
               - FDCAN_DLC_BYTES_48
               - FDCAN_DLC_BYTES_64
          - ErrorState
               - FDCAN_ESI_ACTIVE
               - FDCAN_ESI_PASSIVE
          - BitRateSwitch;
               - FDCAN_BRS_OFF
               - FDCAN_BRS_ON
          - FDFormat;
               - FDCAN_CLASSIC_CAN
               - FDCAN_FD_CAN
          - TxTimestamp;
               This parameter must be a value between 0 and 0xFFFF
          - MsgMarker;
               This parameter must be a value between 0 and 0xFF
          - EventType;
               - FDCAN_TX_EVENT
               - FDCAN_TX_IN_SPITE_OF_ABORT
return ErrorStatus
          - SUCCESS
          - ERROR
FlagStatus FDCAN_CheckTxBufRequest(FDCAN_Module *FDCANx, uint32_t IndexBit)检查所选发送缓冲上是否有待处理的发送请求。
源码注释
name   FDCAN_CheckTxBufRequest.
fun    Check if a transmission request is pending on the selected Tx buffer.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  IndexBit Rx buffer index bit.
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
return FlagStatus
          - RESET : No request pending on TxBufferIndex.
          - SET : Have request pending on TxBufferIndex.
FlagStatus FDCAN_CheckBufTxResult(FDCAN_Module *FDCANx, uint32_t IndexBit)检查报文是否已发送完成。
源码注释
name   FDCAN_CheckBufTxResult.
fun    Check if a transmission is sent or not.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  IndexBit Rx buffer index bit.
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
return FlagStatus
          - RESET : Transmission is not finished or cacelled.
          - SET : Transmission is finished.
FlagStatus FDCAN_CheckBufTxCancel(FDCAN_Module *FDCANx, uint32_t IndexBit)检查报文是否已被取消。
源码注释
name   FDCAN_CheckBufTxCancel.
fun    Check if a transmission is cancelled.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  IndexBit Rx buffer index bit.
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
return FlagStatus
          - RESET : Transmission is not cacelled.
          - SET : Transmission is cacelled.
uint32_t FDCAN_GetTxFifoFreeLevel(FDCAN_Module *FDCANx)返回发送 FIFO 的空闲水平,即连续空闲的发送 FIFO 数量。
源码注释
name   FDCAN_GetTxFifoFreeLevel.
fun    Return Tx FIFO free level: number of consecutive free Tx FIFO.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
return Tx FIFO free level.
ErrorStatus FDCAN_TT_Init(FDCAN_Module *FDCANx, FDCAN_TT_InitType *pTTParams)初始化时间触发(TT)工作参数。
源码注释
name   FDCAN_TT_Init.
fun    Initialize TT operation parameters.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  pTTParams pointer to a FDCAN_TT_InitType structure.
          - uint32_t OperationMode
               - FDCAN_TT_COMMUNICATION_LEVEL1
               - FDCAN_TT_COMMUNICATION_LEVEL2
               - FDCAN_TT_COMMUNICATION_LEVEL0
          - uint32_t GapEnable
               - FDCAN_STRICTLY_TT_OPERATION
               - FDCAN_EXT_EVT_SYNC_TT_OPERATION
          - uint32_t TimeMaster
               - FDCAN_TT_SLAVE
               - FDCAN_TT_POTENTIAL_MASTER
          - uint32_t SyncDevLimit
               This parameter must be a value between 0 and 7
          - uint32_t InitRefTrigOffset
               This parameter must be a value between 0 and 127
          - uint32_t ExternalClkSync
               - FDCAN_TT_EXT_CLK_SYNC_DISABLE
               - FDCAN_TT_EXT_CLK_SYNC_ENABLE
               This parameter is ignored if OperationMode is FDCAN_TT_COMMUNICATION_LEVEL1
          - uint32_t AppWdgLimit
               This parameter must be a value between 0 and 255.
               This parameter is ignored if OperationMode is FDCAN_TT_COMMUNICATION_LEVEL0
          - uint32_t GlobalTimeFilter
               - FDCAN_TT_GLOB_TIME_FILT_DISABLE
               - FDCAN_TT_GLOB_TIME_FILT_ENABLE
               This parameter is ignored if OperationMode is set to FDCAN_TT_COMMUNICATION_LEVEL1
          - uint32_t ClockCalibration
               - FDCAN_TT_AUTO_CLK_CALIB_DISABLE
               - FDCAN_TT_AUTO_CLK_CALIB_ENABLE
               This parameter is ignored if OperationMode is set to FDCAN_TT_COMMUNICATION_LEVEL1
          - uint32_t EvtTrigPolarity
               - FDCAN_TT_EVT_TRIG_POL_RISING
               - FDCAN_TT_EVT_TRIG_POL_FALLING
               This parameter is ignored if OperationMode is set to FDCAN_TT_COMMUNICATION_LEVEL0
          - uint32_t BasicCycles
               - FDCAN_TT_CYCLES_PER_MATRIX_1
               - FDCAN_TT_CYCLES_PER_MATRIX_2
               - FDCAN_TT_CYCLES_PER_MATRIX_4
               - FDCAN_TT_CYCLES_PER_MATRIX_8
               - FDCAN_TT_CYCLES_PER_MATRIX_16
               - FDCAN_TT_CYCLES_PER_MATRIX_32
               - FDCAN_TT_CYCLES_PER_MATRIX_64
          - uint32_t CycleStartSync
               - FDCAN_TT_NO_SYNC_PULSE
               - FDCAN_TT_SYNC_BASIC_CYCLE_START
               - FDCAN_TT_SYNC_MATRIX_START
          - uint32_t TxEnableWindow
               This parameter must be a value between 1 and 16
          - uint32_t ExpTxTrigSize
               This parameter must be a value between 0 and 4095
          - uint32_t TURNumerator
               This parameter must be a value between 0x10000 and 0x1FFFF
          - uint32_t TURDenominator
               This parameter must be a value between 0x0001 and 0x3FFF
          - uint32_t TrigMemorySize
               This parameter must be a value between 0 and 64
          - uint32_t StopWatchTrigSel
               - FDCAN_TT_STOP_WATCH_TRIGGER_0
               - FDCAN_TT_STOP_WATCH_TRIGGER_1
               - FDCAN_TT_STOP_WATCH_TRIGGER_2
               - FDCAN_TT_STOP_WATCH_TRIGGER_3
          - uint32_t EventTrigSel
               - FDCAN_TT_EVENT_TRIGGER_0
               - FDCAN_TT_EVENT_TRIGGER_1
               - FDCAN_TT_EVENT_TRIGGER_2
               - FDCAN_TT_EVENT_TRIGGER_3
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_TT_ConfigRefMsg(FDCAN_Module *FDCANx, uint32_t IdType, uint32_t ID, uint32_t Payload)配置参考报文。
源码注释
name   FDCAN_TT_ConfigRefMsg.
fun    Configure the reference message.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  IdType :
          - FDCAN_STANDARD_ID
          - FDCAN_EXTENDED_ID
param  ID Reference Identifier.
       This parameter must be a number between:
          - 0 and 0x7FF, if IdType is FDCAN_STANDARD_ID
          - 0 and 0x1FFFFFFF, if IdType is FDCAN_EXTENDED_ID
param  Payload Enable or disable the additional payload.
          - FDCAN_TT_REF_MSG_NO_PAYLOAD
          - FDCAN_TT_REF_MSG_ADD_PAYLOAD
return none
void FDCAN_TT_ConfigTrigger(FDCAN_Module *FDCANx, FDCAN_TriggerType *sTriggerConfig)按 FDCAN_TriggerType 结构体中指定的参数配置 FDCAN 触发。
源码注释
name   FDCAN_TT_ConfigTrigger.
fun    Configure the FDCAN trigger according to the specified parameters
       in the FDCAN_TriggerType structure.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  sTriggerConfig :pointer to an FDCAN_TriggerType structure
          - TriggerIndex
               This parameter must be a number between 0 and 63
          - TimeMark
               This parameter must be a number between 0 and 0xFFFF
          - RepeatFactor
               - FDCAN_TT_REPEAT_EVERY_CYCLE
               - FDCAN_TT_REPEAT_EVERY_2ND_CYCLE
               - FDCAN_TT_REPEAT_EVERY_4TH_CYCLE
               - FDCAN_TT_REPEAT_EVERY_8TH_CYCLE
               - FDCAN_TT_REPEAT_EVERY_16TH_CYCLE
               - FDCAN_TT_REPEAT_EVERY_32ND_CYCLE
               - FDCAN_TT_REPEAT_EVERY_64TH_CYCLE
          - StartCycle
               This parameter must be a value between 0 and RepeatFactor.
               This parameter is ignored if RepeatFactor is set to FDCAN_TT_REPEAT_EVERY_CYCLE.
          - TmEventInt
               - FDCAN_TT_TM_NO_INTERNAL_EVENT
               - FDCAN_TT_TM_GEN_INTERNAL_EVENT
          - TmEventExt
               - FDCAN_TT_TM_NO_EXTERNAL_EVENT
               - FDCAN_TT_TM_GEN_EXTERNAL_EVENT
          - TriggerType;
               - FDCAN_TT_TX_REF_TRIGGER
               - FDCAN_TT_TX_REF_TRIGGER_GAP
               - FDCAN_TT_TX_TRIGGER_SINGLE
               - FDCAN_TT_TX_TRIGGER_CONTINUOUS
               - FDCAN_TT_TX_TRIGGER_ARBITRATION
               - FDCAN_TT_TX_TRIGGER_MERGED
               - FDCAN_TT_WATCH_TRIGGER
               - FDCAN_TT_WATCH_TRIGGER_GAP
               - FDCAN_TT_RX_TRIGGER
               - FDCAN_TT_TIME_BASE_TRIGGER
               - FDCAN_TT_END_OF_LIST
          - FilterType
               - FDCAN_STANDARD_ID
               - FDCAN_EXTENDED_ID
          - TxBufferIndex
               - FDCAN_TX_BUFFER0
               - FDCAN_TX_BUFFER1
               - FDCAN_TX_BUFFER2
               - FDCAN_TX_BUFFER3
               - FDCAN_TX_BUFFER4
               - FDCAN_TX_BUFFER5
               - FDCAN_TX_BUFFER6
               - FDCAN_TX_BUFFER7
               - FDCAN_TX_BUFFER8
               - FDCAN_TX_BUFFER9
               - FDCAN_TX_BUFFER10
               - FDCAN_TX_BUFFER11
               - FDCAN_TX_BUFFER12
               - FDCAN_TX_BUFFER13
               - FDCAN_TX_BUFFER14
               - FDCAN_TX_BUFFER15
               - FDCAN_TX_BUFFER16
               - FDCAN_TX_BUFFER17
               - FDCAN_TX_BUFFER18
               - FDCAN_TX_BUFFER19
               - FDCAN_TX_BUFFER20
               - FDCAN_TX_BUFFER21
               - FDCAN_TX_BUFFER22
               - FDCAN_TX_BUFFER23
               - FDCAN_TX_BUFFER24
               - FDCAN_TX_BUFFER25
               - FDCAN_TX_BUFFER26
               - FDCAN_TX_BUFFER27
               - FDCAN_TX_BUFFER28
               - FDCAN_TX_BUFFER29
               - FDCAN_TX_BUFFER30
               - FDCAN_TX_BUFFER31
          - FilterIndex
               This parameter must be a number between:
               - 0 and 127, if FilterType is FDCAN_STANDARD_ID
               - 0 and 63, if FilterType is FDCAN_EXTENDED_ID
return none
ErrorStatus FDCAN_TT_SetGlobalTime(FDCAN_Module *FDCANx, uint32_t TimePreset)为下一条参考报文安排全局时间调整。
源码注释
name   FDCAN_TT_SetGlobalTime.
fun    Schedule global time adjustment for the next reference message.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TimePreset :time preset value.
       This parameter must be a number between:
         - 0x0000 and 0x7FFF, Next_Master_Ref_Mark = Current_Master_Ref_Mark + TimePreset
         or
         - 0x8001 and 0xFFFF, Next_Master_Ref_Mark = Current_Master_Ref_Mark - (0x10000 - TimePreset)
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_SetClockSync(FDCAN_Module *FDCANx, uint32_t NewTURNumerator)为下一条参考报文安排 TUR 分子更新。
源码注释
name   FDCAN_TT_SetClockSync.
fun    Schedule TUR numerator update for the next reference message.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  NewTURNumerator :new value of the TUR numerator.
       This parameter must be a number between 0x10000 and 0x1FFFF.
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_ConfigStopWatch(FDCAN_Module *FDCANx, uint32_t Source, uint32_t Polarity)配置秒表来源与极性。
源码注释
name   FDCAN_TT_ConfigStopWatch.
fun    Configure stop watch source and polarity.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  Source :
          - FDCAN_TT_STOP_WATCH_DISABLED
          - FDCAN_TT_STOP_WATCH_CYCLE_TIME
          - FDCAN_TT_STOP_WATCH_LOCAL_TIME
          - FDCAN_TT_STOP_WATCH_GLOBAL_TIME
param  Polarity :
          - FDCAN_TT_STOP_WATCH_RISING
          - FDCAN_TT_STOP_WATCH_FALLING
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_ConfigRegTimeMark(FDCAN_Module *FDCANx, uint32_t TimeMarkSource, uint32_t TimeMarkValue, uint32_t RepeatFactor, uint32_t StartCycle)配置寄存器时间标记脉冲的产生。
源码注释
name   FDCAN_TT_ConfigRegTimeMark.
fun    Configure register time mark pulse generation.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TimeMarkSource :
          - FDCAN_TT_REG_TIMEMARK_DIABLED
          - FDCAN_TT_REG_TIMEMARK_CYCLE_TIME
          - FDCAN_TT_REG_TIMEMARK_LOCAL_TIME
          - FDCAN_TT_REG_TIMEMARK_GLOBAL_TIME
param  TimeMarkValue :time mark value (reference).
       This parameter must be a number between 0 and 0xFFFF.
param  RepeatFactor :
          - FDCAN_TT_REPEAT_EVERY_CYCLE
          - FDCAN_TT_REPEAT_EVERY_2ND_CYCLE
          - FDCAN_TT_REPEAT_EVERY_4TH_CYCLE
          - FDCAN_TT_REPEAT_EVERY_8TH_CYCLE
          - FDCAN_TT_REPEAT_EVERY_16TH_CYCLE
          - FDCAN_TT_REPEAT_EVERY_32ND_CYCLE
          - FDCAN_TT_REPEAT_EVERY_64TH_CYCLE
param  StartCycle :index of the first cycle in which the time mark becomes valid.
       This parameter is ignored if RepeatFactor is set to FDCAN_TT_REPEAT_EVERY_CYCLE.
       This parameter must be a number between 0 and RepeatFactor.
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_EnableRegTMPulse(FDCAN_Module *FDCANx, FunctionalState Cmd)使能或关闭寄存器时间标记脉冲的产生。
源码注释
name   FDCAN_TT_EnableRegTMPulse.
fun    Enables or disables register time mark pulse generation.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param   Cmd (The input parameters must be the following values):
          - ENABLE
          - DISABLE
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_EnableTrigTMPulse(FDCAN_Module *FDCANx, FunctionalState Cmd)使能或关闭触发时间标记脉冲的产生。
源码注释
name   FDCAN_TT_EnableTrigTMPulse.
fun    Enables or disables trigger time mark pulse generation.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param   Cmd (The input parameters must be the following values):
          - ENABLE
          - DISABLE
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_EnableGapPinCtrl(FDCAN_Module *FDCANx, FunctionalState Cmd)使能或关闭由输入引脚 fdcan_evt 引起的间隙控制。
源码注释
name   FDCAN_TT_EnableGapPinCtrl.
fun    Enables or disables gap control by input pin fdcan_evt.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param   Cmd (The input parameters must be the following values):
          - ENABLE
          - DISABLE
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_EnableTMGapCtrl(FDCAN_Module *FDCANx, FunctionalState Cmd)使能或关闭由寄存器时间标记中断引起的间隙控制(仅结束)。
源码注释
name   FDCAN_TT_EnableTMGapCtrl.
fun    Enables or disables gap control (finish only) by register time mark interrupt.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param   Cmd (The input parameters must be the following values):
          - ENABLE
          - DISABLE
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_SetNextIsGap(FDCAN_Module *FDCANx)使下一条参考报文的 Next_is_Gap 位为 1 后发送。
源码注释
name   FDCAN_TT_SetNextIsGap.
fun    Transmit next reference message with Next_is_Gap = "1".
param  FDCANx :
          - FDCAN1
          - FDCAN2
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_SetEndOfGap(FDCAN_Module *FDCANx)通过请求启动参考报文来结束一次间隙。
源码注释
name   FDCAN_TT_SetEndOfGap.
fun    Finish a Gap by requesting start of reference message.
param  FDCANx :
          - FDCAN1
          - FDCAN2
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_ConfigExtSyncPhase(FDCAN_Module *FDCANx, uint32_t TargetPhase)配置由事件触发输入引脚进行外部同步所用的目标相位。
源码注释
name   FDCAN_TT_ConfigExtSyncPhase.
fun    Configure target phase used for external synchronization by event
       trigger input pin.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TargetPhase :defines target value of cycle time when a rising edge
       of fdcan_evt is expected.
       This parameter must be a number between 0 and 0xFFFF.
return ErrorStatus
          - SUCCESS
          - ERROR
ErrorStatus FDCAN_TT_EnableExtSync(FDCAN_Module *FDCANx, FunctionalState Cmd)使能或关闭外部调度同步。
源码注释
name   FDCAN_TT_EnableExtSync.
fun    Enable or disable external schedule synchronization.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param   Cmd (The input parameters must be the following values):
          - ENABLE
          - DISABLE
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_TT_GetStatus(FDCAN_Module *FDCANx, FDCAN_TT_Status *TTStatus)获取时间触发(TT)工作状态。
源码注释
name   FDCAN_TT_GetStatus.
fun    Get TT operation status.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TTStatus pointer to an FDCAN_TT_Status structure.
          - ErrorLevel
               - FDCAN_TT_NO_ERROR
               - FDCAN_TT_WARNING
               - FDCAN_TT_ERROR
               - FDCAN_TT_SEVERE_ERROR
          - MasterState
               - FDCAN_TT_MASTER_OFF
               - FDCAN_TT_TIME_SLAVE
               - FDCAN_TT_BACKUP_TIME_MASTER
               - FDCAN_TT_CURRENT_TIME_MASTER
          - SyncState
               - FDCAN_TT_OUT_OF_SYNC
               - FDCAN_TT_SYNCHRONIZING
               - FDCAN_TT_IN_GAP
               - FDCAN_TT_IN_SCHEDULE
          - GTimeQuality
               - FDCAN_TT_GTIME_NOT_VALID
               - FDCAN_TT_GTIME_IN_MASTER_PHASE
          - ClockQuality
               - FDCAN_TT_LOCAL_CLOCK_NOT_SYNC
               - FDCAN_TT_SYNC_DEV_LESS_THAN_SDL
          - RefTrigOffset
               This parameter can be a number between 0 and 0xFF
          - GTimeDiscPending
               - FDCAN_TT_NO_GTIME_PENDING
               - FDCAN_TT_WATI_GTIMESYNC_PRESENT
          - GapFinished
               - FDCAN_TT_GAP_RESET
               - FDCAN_TT_GAP_FINISHED
          - MasterPriority
               This parameter can be a number between 0 and 0x7
          - GapStarted
               - FDCAN_TT_NO_GAP
               - FDCAN_TT_GAP_STARTED
          - WaitForEvt
               - FDCAN_TT_GAP_NOT_ANNOUNCED
               - FDCAN_TT_REF_MSG_RECEIVED
          - AppWdgEvt
               - FDCAN_TT_WATCHDOG_VALID
               - FDCAN_TT_WATCHDOG_INVALID
          - ECSPending
               - FDCAN_TT_NO_EXT_CLOCK_SYNC
               - FDCAN_TT_WAIT_EXT_CLOCK_SYNC
          - PhaseLock
               - FDCAN_TT_PHASE_OUT_OF_RANGE
               - FDCAN_TT_PHASE_IN_RANGE
return none
FlagStatus FDCAN_GetFlag(FDCAN_Module *FDCANx, uint32_t Flag)检查指定的 FDCAN 标志是否置位。
源码注释
name   FDCAN_GetFlag.
fun    Check whether the specified FDCAN flag is set or not.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Flag :
          - FDCAN_FLAG_RESERVED_ADDRESS_ACCESS
          - FDCAN_FLAG_DATA_PROTOCOL_ERROR
          - FDCAN_FLAG_ARB_PROTOCOL_ERROR
          - FDCAN_FLAG_RAM_WATCHDOG
          - FDCAN_FLAG_BUS_OFF
          - FDCAN_FLAG_ERROR_WARNING
          - FDCAN_FLAG_ERROR_PASSIVE
          - FDCAN_FLAG_ERROR_LOGGING_OVERFLOW
          - FDCAN_FLAG_RX_BUFFER_NEW_MESSAGE
          - FDCAN_FLAG_TIMEOUT_OCCURRED
          - FDCAN_FLAG_RAM_ACCESS_FAILURE
          - FDCAN_FLAG_TIMESTAMP_WRAPAROUND
          - FDCAN_FLAG_TX_EVT_FIFO_ELT_LOST
          - FDCAN_FLAG_TX_EVT_FIFO_FULL
          - FDCAN_FLAG_TX_EVT_FIFO_WATERMARK
          - FDCAN_FLAG_TX_EVT_FIFO_NEW_DATA
          - FDCAN_FLAG_TX_FIFO_EMPTY
          - FDCAN_FLAG_TX_ABORT_COMPLETE
          - FDCAN_FLAG_TX_COMPLETE
          - FDCAN_FLAG_RX_HIGH_PRIORITY_MSG
          - FDCAN_FLAG_RX_FIFO1_MESSAGE_LOST
          - FDCAN_FLAG_RX_FIFO1_FULL
          - FDCAN_FLAG_RX_FIFO1_WATERMARK
          - FDCAN_FLAG_RX_FIFO1_NEW_MESSAGE
          - FDCAN_FLAG_RX_FIFO0_MESSAGE_LOST
          - FDCAN_FLAG_RX_FIFO0_FULL
          - FDCAN_FLAG_RX_FIFO0_WATERMARK
          - FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE
return FlagStatus
          - RESET
          - SET
void FDCAN_ClearFlag(FDCAN_Module *FDCANx, uint32_t Flag)清除指定的 FDCAN 标志。
源码注释
name   FDCAN_ClearFlag.
fun    Clear the specified FDCAN flags.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Flag :
          - FDCAN_FLAG_RESERVED_ADDRESS_ACCESS
          - FDCAN_FLAG_DATA_PROTOCOL_ERROR
          - FDCAN_FLAG_ARB_PROTOCOL_ERROR
          - FDCAN_FLAG_RAM_WATCHDOG
          - FDCAN_FLAG_BUS_OFF
          - FDCAN_FLAG_ERROR_WARNING
          - FDCAN_FLAG_ERROR_PASSIVE
          - FDCAN_FLAG_ERROR_LOGGING_OVERFLOW
          - FDCAN_FLAG_RX_BUFFER_NEW_MESSAGE
          - FDCAN_FLAG_TIMEOUT_OCCURRED
          - FDCAN_FLAG_RAM_ACCESS_FAILURE
          - FDCAN_FLAG_TIMESTAMP_WRAPAROUND
          - FDCAN_FLAG_TX_EVT_FIFO_ELT_LOST
          - FDCAN_FLAG_TX_EVT_FIFO_FULL
          - FDCAN_FLAG_TX_EVT_FIFO_WATERMARK
          - FDCAN_FLAG_TX_EVT_FIFO_NEW_DATA
          - FDCAN_FLAG_TX_FIFO_EMPTY
          - FDCAN_FLAG_TX_ABORT_COMPLETE
          - FDCAN_FLAG_TX_COMPLETE
          - FDCAN_FLAG_RX_HIGH_PRIORITY_MSG
          - FDCAN_FLAG_RX_FIFO1_MESSAGE_LOST
          - FDCAN_FLAG_RX_FIFO1_FULL
          - FDCAN_FLAG_RX_FIFO1_WATERMARK
          - FDCAN_FLAG_RX_FIFO1_NEW_MESSAGE
          - FDCAN_FLAG_RX_FIFO0_MESSAGE_LOST
          - FDCAN_FLAG_RX_FIFO0_FULL
          - FDCAN_FLAG_RX_FIFO0_WATERMARK
          - FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE
return  none
void FDCAN_ConfigIntLine(FDCAN_Module *FDCANx, uint32_t Int, uint32_t IntLine)将中断分配到中断线 0 或 1。
源码注释
name   FDCAN_ConfigIntLine.
fun    Assign interrupts to either Interrupt line 0 or 1.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Int :
          - FDCAN_INT_RX_FIFO0_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO0_WATERMARK
          - FDCAN_INT_RX_FIFO0_FULL
          - FDCAN_INT_RX_FIFO0_MESSAGE_LOST
          - FDCAN_INT_RX_FIFO1_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO1_WATERMARK
          - FDCAN_INT_RX_FIFO1_FULL
          - FDCAN_INT_RX_FIFO1_MESSAGE_LOST
          - FDCAN_INT_RX_HIGH_PRIORITY_MSG
          - FDCAN_INT_TX_COMPLETE
          - FDCAN_INT_TX_ABORT_COMPLETE
          - FDCAN_INT_TX_FIFO_EMPTY
          - FDCAN_INT_TX_EVT_FIFO_NEW_DATA
          - FDCAN_INT_TX_EVT_FIFO_WATERMARK
          - FDCAN_INT_TX_EVT_FIFO_FULL
          - FDCAN_INT_TX_EVT_FIFO_ELT_LOST
          - FDCAN_INT_TIMESTAMP_WRAPAROUND
          - FDCAN_INT_RAM_ACCESS_FAILURE
          - FDCAN_INT_TIMEOUT_OCCURRED
          - FDCAN_INT_RX_BUFFER_NEW_MESSAGE
          - FDCAN_INT_ERROR_LOGGING_OVERFLOW
          - FDCAN_INT_ERROR_PASSIVE
          - FDCAN_INT_ERROR_WARNING
          - FDCAN_INT_BUS_OFF
          - FDCAN_INT_RAM_WATCHDOG
          - FDCAN_INT_ARB_PROTOCOL_ERROR
          - FDCAN_INT_DATA_PROTOCOL_ERROR
          - FDCAN_INT_RESERVED_ADDRESS_ACCESS
param  IntLine :
          - FDCAN_INTERRUPT_LINE0
          - FDCAN_INTERRUPT_LINE1
return none
void FDCAN_EnableInt(FDCAN_Module *FDCANx, uint32_t Int)使能指定的 FDCAN 中断。
源码注释
name   FDCAN_EnableInt.
fun    Enable the specified FDCAN interrupts.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Int :
          - FDCAN_INT_RX_FIFO0_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO0_WATERMARK
          - FDCAN_INT_RX_FIFO0_FULL
          - FDCAN_INT_RX_FIFO0_MESSAGE_LOST
          - FDCAN_INT_RX_FIFO1_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO1_WATERMARK
          - FDCAN_INT_RX_FIFO1_FULL
          - FDCAN_INT_RX_FIFO1_MESSAGE_LOST
          - FDCAN_INT_RX_HIGH_PRIORITY_MSG
          - FDCAN_INT_TX_COMPLETE
          - FDCAN_INT_TX_ABORT_COMPLETE
          - FDCAN_INT_TX_FIFO_EMPTY
          - FDCAN_INT_TX_EVT_FIFO_NEW_DATA
          - FDCAN_INT_TX_EVT_FIFO_WATERMARK
          - FDCAN_INT_TX_EVT_FIFO_FULL
          - FDCAN_INT_TX_EVT_FIFO_ELT_LOST
          - FDCAN_INT_TIMESTAMP_WRAPAROUND
          - FDCAN_INT_RAM_ACCESS_FAILURE
          - FDCAN_INT_TIMEOUT_OCCURRED
          - FDCAN_INT_RX_BUFFER_NEW_MESSAGE
          - FDCAN_INT_ERROR_LOGGING_OVERFLOW
          - FDCAN_INT_ERROR_PASSIVE
          - FDCAN_INT_ERROR_WARNING
          - FDCAN_INT_BUS_OFF
          - FDCAN_INT_RAM_WATCHDOG
          - FDCAN_INT_ARB_PROTOCOL_ERROR
          - FDCAN_INT_DATA_PROTOCOL_ERROR
          - FDCAN_INT_RESERVED_ADDRESS_ACCESS
return none
void FDCAN_DisableInt(FDCAN_Module *FDCANx, uint32_t Int)关闭指定的 FDCAN 中断。
源码注释
name   FDCAN_DisableInt.
fun    Disable the specified FDCAN interrupts.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Int :
          - FDCAN_INT_RX_FIFO0_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO0_WATERMARK
          - FDCAN_INT_RX_FIFO0_FULL
          - FDCAN_INT_RX_FIFO0_MESSAGE_LOST
          - FDCAN_INT_RX_FIFO1_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO1_WATERMARK
          - FDCAN_INT_RX_FIFO1_FULL
          - FDCAN_INT_RX_FIFO1_MESSAGE_LOST
          - FDCAN_INT_RX_HIGH_PRIORITY_MSG
          - FDCAN_INT_TX_COMPLETE
          - FDCAN_INT_TX_ABORT_COMPLETE
          - FDCAN_INT_TX_FIFO_EMPTY
          - FDCAN_INT_TX_EVT_FIFO_NEW_DATA
          - FDCAN_INT_TX_EVT_FIFO_WATERMARK
          - FDCAN_INT_TX_EVT_FIFO_FULL
          - FDCAN_INT_TX_EVT_FIFO_ELT_LOST
          - FDCAN_INT_TIMESTAMP_WRAPAROUND
          - FDCAN_INT_RAM_ACCESS_FAILURE
          - FDCAN_INT_TIMEOUT_OCCURRED
          - FDCAN_INT_RX_BUFFER_NEW_MESSAGE
          - FDCAN_INT_ERROR_LOGGING_OVERFLOW
          - FDCAN_INT_ERROR_PASSIVE
          - FDCAN_INT_ERROR_WARNING
          - FDCAN_INT_BUS_OFF
          - FDCAN_INT_RAM_WATCHDOG
          - FDCAN_INT_ARB_PROTOCOL_ERROR
          - FDCAN_INT_DATA_PROTOCOL_ERROR
          - FDCAN_INT_RESERVED_ADDRESS_ACCESS
return none
FlagStatus FDCAN_GetIntFlag(FDCAN_Module *FDCANx, uint32_t Flag)检查指定的 FDCAN 中断是否置位。
源码注释
name   FDCAN_GetIntFlag.
fun    Check whether the specified FDCAN interrupt is set or not.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Flag :
          - FDCAN_FLAG_RESERVED_ADDRESS_ACCESS
          - FDCAN_FLAG_DATA_PROTOCOL_ERROR
          - FDCAN_FLAG_ARB_PROTOCOL_ERROR
          - FDCAN_FLAG_RAM_WATCHDOG
          - FDCAN_FLAG_BUS_OFF
          - FDCAN_FLAG_ERROR_WARNING
          - FDCAN_FLAG_ERROR_PASSIVE
          - FDCAN_FLAG_ERROR_LOGGING_OVERFLOW
          - FDCAN_FLAG_RX_BUFFER_NEW_MESSAGE
          - FDCAN_FLAG_TIMEOUT_OCCURRED
          - FDCAN_FLAG_RAM_ACCESS_FAILURE
          - FDCAN_FLAG_TIMESTAMP_WRAPAROUND
          - FDCAN_FLAG_TX_EVT_FIFO_ELT_LOST
          - FDCAN_FLAG_TX_EVT_FIFO_FULL
          - FDCAN_FLAG_TX_EVT_FIFO_WATERMARK
          - FDCAN_FLAG_TX_EVT_FIFO_NEW_DATA
          - FDCAN_FLAG_TX_FIFO_EMPTY
          - FDCAN_FLAG_TX_ABORT_COMPLETE
          - FDCAN_FLAG_TX_COMPLETE
          - FDCAN_FLAG_RX_HIGH_PRIORITY_MSG
          - FDCAN_FLAG_RX_FIFO1_MESSAGE_LOST
          - FDCAN_FLAG_RX_FIFO1_FULL
          - FDCAN_FLAG_RX_FIFO1_WATERMARK
          - FDCAN_FLAG_RX_FIFO1_NEW_MESSAGE
          - FDCAN_FLAG_RX_FIFO0_MESSAGE_LOST
          - FDCAN_FLAG_RX_FIFO0_FULL
          - FDCAN_FLAG_RX_FIFO0_WATERMARK
          - FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE
return FlagStatus
          - RESET
          - SET
ErrorStatus FDCAN_ActivateInt(FDCAN_Module *FDCANx, uint32_t Int, uint32_t BufferIndexes)激活指定的 FDCAN 中断。
源码注释
name   FDCAN_ActivateInt.
fun    Activate the specified FDCAN interrupts.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Int :
          - FDCAN_INT_RX_FIFO0_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO0_WATERMARK
          - FDCAN_INT_RX_FIFO0_FULL
          - FDCAN_INT_RX_FIFO0_MESSAGE_LOST
          - FDCAN_INT_RX_FIFO1_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO1_WATERMARK
          - FDCAN_INT_RX_FIFO1_FULL
          - FDCAN_INT_RX_FIFO1_MESSAGE_LOST
          - FDCAN_INT_RX_HIGH_PRIORITY_MSG
          - FDCAN_INT_TX_COMPLETE
          - FDCAN_INT_TX_ABORT_COMPLETE
          - FDCAN_INT_TX_FIFO_EMPTY
          - FDCAN_INT_TX_EVT_FIFO_NEW_DATA
          - FDCAN_INT_TX_EVT_FIFO_WATERMARK
          - FDCAN_INT_TX_EVT_FIFO_FULL
          - FDCAN_INT_TX_EVT_FIFO_ELT_LOST
          - FDCAN_INT_TIMESTAMP_WRAPAROUND
          - FDCAN_INT_RAM_ACCESS_FAILURE
          - FDCAN_INT_TIMEOUT_OCCURRED
          - FDCAN_INT_RX_BUFFER_NEW_MESSAGE
          - FDCAN_INT_ERROR_LOGGING_OVERFLOW
          - FDCAN_INT_ERROR_PASSIVE
          - FDCAN_INT_ERROR_WARNING
          - FDCAN_INT_BUS_OFF
          - FDCAN_INT_RAM_WATCHDOG
          - FDCAN_INT_ARB_PROTOCOL_ERROR
          - FDCAN_INT_DATA_PROTOCOL_ERROR
          - FDCAN_INT_RESERVED_ADDRESS_ACCESS
param  BufferIndexes :
          - FDCAN_TX_BUFFER0
          - FDCAN_TX_BUFFER1
          - FDCAN_TX_BUFFER2
          - FDCAN_TX_BUFFER3
          - FDCAN_TX_BUFFER4
          - FDCAN_TX_BUFFER5
          - FDCAN_TX_BUFFER6
          - FDCAN_TX_BUFFER7
          - FDCAN_TX_BUFFER8
          - FDCAN_TX_BUFFER9
          - FDCAN_TX_BUFFER10
          - FDCAN_TX_BUFFER11
          - FDCAN_TX_BUFFER12
          - FDCAN_TX_BUFFER13
          - FDCAN_TX_BUFFER14
          - FDCAN_TX_BUFFER15
          - FDCAN_TX_BUFFER16
          - FDCAN_TX_BUFFER17
          - FDCAN_TX_BUFFER18
          - FDCAN_TX_BUFFER19
          - FDCAN_TX_BUFFER20
          - FDCAN_TX_BUFFER21
          - FDCAN_TX_BUFFER22
          - FDCAN_TX_BUFFER23
          - FDCAN_TX_BUFFER24
          - FDCAN_TX_BUFFER25
          - FDCAN_TX_BUFFER26
          - FDCAN_TX_BUFFER27
          - FDCAN_TX_BUFFER28
          - FDCAN_TX_BUFFER29
          - FDCAN_TX_BUFFER30
          - FDCAN_TX_BUFFER31
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_DeactivateInt(FDCAN_Module *FDCANx, uint32_t Int)关闭(取消激活)指定的 FDCAN 中断。
源码注释
name   FDCAN_DeactivateInt.
fun    Deactivate the specified FDCAN interrupts.
param  FDCANx :
          - FDCAN1
          - FDCAN2
          - FDCAN3
param  Int :
          - FDCAN_INT_RX_FIFO0_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO0_WATERMARK
          - FDCAN_INT_RX_FIFO0_FULL
          - FDCAN_INT_RX_FIFO0_MESSAGE_LOST
          - FDCAN_INT_RX_FIFO1_NEW_MESSAGE
          - FDCAN_INT_RX_FIFO1_WATERMARK
          - FDCAN_INT_RX_FIFO1_FULL
          - FDCAN_INT_RX_FIFO1_MESSAGE_LOST
          - FDCAN_INT_RX_HIGH_PRIORITY_MSG
          - FDCAN_INT_TX_COMPLETE
          - FDCAN_INT_TX_ABORT_COMPLETE
          - FDCAN_INT_TX_FIFO_EMPTY
          - FDCAN_INT_TX_EVT_FIFO_NEW_DATA
          - FDCAN_INT_TX_EVT_FIFO_WATERMARK
          - FDCAN_INT_TX_EVT_FIFO_FULL
          - FDCAN_INT_TX_EVT_FIFO_ELT_LOST
          - FDCAN_INT_TIMESTAMP_WRAPAROUND
          - FDCAN_INT_RAM_ACCESS_FAILURE
          - FDCAN_INT_TIMEOUT_OCCURRED
          - FDCAN_INT_RX_BUFFER_NEW_MESSAGE
          - FDCAN_INT_ERROR_LOGGING_OVERFLOW
          - FDCAN_INT_ERROR_PASSIVE
          - FDCAN_INT_ERROR_WARNING
          - FDCAN_INT_BUS_OFF
          - FDCAN_INT_RAM_WATCHDOG
          - FDCAN_INT_ARB_PROTOCOL_ERROR
          - FDCAN_INT_DATA_PROTOCOL_ERROR
          - FDCAN_INT_RESERVED_ADDRESS_ACCESS
return none
FlagStatus FDCAN_TT_GetIntFlag(FDCAN_Module *FDCANx, uint32_t TT_Flag)检查指定的 FDCAN 时间触发中断是否置位。
源码注释
name   FDCAN_TT_GetIntFlag.
fun    Check whether the specified FDCAN TT interrupt is set or not.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TT_Flag :
          - FDCAN_TT_FLAG_BASIC_CYCLE_START
          - FDCAN_TT_FLAG_MATRIX_CYCLE_START
          - FDCAN_TT_FLAG_SYNC_MODE_CHANGE
          - FDCAN_TT_FLAG_START_OF_GAP
          - FDCAN_TT_FLAG_REG_TIME_MARK
          - FDCAN_TT_FLAG_TRIG_TIME_MARK
          - FDCAN_TT_FLAG_STOP_WATCH
          - FDCAN_TT_FLAG_GLOBAL_TIME_WRAP
          - FDCAN_TT_FLAG_GLOBAL_TIME_DISC
          - FDCAN_TT_FLAG_GLOBAL_TIME_ERROR
          - FDCAN_TT_FLAG_TX_COUNT_UNDERFLOW
          - FDCAN_TT_FLAG_TX_COUNT_OVERFLOW
          - FDCAN_TT_FLAG_SCHEDULING_ERROR_1
          - FDCAN_TT_FLAG_SCHEDULING_ERROR_2
          - FDCAN_TT_FLAG_ERROR_LEVEL_CHANGE
          - FDCAN_TT_FLAG_INIT_WATCH_TRIGGER
          - FDCAN_TT_FLAG_WATCH_TRIGGER
          - FDCAN_TT_FLAG_APPLICATION_WATCHDOG
          - FDCAN_TT_FLAG_CONFIG_ERROR
return FlagStatus
          - RESET
          - SET
FlagStatus FDCAN_TT_GetFlag(FDCAN_Module *FDCANx, uint32_t TT_Flag)检查指定的 FDCAN 时间触发标志是否置位。
源码注释
name   FDCAN_TT_GetFlag.
fun    Check whether the specified FDCAN TT flag is set or not.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TT_Flag :
          - FDCAN_TT_FLAG_BASIC_CYCLE_START
          - FDCAN_TT_FLAG_MATRIX_CYCLE_START
          - FDCAN_TT_FLAG_SYNC_MODE_CHANGE
          - FDCAN_TT_FLAG_START_OF_GAP
          - FDCAN_TT_FLAG_REG_TIME_MARK
          - FDCAN_TT_FLAG_TRIG_TIME_MARK
          - FDCAN_TT_FLAG_STOP_WATCH
          - FDCAN_TT_FLAG_GLOBAL_TIME_WRAP
          - FDCAN_TT_FLAG_GLOBAL_TIME_DISC
          - FDCAN_TT_FLAG_GLOBAL_TIME_ERROR
          - FDCAN_TT_FLAG_TX_COUNT_UNDERFLOW
          - FDCAN_TT_FLAG_TX_COUNT_OVERFLOW
          - FDCAN_TT_FLAG_SCHEDULING_ERROR_1
          - FDCAN_TT_FLAG_SCHEDULING_ERROR_2
          - FDCAN_TT_FLAG_ERROR_LEVEL_CHANGE
          - FDCAN_TT_FLAG_INIT_WATCH_TRIGGER
          - FDCAN_TT_FLAG_WATCH_TRIGGER
          - FDCAN_TT_FLAG_APPLICATION_WATCHDOG
          - FDCAN_TT_FLAG_CONFIG_ERROR
return FlagStatus
          - RESET
          - SET
void FDCAN_TT_ClearFlag(FDCAN_Module *FDCANx, uint32_t TT_Flag)清除指定的 FDCAN 时间触发标志。
源码注释
name   FDCAN_TT_ClearFlag.
fun    Clear the specified FDCAN TT flag.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TT_Flag :
          - FDCAN_TT_FLAG_BASIC_CYCLE_START
          - FDCAN_TT_FLAG_MATRIX_CYCLE_START
          - FDCAN_TT_FLAG_SYNC_MODE_CHANGE
          - FDCAN_TT_FLAG_START_OF_GAP
          - FDCAN_TT_FLAG_REG_TIME_MARK
          - FDCAN_TT_FLAG_TRIG_TIME_MARK
          - FDCAN_TT_FLAG_STOP_WATCH
          - FDCAN_TT_FLAG_GLOBAL_TIME_WRAP
          - FDCAN_TT_FLAG_GLOBAL_TIME_DISC
          - FDCAN_TT_FLAG_GLOBAL_TIME_ERROR
          - FDCAN_TT_FLAG_TX_COUNT_UNDERFLOW
          - FDCAN_TT_FLAG_TX_COUNT_OVERFLOW
          - FDCAN_TT_FLAG_SCHEDULING_ERROR_1
          - FDCAN_TT_FLAG_SCHEDULING_ERROR_2
          - FDCAN_TT_FLAG_ERROR_LEVEL_CHANGE
          - FDCAN_TT_FLAG_INIT_WATCH_TRIGGER
          - FDCAN_TT_FLAG_WATCH_TRIGGER
          - FDCAN_TT_FLAG_APPLICATION_WATCHDOG
          - FDCAN_TT_FLAG_CONFIG_ERROR
return none
void FDCAN_TT_ConfigIntLine(FDCAN_Module *FDCANx, uint32_t TT_Int, uint32_t IntLine)将时间触发中断分配到中断线 0 或 1。
源码注释
name   FDCAN_TT_ConfigIntLine.
fun    Assign TT interrupts to either Interrupt line 0 or 1.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TT_Int :
          - FDCAN_TT_INT_BASIC_CYCLE_START
          - FDCAN_TT_INT_MATRIX_CYCLE_START
          - FDCAN_TT_INT_SYNC_MODE_CHANGE
          - FDCAN_TT_INT_START_OF_GAP
          - FDCAN_TT_INT_REG_TIME_MARK
          - FDCAN_TT_INT_TRIG_TIME_MARK
          - FDCAN_TT_INT_STOP_WATCH
          - FDCAN_TT_INT_GLOBAL_TIME_WRAP
          - FDCAN_TT_INT_GLOBAL_TIME_DISC
          - FDCAN_TT_INT_GLOBAL_TIME_ERROR
          - FDCAN_TT_INT_TX_COUNT_UNDERFLOW
          - FDCAN_TT_INT_TX_COUNT_OVERFLOW
          - FDCAN_TT_INT_SCHEDULING_ERROR_1
          - FDCAN_TT_INT_SCHEDULING_ERROR_2
          - FDCAN_TT_INT_ERROR_LEVEL_CHANGE
          - FDCAN_TT_INT_INIT_WATCH_TRIGGER
          - FDCAN_TT_INT_WATCH_TRIGGER
          - FDCAN_TT_INT_APPLICATION_WATCHDOG
          - FDCAN_TT_INT_CONFIG_ERROR
param  IntLine :
          - FDCAN_INTERRUPT_LINE0
          - FDCAN_INTERRUPT_LINE1
return none
void FDCAN_TT_EnableInt(FDCAN_Module *FDCANx, uint32_t TT_Int, FunctionalState Cmd)使能或关闭指定的 FDCAN 时间触发中断。
源码注释
name   FDCAN_TT_EnableInt.
fun    Enable or disable the specified FDCAN TT interrupts.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TT_Int :
          - FDCAN_TT_INT_BASIC_CYCLE_START
          - FDCAN_TT_INT_MATRIX_CYCLE_START
          - FDCAN_TT_INT_SYNC_MODE_CHANGE
          - FDCAN_TT_INT_START_OF_GAP
          - FDCAN_TT_INT_REG_TIME_MARK
          - FDCAN_TT_INT_TRIG_TIME_MARK
          - FDCAN_TT_INT_STOP_WATCH
          - FDCAN_TT_INT_GLOBAL_TIME_WRAP
          - FDCAN_TT_INT_GLOBAL_TIME_DISC
          - FDCAN_TT_INT_GLOBAL_TIME_ERROR
          - FDCAN_TT_INT_TX_COUNT_UNDERFLOW
          - FDCAN_TT_INT_TX_COUNT_OVERFLOW
          - FDCAN_TT_INT_SCHEDULING_ERROR_1
          - FDCAN_TT_INT_SCHEDULING_ERROR_2
          - FDCAN_TT_INT_ERROR_LEVEL_CHANGE
          - FDCAN_TT_INT_INIT_WATCH_TRIGGER
          - FDCAN_TT_INT_WATCH_TRIGGER
          - FDCAN_TT_INT_APPLICATION_WATCHDOG
          - FDCAN_TT_INT_CONFIG_ERROR
return none
void FDCAN_TT_DisableInt(FDCAN_Module *FDCANx, uint32_t TT_Int)该函数在驱动头文件中声明,当前 SDK 未提供对应实现。
源码注释
name    FDCAN_TT_DisableInt
fun     (declared in the driver header; no implementation in this SDK)
FlagStatus FDCAN_TT_GetInt(FDCAN_Module *FDCANx, uint32_t TT_Flag)该函数在驱动头文件中声明,当前 SDK 未提供对应实现。
源码注释
name    FDCAN_TT_GetInt
fun     (declared in the driver header; no implementation in this SDK)
ErrorStatus FDCAN_TT_ActivateInt(FDCAN_Module *FDCANx, uint32_t TT_Int)激活指定的 FDCAN 时间触发中断。
源码注释
name   FDCAN_TT_ActivateInt.
fun    Activate the specified FDCAN TT interrupts.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TT_Int :
          - FDCAN_TT_INT_BASIC_CYCLE_START
          - FDCAN_TT_INT_MATRIX_CYCLE_START
          - FDCAN_TT_INT_SYNC_MODE_CHANGE
          - FDCAN_TT_INT_START_OF_GAP
          - FDCAN_TT_INT_REG_TIME_MARK
          - FDCAN_TT_INT_TRIG_TIME_MARK
          - FDCAN_TT_INT_STOP_WATCH
          - FDCAN_TT_INT_GLOBAL_TIME_WRAP
          - FDCAN_TT_INT_GLOBAL_TIME_DISC
          - FDCAN_TT_INT_GLOBAL_TIME_ERROR
          - FDCAN_TT_INT_TX_COUNT_UNDERFLOW
          - FDCAN_TT_INT_TX_COUNT_OVERFLOW
          - FDCAN_TT_INT_SCHEDULING_ERROR_1
          - FDCAN_TT_INT_SCHEDULING_ERROR_2
          - FDCAN_TT_INT_ERROR_LEVEL_CHANGE
          - FDCAN_TT_INT_INIT_WATCH_TRIGGER
          - FDCAN_TT_INT_WATCH_TRIGGER
          - FDCAN_TT_INT_APPLICATION_WATCHDOG
          - FDCAN_TT_INT_CONFIG_ERROR
return ErrorStatus
          - SUCCESS
          - ERROR
void FDCAN_TT_DeactivateInt(FDCAN_Module *FDCANx, uint32_t TT_Int)关闭(取消激活)指定的 FDCAN 时间触发中断。
源码注释
name   FDCAN_TT_DeactivateInt.
fun    Deactivate the specified FDCAN TT interrupts.
param  FDCANx :
          - FDCAN1
          - FDCAN2
param  TT_Int :
          - FDCAN_TT_INT_BASIC_CYCLE_START
          - FDCAN_TT_INT_MATRIX_CYCLE_START
          - FDCAN_TT_INT_SYNC_MODE_CHANGE
          - FDCAN_TT_INT_START_OF_GAP
          - FDCAN_TT_INT_REG_TIME_MARK
          - FDCAN_TT_INT_TRIG_TIME_MARK
          - FDCAN_TT_INT_STOP_WATCH
          - FDCAN_TT_INT_GLOBAL_TIME_WRAP
          - FDCAN_TT_INT_GLOBAL_TIME_DISC
          - FDCAN_TT_INT_GLOBAL_TIME_ERROR
          - FDCAN_TT_INT_TX_COUNT_UNDERFLOW
          - FDCAN_TT_INT_TX_COUNT_OVERFLOW
          - FDCAN_TT_INT_SCHEDULING_ERROR_1
          - FDCAN_TT_INT_SCHEDULING_ERROR_2
          - FDCAN_TT_INT_ERROR_LEVEL_CHANGE
          - FDCAN_TT_INT_INIT_WATCH_TRIGGER
          - FDCAN_TT_INT_WATCH_TRIGGER
          - FDCAN_TT_INT_APPLICATION_WATCHDOG
          - FDCAN_TT_INT_CONFIG_ERROR
return none

5.12.3 Demo 示例说明

本节说明 FDCAN 的 6 个示例:FDCAN_Classic、FDCAN_Interrupt、FDCAN_Loopback、FDCAN_Polling、TTCAN_Level1、TTCAN_Level2;每个示例给出工程目录、数据流向、说明表与核心代码解读。

5.12.3.1 FDCAN_Classic 经典帧收发

工程目录: projects/n32h49x_EVAL/examples/FDCAN/FDCAN_Classic/

配置 FDCAN 与按键时钟→初始化节点 1、节点 2 并划分消息 RAM→配置接收过滤器、时间戳与中断→按键触发两节点各发一帧→交替以中断与轮询方式接收并打印

项目 源码解读
功能 演示 FDCAN1(节点 1)与 FDCAN2(节点 2)以经典 CAN 格式互相收发数据帧;
按键交替切换中断接收与轮询接收,并打印收发过程信息。
源码组成 src/main.c:时钟源、引脚、节点配置与主循环收发;
src/n32h49x_it.c:节点 1、节点 2 中断服务程序;
inc/main.h:引脚、外设与中断号宏定义;
inc/n32h49x_it.h:中断服务程序声明;
readme.txt:功能与使用说明;
MDK-ARM/、EWARM/:Keil 与 IAR 工程。
关键配置 帧格式 FDCAN_FRAME_CLASSIC,工作模式普通;
节点 1 TX=PA4、RX=PA5,节点 2 TX=PG2、RX=PG3;
标称预分频=1、TSEG1=31、TSEG2=8、同步跳转=8,波特率 500Kbps;
节点 1 标准过滤器 ID=0x4AA 掩码=0x7FF 存入 RX FIFO0,节点 2 ID=0x555 存入 RX FIFO1;
内部时间戳 16 分频,RX FIFO 新消息与 TX 发送完成中断挂到中断线 1。
程序与数据路径 main 依次调用 FDCAN_clock_src_config、Node1/Node2_port_config 与 Node1/Node2_Config 完成初始化;
Node1_Config、Node2_Config 内配置 InitParam、过滤器、时间戳与中断并调用 FDCAN_Start 启动;
主循环检测 PA0 按键,达到去抖计数后向两节点各写入一帧;
接收按 IntFlag 在中断与轮询之间交替切换。
主要 API FDCAN_Init、FDCAN_ConfigFilter、FDCAN_ConfigGlobalFilter、FDCAN_Start、FDCAN_AddMsgToTxFifoQ、FDCAN_GetRxMsg、FDCAN_GetIntFlag、FDCAN_ClearFlag
验证方法 复位后串口按 115200 打印经典帧示例信息;
轻按 PA0 后节点 1、节点 2 各发送一帧并打印;
每帧分别以中断或轮询方式接收,打印 ID、时间戳与 8 字节数据。
使用提示 连接跳帽 J8、J2、J15、J9,不要连接 J87、J89;
PA0 按键通过杜邦线接上拉实现;
两节点波特率与位时序必须一致;
开发环境为 N32H497ZGL7_EVB V1.0 上的 KEIL MDK-ARM V5.34 或 IAR EWARM 8.50.1。
核心代码解读与移植

示例用同一个消息 RAM 承载两个节点,并在中断与轮询之间交替接收,便于对照两种接收路径。

数据路径: FDCAN_clock_src_config -> Node1_port_config/Node2_port_config -> Node1_Config/Node2_Config -> FDCAN_Start -> 主循环收发 -> NODE1/NODE2_IRQ_FUNCTION

1. 配置 FDCAN 时钟源。 FDCAN_clock_src_config 把 PLL 分频设为 DIV12,并选择 PLL 作为 FDCAN 时钟源。

src/main.csrc/main.c · FDCAN_clock_src_config
void FDCAN_clock_src_config(void)
{
    /* Config  PLL prescaler for FDCAN */
    RCC_ConfigFDCANPllClk(RCC_FDCAN_PLLSRC_DIV12);

    /* Select PLL as FDCAN clock source */
    RCC_ConfigFDCANClksrc(RCC_FDCAN_CLKSRC_PLL);
}

2. 初始化节点并划分消息 RAM 偏移。 两个节点共用 FDCAN_ram,节点 1 偏移 0、节点 2 偏移 80,初始化后还需检查 EndAddress 是否越界。

src/main.csrc/main.c · Node1_Config
    InitParam.MsgRamStrAddr         = (uint32_t)FDCAN_ram;   /* Msg ram start address, shared by all FDCAN modules */
    InitParam.MsgRamOffset          = 0;    /* Current NODE1 msg ram start offset  */

3. 配置接收过滤与中断。 节点 1 的掩码过滤器 ID=0x4AA、掩码=0x7FF 存入 RX FIFO0,并把 RX FIFO0 新消息与 TX 发送完成分别挂到中断线 1。

src/main.csrc/main.c · Node1_Config
    FilterParam.IdType          = FDCAN_STANDARD_ID;
    FilterParam.FilterIndex     = 0;
    FilterParam.FilterType      = FDCAN_FILTER_MASK;
    FilterParam.FilterConfig    = FDCAN_FILTER_TO_RXFIFO0;
    FilterParam.FilterID1       = 0x4AA;
    FilterParam.FilterID2       = 0x7FF;
    FDCAN_ConfigFilter(NODE1,&FilterParam);

4. 主循环按按键时长触发。 按键累计到约 1ms 后清零计数并翻转接收方式。

src/main.csrc/main.c · main
        if(key_cnt >= (SystemCoreClock/1000))
        {
            key_cnt = 0;
            IntFlag++;

5. 中断服务程序置标志。 节点中断只做标志判断与清除,实际打印在主循环完成。

src/n32h49x_it.csrc/n32h49x_it.c · NODE1_IRQ_FUNCTION
void NODE1_IRQ_FUNCTION(void)
{
    if(FDCAN_GetIntFlag(NODE1,FDCAN_FLAG_TX_COMPLETE) == SET)
    {
        FDCAN_ClearFlag(NODE1,FDCAN_FLAG_TX_COMPLETE);
        TxFlag[0]++;
    }

    if(FDCAN_GetIntFlag(NODE1,FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE) == SET)
    {
        FDCAN_ClearFlag(NODE1,FDCAN_FLAG_RX_FIFO0_NEW_MESSAGE);
        RxFlag[0]++;
    }
}

对应源码: src/main.c、src/n32h49x_it.c

5.12.3.2 FDCAN_Interrupt 中断收发

工程目录: projects/n32h49x_EVAL/examples/FDCAN/FDCAN_Interrupt/

配置 FDCAN 与 EXTI 时钟及引脚→初始化节点 1、节点 2 并划分消息 RAM→配置扩展过滤器、发送缓冲与 FIFO 水线→按键经 EXTI 触发节点 1 发送→发送完成中断与接收水线中断分别打印

项目 源码解读
功能 演示 FDCAN 中断收发:节点 1 发送完成中断与节点 2 接收 FIFO1 水线中断;
按键经 EXTI 触发节点 1 发送一帧,连续收到 2 帧后触发节点 2 水线中断。
源码组成 src/main.c:时钟、引脚、节点配置与主循环;
src/n32h49x_it.c:EXTI1 与节点 1、节点 2 中断服务程序;
inc/main.h:引脚、EXTI、外设与中断号宏定义;
inc/n32h49x_it.h:中断服务程序声明;
readme.txt:功能与使用说明;
MDK-ARM/、EWARM/:Keil 与 IAR 工程。
关键配置 帧格式 FDCAN_FRAME_FD_BRS,BRS 使能,16 字节数据;
节点 1 扩展过滤器 ID=0x0AAAAAAA 掩码=0x1FFFFFFF 存入 RX FIFO0,仅 1 个发送缓冲;
节点 2 扩展过滤器 ID=0x15555555 存入 RX FIFO1,FIFO1 大小 6,水线=2;
节点 1 TX BUFFER0 发送完成中断与节点 2 RX FIFO1 水线中断均挂中断线 1;
按键 PA15 经 EXTI Line1 上升沿触发。
程序与数据路径 main 调用 Key_Int_Init 配置 PA15 与 EXTI1,再调用 FDCAN_clock_src_config 与节点端口、节点配置;
按键中断 EXTI1_IRQHandler 置 TxFlag,主循环据此调用 FDCAN_AddMsgToTxBuffer 与 FDCAN_EnableTxBufferRequest;
发送完成由 NODE1_IRQ_FUNCTION 置 CompFlag,水线到达由 NODE2_IRQ_FUNCTION 置 RxFlag;
主循环按标志取空 RX FIFO1 并打印。
主要 API FDCAN_Init、FDCAN_ConfigFilter、FDCAN_ConfigFifoWatermark、FDCAN_ActivateInt、FDCAN_AddMsgToTxBuffer、FDCAN_EnableTxBufferRequest、FDCAN_GetIntFlag、FDCAN_GetRxMsg
验证方法 复位后串口打印中断收发示例信息;
按 PA15 后节点 1 发送一帧并触发发送完成中断打印;
节点 2 连续收到 2 帧触发 RX FIFO1 水线中断,打印 ID、时间戳与 16 字节数据。
使用提示 连接跳帽 J8、J2、J15、J9,不要连接 J87、J89;
按键 PA15 经 EXTI Line1 上升沿触发;
水线值 2 决定收满 2 帧后才产生中断;
开发环境为 N32H497ZGL7_EVB V1.0 上的 KEIL MDK-ARM V5.34 或 IAR EWARM 8.50.1。
核心代码解读与移植

示例把接收侧交给 FIFO 水线中断、发送侧交给发送完成中断,主循环只做标志到日志的搬运。

数据路径: Key_Int_Init -> FDCAN_clock_src_config -> Node1_Config/Node2_Config -> FDCAN_Start -> EXTI1_IRQHandler -> NODE1/NODE2_IRQ_FUNCTION -> 主循环读 FIFO

1. 用按键中断触发发送。 Key_Int_Init 把 PA15 配为上升沿 EXTI Line1,中断服务程序只置 TxFlag。

src/n32h49x_it.csrc/n32h49x_it.c · EXTI1_IRQHandler
void EXTI1_IRQHandler(void)
{
    if(EXTI_GetStatusFlag(EXTI_LINE1) == SET)
    {
       TxFlag = 1;
    }

    EXTI_ClrITPendBit(EXTI_LINE1);
}

2. 发送缓冲写入并请求发送。 主循环检测到 TxFlag 后写入 TX BUFFER0 的 16 字节数据并激活发送请求,数据指针按帧循环。

src/main.csrc/main.c · main
            FDCAN_AddMsgToTxBuffer(NODE1, &TxHeader, &TxData[data_cnt],FDCAN_TX_BUFFER0);
            FDCAN_EnableTxBufferRequest(NODE1,FDCAN_TX_BUFFER0);

3. 配置接收 FIFO 水线与中断线。 节点 2 把 FIFO1 水线设为 2,并把 RX FIFO1 水线中断挂到中断线 1。

src/main.csrc/main.c · Node2_Config
    FDCAN_ConfigFifoWatermark(NODE2,FDCAN_RX_FIFO1,2);
    FDCAN_ConfigIntLine(NODE2,FDCAN_FLAG_RX_FIFO1_WATERMARK,FDCAN_INTERRUPT_LINE1);
    FDCAN_ActivateInt(NODE2,FDCAN_FLAG_RX_FIFO1_WATERMARK,0);

4. 两个中断服务程序分别置标志。 发送完成与接收水线各自置标志,主循环再统一处理。

src/n32h49x_it.csrc/n32h49x_it.c · NODE1_IRQ_FUNCTION/NODE2_IRQ_FUNCTION
void NODE1_IRQ_FUNCTION(void)
{
    if(FDCAN_GetIntFlag(NODE1,FDCAN_FLAG_TX_COMPLETE) == SET)
    {
        CompFlag = 1;
        FDCAN_ClearFlag(NODE1,FDCAN_FLAG_TX_COMPLETE);
    }
}


void NODE2_IRQ_FUNCTION(void)
{
    if(FDCAN_GetIntFlag(NODE2,FDCAN_FLAG_RX_FIFO1_WATERMARK) == SET)
    {
        RxFlag = 1;
        FDCAN_ClearFlag(NODE2,FDCAN_FLAG_RX_FIFO1_WATERMARK);
    }
}

5. 主循环按标志取空接收 FIFO。 水线中断置 RxFlag 后,主循环把 FIFO 中的帧逐条取出并打印。

src/main.csrc/main.c · main
        while(FDCAN_GetRxFifoFillLevel(NODE2,FDCAN_RX_FIFO1) > 0)
        {
            buf_clear(RxBuf,TEST_DATA_FRAME_SIZE,0xEE);
            FDCAN_GetRxMsg(NODE2,FDCAN_RX_FIFO1,&RxHeader,RxBuf);

对应源码: src/main.c、src/n32h49x_it.c

5.12.3.3 FDCAN_Loopback 外部回环

工程目录: projects/n32h49x_EVAL/examples/FDCAN/FDCAN_Loopback/

重映射 SWJ 释放默认复用引脚→配置 FDCAN 时钟与 TX 引脚→以外部回环模式初始化节点→配置双 ID 与范围过滤器→按键轮流发送标准帧与扩展帧→轮询接收缓冲、FIFO 与发送事件

项目 源码解读
功能 演示 FDCAN 外部回环模式:单节点自行发送并接收;
一次串联发送缓冲、发送 FIFO、接收缓冲、接收 FIFO 与发送事件 FIFO 的基本功能。
源码组成 src/main.c:时钟、引脚、回环节点配置、发送函数与主循环;
src/n32h49x_it.c:内核异常处理程序;
inc/main.h:引脚、外设与时钟宏定义;
inc/n32h49x_it.h:异常处理程序声明;
readme.txt:功能与使用说明;
MDK-ARM/、EWARM/:Keil 与 IAR 工程。
关键配置 工作模式 FDCAN_MODE_EXTERNAL_LOOPBACK,帧格式 FDCAN_FRAME_FD_BRS,BRS 使能,20 字节数据;
单节点 FDCAN1,TX=PA4;
标准双 ID 过滤器(0x111、0x555)存入 RX BUFFER0,扩展范围过滤器(0x1111111~0x2222222)存入 RX FIFO1;
接收缓冲 1 个、发送缓冲 1 个、发送 FIFO 大小 2、发送事件 FIFO 大小 9;
内部时间戳 16 分频。
程序与数据路径 main 先使能 AFIO 时钟并重映射 SWJ 释放默认复用引脚,再调用 Key_Init、FDCAN_clock_src_config 与 Node1_port_config;
Node1_Config 配置回环模式与过滤器并调用 FDCAN_Start;
按键达到去抖计数后调用 Node1_SendMsg,按 send_cnt 轮流发送标准帧与两个扩展帧;
主循环轮询 RX BUFFER0、RX FIFO1 与发送事件 FIFO 并打印。
主要 API FDCAN_Init、FDCAN_ConfigFilter、FDCAN_ConfigGlobalFilter、FDCAN_Start、FDCAN_AddMsgToTxBuffer、FDCAN_EnableTxBufferRequest、FDCAN_AddMsgToTxFifoQ、FDCAN_GetRxMsg、FDCAN_GetTxEvent
验证方法 复位后串口打印回环示例信息;
每次按键轮流发送标准帧 ID=0x111、扩展帧 ID=0x1111112 与 ID=0x2222222;
轮询打印 RX BUFFER0、RX FIFO1 的接收数据与发送事件信息。
使用提示 外部回环模式忽略 ACK 错误,无需外部收发器;
发送方 ID=0x1111112 落在扩展范围过滤器 0x1111111~0x2222222 内,可被自行接收;
使用前需用 SWJ 重映射把默认 JTAG 复用引脚释放为 GPIO;
开发环境为 N32H497ZGL7_EVB V1.0 上的 KEIL MDK-ARM V5.34 或 IAR EWARM 8.50.1。
核心代码解读与移植

示例在单节点上开启外部回环,把发送路径的三条入口与接收路径的两条入口一次串起来。

数据路径: main(SWJ 重映射 -> Key_Init -> FDCAN_clock_src_config -> Node1_port_config -> Node1_Config) -> Node1_SendMsg -> 主循环轮询 RX BUFFER0/RX FIFO1/TxEvent

1. 释放默认复用引脚。 main 先使能 AFIO 时钟,并把 SWJ 重映射为 SWD,以便把默认 JTAG 复用引脚释放为 GPIO。

src/main.csrc/main.c · main
    /* PB4 default used of JTAG port, must be remap as GPIO */
    RCC_EnableAPB2PeriphClk(RCC_APB2_PERIPHEN_AFIO,ENABLE);
    GPIO_ConfigPinRemap(0,0,GPIO_RMP_SWJ_SWD);

2. 配置双 ID 与范围过滤器。 标准 ID 采用双 ID 过滤(0x111、0x555)存入接收缓冲,扩展 ID 采用范围过滤存入 RX FIFO1。

src/main.csrc/main.c · Node1_Config
    FilterParam.IdType          = FDCAN_STANDARD_ID;
    FilterParam.FilterIndex     = 0;
    FilterParam.FilterType      = FDCAN_FILTER_DUAL;
    FilterParam.FilterConfig    = FDCAN_FILTER_TO_RXBUFFER;
    FilterParam.FilterID1       = 0x111;
    FilterParam.FilterID2       = 0x555;
    FilterParam.RxBufferIndex   = 0;
    FDCAN_ConfigFilter(NODE1,&FilterParam);

3. 轮换发送三种帧。 Node1_SendMsg 用 send_cnt 在三帧间循环,标准帧走发送缓冲,两个扩展帧走发送 FIFO。

src/main.csrc/main.c · Node1_SendMsg
        FDCAN_AddMsgToTxBuffer(NODE1, &TxHeader, TxData0, FDCAN_TX_BUFFER0);
        FDCAN_EnableTxBufferRequest(NODE1,FDCAN_TX_BUFFER0);
        log_info("Standard frame send,ID=0x111");

4. 轮询接收缓冲与 FIFO。 主循环用 FDCAN_CheckNewRxBufMsg 检查接收缓冲,用 FDCAN_GetRxFifoFillLevel 检查 RX FIFO1。

src/main.csrc/main.c · main
        if(FDCAN_CheckNewRxBufMsg(NODE1,FDCAN_RX_BUFFER0) == SET)
        {
            FDCAN_GetRxMsg(NODE1,FDCAN_RX_BUFFER0,&RxHeader,RxBuf);
            log_info("\r\n Rx buffer0 recieved,RXTS=0x%08x:\r\n",RxHeader.RxTimestamp);

5. 轮询发送事件 FIFO。 每帧发送后从发送事件 FIFO 取出事件并打印各字段。

src/main.csrc/main.c · main
        if(FDCAN_GetTxEvent(NODE1,&TxEvent) == SUCCESS)
        {
            log_info("\r\n Get Tx event:\r\n");
            log_info("\t ESI:0x%08x\r\n",TxEvent.ErrorState);

对应源码: src/main.c

5.12.3.4 FDCAN_Polling 轮询接收

工程目录: projects/n32h49x_EVAL/examples/FDCAN/FDCAN_Polling/

配置 FDCAN 与按键中断→初始化节点 1、节点 2 并划分消息 RAM→配置扩展过滤器与发送缓冲→按键经 EXTI 触发节点 1 发送→节点 2 轮询接收 FIFO1 并打印

项目 源码解读
功能 演示 FDCAN 节点 2 以轮询方式接收节点 1 发送的数据帧;
节点 1 发送完成仍由中断处理,接收侧不依赖中断。
源码组成 src/main.c:时钟、引脚、节点配置与轮询主循环;
src/n32h49x_it.c:EXTI1 与节点 1 中断服务程序;
inc/main.h:引脚、EXTI、外设与中断号宏定义;
inc/n32h49x_it.h:中断服务程序声明;
readme.txt:功能与使用说明;
MDK-ARM/、EWARM/:Keil 与 IAR 工程。
关键配置 帧格式 FDCAN_FRAME_FD_BRS,BRS 使能,16 字节数据,两节点标称预分频=2、TSEG1=31、TSEG2=8;
节点 1 扩展过滤器 ID=0x0AAAAAAA 掩码=0x1FFFFFFF 存入 RX FIFO0,发送 FIFO 大小 6;
节点 2 扩展过滤器 ID=0x15555555 掩码=0x1FFFFFFF 存入 RX FIFO1,FIFO1 大小 6;
节点 1 TX BUFFER0 发送完成中断挂中断线 1;
按键 PA15 经 EXTI Line1 上升沿触发发送。
程序与数据路径 main 调用 Key_Int_Init 配置 PA15 与 EXTI1,再完成时钟、引脚与节点配置;
按键中断置 TxFlag,主循环据此用 FDCAN_AddMsgToTxFifoQ 把报文写入发送 FIFO/队列;
节点 2 侧不使用中断,主循环用 FDCAN_GetRxFifoFillLevel 判断 RX FIFO1 是否有数据;
取空后调用 FDCAN_GetRxMsg 逐帧读取并打印。
主要 API FDCAN_Init、FDCAN_ConfigFilter、FDCAN_AddMsgToTxFifoQ、FDCAN_GetRxFifoFillLevel、FDCAN_GetRxMsg、FDCAN_GetIntFlag
验证方法 复位后串口打印轮询接收示例信息;
按 PA15 后节点 1 发送一帧并触发发送完成中断打印;
节点 2 通过轮询 RX FIFO1 读取该帧并打印 ID、时间戳与 16 字节数据。
使用提示 连接跳帽 J8、J2、J15、J9,不要连接 J87、J89;
接收侧完全轮询,不使能 RX FIFO 中断;
先判断填充级别再读取,避免读空;
开发环境为 N32H497ZGL7_EVB V1.0 上的 KEIL MDK-ARM V5.34 或 IAR EWARM 8.50.1。
核心代码解读与移植

示例与中断收发共用同一套节点配置,区别在于接收侧完全依赖主循环轮询 FIFO。

数据路径: Key_Int_Init -> FDCAN_clock_src_config -> Node1_Config/Node2_Config -> FDCAN_Start -> EXTI1_IRQHandler -> 主循环轮询 RX FIFO1

1. 按键中断置发送标志。 PA15 的上升沿经 EXTI Line1 进入中断,只把 TxFlag 置 1。

src/n32h49x_it.csrc/n32h49x_it.c · EXTI1_IRQHandler
void EXTI1_IRQHandler(void)
{
    if(EXTI_GetStatusFlag(EXTI_LINE1) == SET)
    {
        TxFlag = 1;
    }

    EXTI_ClrITPendBit(EXTI_LINE1);
}

2. 按键标志触发发送。 主循环检测到 TxFlag 后把报文写入发送 FIFO/队列并清零标志,数据指针按帧循环。

src/main.csrc/main.c · main
        if(TxFlag)
        {
            FDCAN_AddMsgToTxFifoQ(NODE1, &TxHeader, &TxData[data_cnt]);

3. 轮询方式取空 RX FIFO1。 主循环以填充级别为条件判断后读取,不依赖中断。

src/main.csrc/main.c · main
        if(FDCAN_GetRxFifoFillLevel(NODE2,FDCAN_RX_FIFO1) > 0)
        {
            buf_clear(RxBuf,TEST_DATA_FRAME_SIZE,0xEE);
            FDCAN_GetRxMsg(NODE2,FDCAN_RX_FIFO1,&RxHeader,RxBuf);

4. 打印接收帧信息。 取出后打印帧 ID、接收时间戳与数据内容。

src/main.csrc/main.c · main
            log_info("\r\n NODE2 Rx FIFO1 recieved a frame\r\nID=0x%03x,RXTS=0x%04x,data:\r\n",RxHeader.ID,RxHeader.RxTimestamp);

对应源码: src/main.c、src/n32h49x_it.c

5.12.3.5 TTCAN_Level1 时间触发 Level1

工程目录: projects/n32h49x_EVAL/examples/FDCAN/TTCAN_Level1/

配置 FDCAN 时钟与两节点引脚→初始化节点并划分消息 RAM→配置参考报文与触发列表→启动 TTCAN 调度→主站刷新发送缓冲→从站轮询接收 FIFO 校验数据与状态

项目 源码解读
功能 演示 TTCAN Level1 严格时间触发模式的运行:节点 1 为时间主站并按矩阵周期发送;
节点 2 接收并逐字段校验收发一致性。
源码组成 src/main.c:时钟、引脚、TTCAN 节点配置与轮询主循环;
src/n32h49x_it.c:内核异常处理程序;
inc/main.h:引脚、外设与时钟宏定义;
inc/n32h49x_it.h:异常处理程序声明;
readme.txt:功能、TTCAN 矩阵与使用说明;
MDK-ARM/、EWARM/:Keil 与 IAR 工程。
关键配置 帧格式 FDCAN_FRAME_FD_BRS,BRS 使能,8 字节数据,仲裁域 500Kbps、数据域 1Mbps;
模式 FDCAN_TT_COMMUNICATION_LEVEL1,严格 TT 操作(GapEnable=FDCAN_STRICTLY_TT_OPERATION);
节点 1 为潜在主站、5 个发送缓冲,节点 2 为从站、2 个扩展过滤器(0x1AAAA754、0x1AAAA755)分入 RX FIFO0 与 FIFO1;
参考报文 ID=0x15555758,触发时间标记 5000、10000、20000、20200、50000、60000、65000。
程序与数据路径 main 依次调用 FDCAN_clock_src_config、节点端口与节点配置后进入轮询循环;
Node1_Config 在 FDCAN_Init 后填充 FDCAN_TT_InitType 并调用 FDCAN_TT_Init,再配置参考报文与 7 个触发;
主循环用 FDCAN_AddMsgToTxBuffer 与 FDCAN_EnableTxBufferRequest 刷新发送缓冲;
节点 2 轮询 RX FIFO0/FIFO1 取帧,并逐字段校验 ID、帧格式、数据长度与数据。
主要 API FDCAN_Init、FDCAN_TT_Init、FDCAN_TT_ConfigRefMsg、FDCAN_TT_ConfigTrigger、FDCAN_TT_GetStatus、FDCAN_TT_GetFlag、FDCAN_TT_ClearFlag、FDCAN_GetRxMsg
验证方法 复位后串口打印 “TTCAN Level1 Runing OK.”;
节点 2 从 RX FIFO0/FIFO1 取帧并校验 ID、类型、数据长度与数据一致;
若出现严重或调度错误则打印错误信息并停机。
使用提示 连接跳帽 J8、J2、J15、J9,不要连接 J87、J89;
N32H497ZGL7_EVB V1.0 板需焊接 R26、R41 两个 120Ω 电阻;
两节点必须使用相同的时间主站/从站角色与触发矩阵;
开发环境为 N32H497ZGL7_EVB V1.0 上的 KEIL MDK-ARM V5.34 或 IAR EWARM 8.50.1。
核心代码解读与移植

示例把 TTCAN 的时间参数、参考报文与触发列表分开配置,主站由周期驱动的缓冲刷新维持发送。

数据路径: FDCAN_clock_src_config -> Node1_port_config/Node2_port_config -> Node1_Config(FDCAN_Init->FDCAN_TT_Init->FDCAN_TT_ConfigRefMsg->FDCAN_TT_ConfigTrigger) -> FDCAN_Start -> 主循环刷新发送缓冲与轮询接收 FIFO

1. 配置 TTCAN 时间参数。 调用 FDCAN_TT_Init 前先填充 FDCAN_TT_InitType,选择 Level1、严格 TT 操作与潜在主站。

src/main.csrc/main.c · Node1_Config
    pTTParams.OperationMode = FDCAN_TT_COMMUNICATION_LEVEL1;
    pTTParams.GapEnable = FDCAN_STRICTLY_TT_OPERATION;
    pTTParams.TimeMaster = FDCAN_TT_POTENTIAL_MASTER;
    pTTParams.SyncDevLimit = 3;
    pTTParams.InitRefTrigOffset = 127;
    pTTParams.ExternalClkSync = FDCAN_TT_EXT_CLK_SYNC_ENABLE;

2. 配置参考报文。 参考报文使用扩展 ID 0x15555758。

src/main.csrc/main.c · Node1_Config
    FDCAN_TT_ConfigRefMsg(NODE1,FDCAN_EXTENDED_ID,0x15555758,FDCAN_TT_REF_MSG_NO_PAYLOAD);

3. 配置触发列表。 7 个触发元素分别指定时间标记、重复因子与触发类型,覆盖单次、连续、合并、仲裁、参考触发、监视触发与列表结束。

src/main.csrc/main.c · Node1_Config
    sTriggerConfig.TriggerIndex = 0;
    sTriggerConfig.TimeMark = 5000;
    sTriggerConfig.RepeatFactor = FDCAN_TT_REPEAT_EVERY_4TH_CYCLE;
    sTriggerConfig.StartCycle = 0;
    sTriggerConfig.TmEventInt = FDCAN_TT_TM_NO_INTERNAL_EVENT;
    sTriggerConfig.TmEventExt = FDCAN_TT_TM_NO_EXTERNAL_EVENT;
    sTriggerConfig.TriggerType = FDCAN_TT_TX_TRIGGER_SINGLE;
    sTriggerConfig.FilterType = FDCAN_EXTENDED_ID;
    sTriggerConfig.TxBufferIndex = FDCAN_TX_BUFFER1;
    sTriggerConfig.FilterIndex = 0;
    FDCAN_TT_ConfigTrigger(NODE1,&sTriggerConfig);

4. 主循环刷新发送缓冲。 初始化时把 4 帧写入发送缓冲并激活请求,之后在发送完成后再次补发。

src/main.csrc/main.c · main
        if((NODE1->TXBTO & 0x0000001A) == 0x0000001A)
        {
            FDCAN_EnableTxBufferRequest(NODE1, 0x0000001A);
        }

5. 从站校验接收数据。 节点 2 轮询 RX FIFO0,逐字段比对 ID、类型、数据长度、帧格式、BRS 与数据内容,任一不符即打印错误并停机。

src/main.csrc/main.c · main
        if((FDCAN_GetRxFifoFillLevel(NODE2, FDCAN_RX_FIFO0)!=0))
        {
            FDCAN_GetRxMsg(NODE2, FDCAN_RX_FIFO0, &RxHeader0, RxData0);
            if(RxHeader0.ID!=0x1AAAA754)
            {
                printf("Id type error(filter 0).\r\n");
                while(1);
            }

对应源码: src/main.c

5.12.3.6 TTCAN_Level2 时间触发 Level2

工程目录: projects/n32h49x_EVAL/examples/FDCAN/TTCAN_Level2/

配置 FDCAN 时钟与两节点引脚→初始化节点并划分消息 RAM→配置参考报文与触发列表→启动 TTCAN 调度→主站与从站刷新发送缓冲→从站轮询接收 FIFO 校验数据与状态

项目 源码解读
功能 演示 TTCAN Level2 严格时间触发模式的运行:节点 1 为时间主站,节点 2 除接收外还按触发发送一帧;
从站轮询接收并逐字段校验数据与错误级别。
源码组成 src/main.c:时钟、引脚、TTCAN 节点配置与轮询主循环;
src/n32h49x_it.c:内核异常处理程序;
inc/main.h:引脚、外设与时钟宏定义;
inc/n32h49x_it.h:异常处理程序声明;
readme.txt:功能、TTCAN 矩阵与使用说明;
MDK-ARM/、EWARM/:Keil 与 IAR 工程。
关键配置 帧格式 FDCAN_FRAME_FD_BRS,BRS 使能,8 字节数据,仲裁域 500Kbps、数据域 1Mbps;
模式 FDCAN_TT_COMMUNICATION_LEVEL2,严格 TT 操作(GapEnable=FDCAN_STRICTLY_TT_OPERATION);
节点 1 为潜在主站、5 个发送缓冲,节点 2 为从站、2 个发送缓冲与 2 个扩展过滤器(0x1AAAA754、0x1AAAA755);
参考报文 ID=0x15555758,节点 2 自身发送 ID=0x16666754(时间标记 30000)。
程序与数据路径 main 调用时钟、引脚与节点配置后,先为节点 1 写入 4 帧、为节点 2 写入 1 帧并激活发送请求;
Node2_Config、Node1_Config 内分别填充 FDCAN_TT_InitType 并调用 FDCAN_TT_Init,再配置参考报文与触发列表;
主循环按 TXBTO 状态补发节点 1、节点 2 的发送缓冲;
节点 2 用 FDCAN_TT_GetStatus 与 FDCAN_TT_GetFlag 检查错误,再轮询 RX FIFO0/FIFO1 校验数据。
主要 API FDCAN_Init、FDCAN_TT_Init、FDCAN_TT_ConfigTrigger、FDCAN_AddMsgToTxBuffer、FDCAN_TT_GetStatus、FDCAN_TT_GetFlag、FDCAN_TT_ClearFlag、FDCAN_GetRxMsg
验证方法 复位后串口打印 “TTCAN Level2 Runing OK.”;
节点 2 从 RX FIFO0/FIFO1 取帧并校验 ID、类型、数据长度与数据一致;
若错误级别非 0 或出现调度错误则打印错误信息并停机。
使用提示 连接跳帽 J8、J2、J15、J9,不要连接 J87、J89;
N32H497ZGL7_EVB V1.0 板需焊接 R26、R41 两个 120Ω 电阻;
Level2 支持全局时间与外部时钟同步,主从节点须使用一致配置;
开发环境为 N32H497ZGL7_EVB V1.0 上的 KEIL MDK-ARM V5.34 或 IAR EWARM 8.50.1。
核心代码解读与移植

示例在 Level2 下让从站也参与发送,并把错误级别检查与数据校验放进同一个轮询循环。

数据路径: FDCAN_clock_src_config -> Node1_port_config/Node2_port_config -> Node2_Config/Node1_Config(FDCAN_Init->FDCAN_TT_Init->FDCAN_TT_ConfigRefMsg->FDCAN_TT_ConfigTrigger) -> FDCAN_Start -> 主循环刷新缓冲与校验

1. 配置 Level2 时间参数。 调用 FDCAN_TT_Init 前填充 FDCAN_TT_InitType,从站选择 Level2 并指定为从站。

src/main.csrc/main.c · Node2_Config
    pTTParams.OperationMode = FDCAN_TT_COMMUNICATION_LEVEL2;
    pTTParams.GapEnable = FDCAN_STRICTLY_TT_OPERATION;
    pTTParams.TimeMaster = FDCAN_TT_SLAVE;
    pTTParams.SyncDevLimit = 7;
    pTTParams.InitRefTrigOffset = 127;

2. 配置参考报文与过滤。 两个过滤器分别把 0x1AAAA754、0x1AAAA755 送入 RX FIFO0 与 RX FIFO1,参考报文使用 0x15555758。

src/main.csrc/main.c · Node2_Config
    FilterParam.IdType          = FDCAN_EXTENDED_ID;
    FilterParam.FilterIndex     = 0;
    FilterParam.FilterType      = FDCAN_FILTER_MASK;
    FilterParam.FilterConfig    = FDCAN_FILTER_TO_RXFIFO0;
    FilterParam.FilterID1       = 0x1AAAA754;
    FilterParam.FilterID2       = 0x1FFFFFFF;
    FDCAN_ConfigFilter(NODE2,&FilterParam);

3. 初始化并激活发送缓冲。 main 先为节点 1 写入 4 帧、为节点 2 写入 1 帧,再一次性激活对应的发送请求。

src/main.csrc/main.c · main
    FDCAN_EnableTxBufferRequest(NODE1, 0x0000001E);

    TxHeader.ID = 0x16666754;
    FDCAN_AddMsgToTxBuffer(NODE2, &TxHeader, TxData, FDCAN_TX_BUFFER1);
    FDCAN_EnableTxBufferRequest(NODE2, FDCAN_TX_BUFFER1);

4. 主循环按状态补发。 主循环根据 TXBTO 判断上一轮是否发完,再重新激活发送请求。

src/main.csrc/main.c · main
        if((NODE2->TXBTO & 0x00000002) == 0x00000002)
        {
            FDCAN_EnableTxBufferRequest(NODE2, FDCAN_TX_BUFFER1);
        }

5. 检查错误级别并校验接收数据。 先用 FDCAN_TT_GetStatus 判断错误级别,再对 RX FIFO0 取出的帧逐字段校验。

src/main.csrc/main.c · main
        FDCAN_TT_GetStatus(NODE2,&TTStatus0);
        if(TTStatus0.ErrorLevel != 0)
        {
            if(TTStatus0.ErrorLevel == 3)
            {
                printf("Severity 3- Serious Error(filter 0).\r\n");
                while(1);
            }

对应源码: src/main.c

5.12.4 注意与排障

场景 检查与建议 来源
配置寄存器写访问 仅当 FDCAN_CCCR.INIT 与 FDCAN_CCCR.CCE 均为 1 时才能写配置寄存器;
CCE 只能在 INIT=1 时置位或清零,且 INIT 清零时自动清零;
FDCAN_TXBAR 与 FDCAN_TXBCR 则仅在 CCE=0 时可写。
用户手册
消息 RAM 分配 消息 RAM 仅支持按字(32 位)访问,不支持字节访问;
FDCAN 不检查消息 RAM 配置错误,配置各区段起始地址与元素数量时必须自行保证不越界、不重叠。
用户手册
位定时寄存器 FDCAN_DBTP 与 FDCAN_NBTP 仅当 CCCR.CCE 与 CCCR.INIT 均为 1 时可访问,且位定时寄存器仅在设备处于待机模式时可配置。 用户手册
收发器延迟补偿 TX 到 RX 测得的延迟与 FDCAN_TDCR.TDCO 之和必须小于数据域的 6 个位时间,且不大于 127 mtq;
超过 127 mtq 时按最大值 127 mtq 处理。
用户手册
受限工作模式 受限工作模式不能与环回模式(内部或外部)结合使用;
发送处理单元未及时读取消息 RAM 会自动进入该模式,软件必须复位 FDCAN_CCCR.ASM 才能退出。
用户手册
掉电(休眠)模式 CAN 总线受到严重干扰时可能检测不到总线空闲,可轮询 FDCAN_PSR.ACT 判断;
退出掉电模式时必须先开启模块时钟,再复位 FDCAN_CCCR.CSR。
用户手册
测试与回环模式 测试模式仅用于生产测试或自检,不建议用于实际应用;
内部回环模式需同时置位 FDCAN_TEST.LBCK 与 FDCAN_CCCR.MON。
用户手册
超时计数器 仅当 FDCAN_CCCR.INIT=0 时才能启动超时计数器;
使能 BRS 后仲裁域与数据域的计数器时钟不同。
用户手册
接收 FIFO 覆盖模式 覆盖模式下 FIFO 已满时应至少从获取索引加偏移量开始读取,避免读到不一致数据;
覆盖模式会覆盖并丢弃最早的消息。
用户手册
FIFO 确认索引 应用必须保证写入的 FIFO 确认索引有效,FDCAN 不检查写入值;
以任意顺序读取 FIFO 元素时不要写确认索引,否则会丢失较早的元素。
用户手册
发送 FIFO/队列写入 FIFO 或队列满(FDCAN_TXFQS.TFQF=1)时不应继续写入,请求发送的缓冲数量不应超过空闲发送缓冲数量;
发送取消功能不适用于发送 FIFO。
用户手册
TTCAN 应用看门狗 不应在 TTCAN 应用中禁用 TT 应用看门狗(FDCAN_TTOCF.AWL 置 0);
看门狗超时会使 FDCAN_TTOST.AWE 置 1,停止 TT 通信并进入总线监控模式。
用户手册
TTCAN 间隙控制 间隙控制仅在外部事件同步时间触发模式(FDCAN_TTOCF.GEN=1)下有效;
严格时间触发操作下 Next_is_Gap、事件触发引脚与 NIG、FGP、TMG 位均被忽略。
用户手册
TTCAN 致命错误恢复 节点进入致命错误(FDCAN_TTOST.EL=11)后,主机必须把 FDCAN_CCCR.INIT 置 1 才能脱离,复位 INIT 后节点重新启动 TTCAN 通信。 用户手册
国民技术开发套件文档中心

按芯片系列在线查阅国民技术 MCU 开发套件的芯片资料、SDK、驱动 API 与 Demo 示例说明。

© 2026 国民技术股份有限公司 版权所有粤ICP备11069485号本站使用不含 Cookie 的匿名访问统计