硬汉嵌入式论坛

 找回密码
 立即注册
查看: 1805|回复: 12
收起左侧

[CAN/FDCAN] FDCAN1发送几次后发送fifo满,也进发送完成中断了,发送频率1000hz

[复制链接]

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2024-11-23 21:33:49 | 显示全部楼层 |阅读模式

这是发送函数






回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-11-23 21:34:30 | 显示全部楼层
FDCAN_TxHeaderTypeDef pTxHeader;
    pTxHeader.Identifier=ID;
    pTxHeader.IdType=FDCAN_STANDARD_ID;
    pTxHeader.TxFrameType=FDCAN_DATA_FRAME;
       
        if(Length<=8)
                pTxHeader.DataLength = Length;
        if(Length==12)
                pTxHeader.DataLength = FDCAN_DLC_BYTES_12;
        if(Length==16)
                pTxHeader.DataLength = FDCAN_DLC_BYTES_16;
        if(Length==20)
                pTxHeader.DataLength = FDCAN_DLC_BYTES_20;
        if(Length==24)
                pTxHeader.DataLength = FDCAN_DLC_BYTES_24;
        if(Length==32)
                pTxHeader.DataLength = FDCAN_DLC_BYTES_32;
        if(Length==48)
                pTxHeader.DataLength = FDCAN_DLC_BYTES_48;
        if(Length==64)
                pTxHeader.DataLength = FDCAN_DLC_BYTES_64;
       
    pTxHeader.ErrorStateIndicator=FDCAN_ESI_ACTIVE;
    pTxHeader.BitRateSwitch=FDCAN_BRS_ON;
    pTxHeader.FDFormat=FDCAN_FD_CAN;
    pTxHeader.TxEventFifoControl=FDCAN_NO_TX_EVENTS;
    pTxHeader.MessageMarker=0;

        return HAL_FDCAN_AddMessageToTxFifoQ(hcan, &pTxHeader, Data);
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-11-23 21:34:46 | 显示全部楼层
好像不能用图片 重新发一遍
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-11-24 10:03:04 | 显示全部楼层
Monika 发表于 2024-11-23 21:34
FDCAN_TxHeaderTypeDef pTxHeader;
    pTxHeader.Identifier=ID;
    pTxHeader.IdType=FDCAN_STANDARD ...


1、FIFO大小设置的多少,可以考虑把FIFO发送空中断打开,保证有空间了再发送新的。
2、论坛bug不支持图片复制粘贴
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=126432
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-11-24 16:32:22 | 显示全部楼层
eric2013 发表于 2024-11-24 10:03
1、FIFO大小设置的多少,可以考虑把FIFO发送空中断打开,保证有空间了再发送新的。
2、论坛bug不支持 ...

fifo大小是8,但是之前改过32还是爆,应该不是大小的问题
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-11-24 16:47:20 | 显示全部楼层
Monika 发表于 2024-11-24 16:32
fifo大小是8,但是之前改过32还是爆,应该不是大小的问题

把发送空中断打开,等到标志了再发送新的,根据你的描述,我觉得你那边应该是什么都没有判断,定时1KHz发送的。

发送前至少判断下FIFO Level也行,至少要保证有空间才可以发。
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-11-26 19:45:22 | 显示全部楼层
eric2013 发表于 2024-11-24 16:47
把发送空中断打开,等到标志了再发送新的,根据你的描述,我觉得你那边应该是什么都没有判断,定时1KHz发 ...

有FIFO判断errorcode不会没问题,但是会直接进硬件错误中断,这也是发送频率过高的原因吗
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-11-26 19:51:54 | 显示全部楼层
eric2013 发表于 2024-11-24 16:47
把发送空中断打开,等到标志了再发送新的,根据你的描述,我觉得你那边应该是什么都没有判断,定时1KHz发 ...

我试了一下50hz也还是不行
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-11-27 08:21:53 | 显示全部楼层
Monika 发表于 2024-11-26 19:51
我试了一下50hz也还是不行

那里的程序实现有问题了,发完成些的代码截图看看
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-11-28 18:17:18 | 显示全部楼层
eric2013 发表于 2024-11-27 08:21
那里的程序实现有问题了,发完成些的代码截图看看

找到问题了 是MPU的事
回复

使用道具 举报

9

主题

81

回帖

108

积分

初级会员

积分
108
发表于 2024-11-29 10:23:28 | 显示全部楼层
Monika 发表于 2024-11-28 18:17
找到问题了 是MPU的事

请问怎么解决的呢, ,MPU配置成写穿了?
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
 楼主| 发表于 2024-12-30 21:54:23 | 显示全部楼层
让我看看各位 发表于 2024-11-29 10:23
请问怎么解决的呢, ,MPU配置成写穿了?

看了一篇开源的fdcan配置经典can的文章 说是不建议配置MPU和cache,容易出问题,但是具体什么原因我还不清楚
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117530
QQ
发表于 2024-12-31 06:40:22 | 显示全部楼层
Monika 发表于 2024-12-30 21:54
看了一篇开源的fdcan配置经典can的文章 说是不建议配置MPU和cache,容易出问题,但是具体什么原因我还不 ...

应该不是MPU Cache问题,Cache主要影响多主控操作时的数据一致性问题。FDCAN我们主要是CPU在访问控制。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-13 06:13 , Processed in 0.073558 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表