/* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_FIFO_FULL;return HAL_ERROR;}...
如果发送数据的速率高于CAN总线的处理能力,FIFO可能会快速填满并导致溢出。
if (hfdcan->State == HAL_FDCAN_STATE_BUSY) { /* Check that the Tx FIFO/Queue is not full */ if ((hfdcan->Instance->TXFQS & FDCAN_TXFQS_TFQF) != 0U) { /* Update error code */ hfdcan->ErrorCode |= HAL_FDCAN_ERROR_FIFO_FULL; return HAL_ERROR; } /// Skip } Ano...
MCU:H743野火挑战者前言H743具备两个接收FIFO,分别是FIFO 0和FIFO 1,功能相同;H743提供的是FDCAN,FDCAN扩展帧允许单个消息中发送64个数据字节,而CAN 2.0有效负载数据最多可以发送8个字节。当FDCAN接收到报文,经过过滤器过滤后,会将报文存储到FIFO或RX buffer中(可选,本文仅分析进入FIFO)。对于标准帧,H7提供了...
This parameter can be a value of @ref FDCAN_txFifoQueue_Mode */ 这里重点讲以下几点:1.CAN...
特别说明:如果不使用STM32CubeMX工具,可以跳过以下步骤,直接从1.2开始,把CANFD相关代码加入其他HAL工程即可。 1、配置时钟 我这里使用外部晶振时钟(HSE),8M晶振倍频到64M时钟。 2、配置引脚 选择自己实际使用的引脚作为CAN_TX和CAN_RX。 3、配置CAN参数
(9)可配置的发送事件FIFO。 (10)时钟校准单元。 (11)收发器延迟补偿。 下图说明了FDCAN框图。 通过这个框图要了解到以下信息: (1)CANFD1和CANFD2共用一个RAM空间。 (2)每个CANFD都有自己的内核。 (3)CAN内核实现协议控制和收发移位寄存器。 (4)Tx handler控制消息从CAN消息RAM到CAN内核。
can_set_filter(); /// 设置中断使能 ///< 断线自动恢复 默认功能 HAL_FDCAN_ActivateNotification(&NOR_CAN, FDCAN_IT_BUS_OFF | FDCAN_IT_RX_FIFO0_NEW_MESSAGE | FDCAN_IT_RX_FIFO0_FULL, 0); /// 启动 CAN HAL_FDCAN_Start(&NOR_CAN); ...
9、 带隔离功能的FDCAN芯片搜集: http://www.armbbs.cn/forum.php?mod=viewthread&tid=90420 10、 除了本章提供的基于ST HAL库实现的双FDCAN通信,再提供个基于CMSIS-Driver的: 基于STM32H7的CMSIS-Driver驱动实现双CAN FD和双经典CAN两种方式案例发布 ...
RxFifo0Callback(FDCAN_HandleTypeDef *hfdcan, uint32_t RxFifo0ITs) { if((RxFifo0ITs & FDCAN_IT_RX_FIFO0_NEW_MESSAGE) != RESET) { /* Retrieve Rx messages from RX FIFO0 */ if (HAL_FDCAN_GetRxMessage(hfdcan, FDCAN_RX_FIFO0, &RxHeader, RxData) != HAL_OK) { Error_Handl...