一:FDCAD 优势
FDCAN最核心的升级体现在两点:
更高的数据速率:传统CAN最高1Mbps,FDCAN在数据段最高可达8Mbps,适合传输大量数据。
更大的数据负载:传统CAN每帧最多8字节,FDCAN支持最多64字节的数据场。
二:配置与使用要点
硬件与时钟:除MCU外,需要外部CAN FD收发器(如MCP2562FD)。注意部分开发板的FDCAN引脚可能与USB等外设复用。
关键参数:需要分别配置标称速率(用于仲裁段,兼容传统CAN)和数据速率(用于数据段,可以更高)的采样点与分频系数。
消息RAM配置:这是FDCAN比较独特的配置。接收FIFO、发送缓冲区、过滤器的元素个数都在消息RAM中分配。
接收过滤器:FDCAN提供了独立的标准ID过滤器(最多128个)和扩展ID过滤器(最多64个)。可以灵活配置将特定ID的帧存入不同的Rx FIFO或直接拒绝,实现精准的消息过滤三:STM32 cube MX软件配置:
四:软件代码:
4.1 初始化代码添加如下代码
FDCAN_FilterTypeDef sFilterConfig;
sFilterConfig.IdType = FDCAN_STANDARD_ID;
sFilterConfig.FilterIndex = 0U;
sFilterConfig.FilterType = FDCAN_FILTER_DUAL;
sFilterConfig.FilterConfig = FDCAN_FILTER_TO_RXFIFO0;
sFilterConfig.FilterID1 = 0x444;
sFilterConfig.FilterID2 = 0x444; /* For acceptance, MessageID and FilterID1 must match exactly */
if (HAL_FDCAN_ConfigFilter(&hfdcan1, &sFilterConfig) != HAL_OK)
{
Error_Handler();
}
txHeader.Identifier = 0x444;
txHeader.IdType = FDCAN_STANDARD_ID;
txHeader.TxFrameType = FDCAN_DATA_FRAME;
txHeader.DataLength = FDCAN_DLC_BYTES_12;
txHeader.ErrorStateIndicator = FDCAN_ESI_ACTIVE;
txHeader.BitRateSwitch = FDCAN_BRS_ON;
txHeader.FDFormat = FDCAN_FD_CAN;
txHeader.TxEventFifoControl = FDCAN_STORE_TX_EVENTS;
txHeader.MessageMarker = 0x52U;
if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &txHeader, FdcanBuffer) != HAL_OK)
{
Error_Handler();
}
if (HAL_FDCAN_Start(&hfdcan1) != HAL_OK)
{
E4.2 测试程序如下:
void FdcanTest(void)
{
for(int i=0; i<64; i++)
FdcanBuffer[i] = i;
if (HAL_FDCAN_AddMessageToTxFifoQ(&hfdcan1, &txHeader, FdcanBuffer) != HAL_OK)
{
Error_Handler();
}
}
我要赚赏金
