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 参考
以下 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 时钟源。
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 是否越界。
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。
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 后清零计数并翻转接收方式。
if(key_cnt >= (SystemCoreClock/1000))
{
key_cnt = 0;
IntFlag++;
5. 中断服务程序置标志。 节点中断只做标志判断与清除,实际打印在主循环完成。
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。
void EXTI1_IRQHandler(void)
{
if(EXTI_GetStatusFlag(EXTI_LINE1) == SET)
{
TxFlag = 1;
}
EXTI_ClrITPendBit(EXTI_LINE1);
}
2. 发送缓冲写入并请求发送。 主循环检测到 TxFlag 后写入 TX BUFFER0 的 16 字节数据并激活发送请求,数据指针按帧循环。
FDCAN_AddMsgToTxBuffer(NODE1, &TxHeader, &TxData[data_cnt],FDCAN_TX_BUFFER0);
FDCAN_EnableTxBufferRequest(NODE1,FDCAN_TX_BUFFER0);
3. 配置接收 FIFO 水线与中断线。 节点 2 把 FIFO1 水线设为 2,并把 RX FIFO1 水线中断挂到中断线 1。
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. 两个中断服务程序分别置标志。 发送完成与接收水线各自置标志,主循环再统一处理。
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 中的帧逐条取出并打印。
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。
/* 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。
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。
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。
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 取出事件并打印各字段。
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。
void EXTI1_IRQHandler(void)
{
if(EXTI_GetStatusFlag(EXTI_LINE1) == SET)
{
TxFlag = 1;
}
EXTI_ClrITPendBit(EXTI_LINE1);
}
2. 按键标志触发发送。 主循环检测到 TxFlag 后把报文写入发送 FIFO/队列并清零标志,数据指针按帧循环。
if(TxFlag)
{
FDCAN_AddMsgToTxFifoQ(NODE1, &TxHeader, &TxData[data_cnt]);
3. 轮询方式取空 RX FIFO1。 主循环以填充级别为条件判断后读取,不依赖中断。
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、接收时间戳与数据内容。
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 操作与潜在主站。
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。
FDCAN_TT_ConfigRefMsg(NODE1,FDCAN_EXTENDED_ID,0x15555758,FDCAN_TT_REF_MSG_NO_PAYLOAD);
3. 配置触发列表。 7 个触发元素分别指定时间标记、重复因子与触发类型,覆盖单次、连续、合并、仲裁、参考触发、监视触发与列表结束。
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 帧写入发送缓冲并激活请求,之后在发送完成后再次补发。
if((NODE1->TXBTO & 0x0000001A) == 0x0000001A)
{
FDCAN_EnableTxBufferRequest(NODE1, 0x0000001A);
}
5. 从站校验接收数据。 节点 2 轮询 RX FIFO0,逐字段比对 ID、类型、数据长度、帧格式、BRS 与数据内容,任一不符即打印错误并停机。
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 并指定为从站。
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。
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 帧,再一次性激活对应的发送请求。
FDCAN_EnableTxBufferRequest(NODE1, 0x0000001E);
TxHeader.ID = 0x16666754;
FDCAN_AddMsgToTxBuffer(NODE2, &TxHeader, TxData, FDCAN_TX_BUFFER1);
FDCAN_EnableTxBufferRequest(NODE2, FDCAN_TX_BUFFER1);
4. 主循环按状态补发。 主循环根据 TXBTO 判断上一轮是否发完,再重新激活发送请求。
if((NODE2->TXBTO & 0x00000002) == 0x00000002)
{
FDCAN_EnableTxBufferRequest(NODE2, FDCAN_TX_BUFFER1);
}
5. 检查错误级别并校验接收数据。 先用 FDCAN_TT_GetStatus 判断错误级别,再对 RX FIFO0 取出的帧逐字段校验。
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 通信。 | 用户手册 |