找回密码
 立即注册
楼主: 采***

STC32G的2组CAN模块的缓冲区读写不够快,后续CAN-FD新品建议优化提升

[复制链接]
  • TA的每日心情
    开心
    昨天 03:18
  • 签到天数: 137 天

    [LV.7]常住居民III

    37

    主题

    873

    回帖

    3992

    积分

    荣誉版主

    积分
    3992
    发表于 2024-4-25 07:06:20 | 显示全部楼层
    zhx 发表于 2024-4-24 17:25
    他这个问题,我也遇到过:
    接收1帧的时间是固定的,因为速率固定
    1.   CAN2接收到中断 --> CAN2接收到的帧 - ...

    我想不明白的是, 发送第1帧(+16us时间)

    需要 16us时间?

    到底做了些什么?

    单纯的装载最多 十几字节到缓冲(包括前几个字节命令地址的检查), 用不了 16us 吧?
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 03:18
  • 签到天数: 137 天

    [LV.7]常住居民III

    37

    主题

    873

    回帖

    3992

    积分

    荣誉版主

    积分
    3992
    发表于 2024-4-25 07:14:33 | 显示全部楼层
    zxcv1973 发表于 2024-4-24 15:55
    CAN写发送数据用C语言也能在4us以内(32MHz主频),还是不能用官方例程

    官方例程我看了, 标准帧 和 扩展帧 共用一个子函数, 执行时间略长, 粗步分析了一下汇编,

    执行时间肯定不到 16US.

    你说改写的C语言也能在4us以内(32MHz主频), 我相信没问题.

    如再优化一下, 执行时间可更短.
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 03:18
  • 签到天数: 137 天

    [LV.7]常住居民III

    37

    主题

    873

    回帖

    3992

    积分

    荣誉版主

    积分
    3992
    发表于 2024-4-25 07:18:53 | 显示全部楼层
    楼上哪位, 能否把 CAN 发送帧 示范程序, 上传?

    我很好奇, 这16us时间, 通过反汇编, 看看c251 到底干了些什么.
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    25

    回帖

    179

    积分

    注册会员

    积分
    179
     楼主| 发表于 2024-4-25 08:38:17 | 显示全部楼层
    LAOXU 发表于 2024-4-25 07:18
    楼上哪位, 能否把 CAN 发送帧 示范程序, 上传?

    我很好奇, 这16us时间, 通过反汇编, 看看c251 到底干了些什 ...

    兄弟,第三张图就是程序啊
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    25

    回帖

    179

    积分

    注册会员

    积分
    179
     楼主| 发表于 2024-4-25 09:18:23 | 显示全部楼层
    根据各位大佬的提示,我现在做了一下修改


    截图202404250904152337.jpg


    CKCON时钟设为0

    截图202404250905161296.jpg


    CAN中断里面啥都没做,就写BUF了

    这样子的写BUF时间是3.2us,帧间隔6.2us
    截图202404250910076476.jpg

    截图202404250910335342.jpg


    最后,得把发送端函数改成这样
    截图202404250915539029.jpg

    改成这样后写buf时间还是3.2us
    帧间隔还是6.2us
    截图202404250916506350.jpg


    截图202404250917081402.jpg


    那是解决了写BUF时间导致帧间隔过长的问题

    启动发送后再去修改TxBuffer的数据
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    25

    回帖

    179

    积分

    注册会员

    积分
    179
     楼主| 发表于 2024-4-25 09:22:29 | 显示全部楼层
    我觉得你们得给我发点积分给我这几天的付出
    1 喜欢他/她就送朵鲜花吧,赠人玫瑰,手有余香!
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    10

    主题

    39

    回帖

    380

    积分

    中级会员

    积分
    380
    发表于 2024-4-25 10:43:25 | 显示全部楼层
    LAOXU 发表于 2024-4-25 07:06
    我想不明白的是, 发送第1帧(+16us时间)

    需要 16us时间?

    我也不知道楼主在干啥,我只是解释一下他的意思
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    6 天前
  • 签到天数: 6 天

    [LV.2]偶尔看看I

    1

    主题

    25

    回帖

    179

    积分

    注册会员

    积分
    179
     楼主| 发表于 2024-4-25 10:57:21 来自手机 | 显示全部楼层
    zhx 发表于 2024-4-25 10:43
    我也不知道楼主在干啥,我只是解释一下他的意思

    等你做CAN发送就知道了,怎么把总线资源榨干,一个拓展帧是284us加上间隔6.2us,500K总线,满载情况下每秒可以发送3448帧8字节数量的拓展帧,
    按我之前那个帖子一楼那样发送,每秒就只能发3267帧

    点评

    这个理解  详情 回复 发表于 2024-4-25 11:13
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    开心
    昨天 03:18
  • 签到天数: 137 天

    [LV.7]常住居民III

    37

    主题

    873

    回帖

    3992

    积分

    荣誉版主

    积分
    3992
    发表于 2024-4-25 11:13:11 | 显示全部楼层
    采果农 发表于 2024-4-25 10:57
    等你做CAN发送就知道了,怎么把总线资源榨干,一个拓展帧是284us加上间隔6.2us,500K总线,满载情况下每 ...

    这个理解
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    1

    主题

    113

    回帖

    629

    积分

    高级会员

    积分
    629
    发表于 2024-4-25 11:13:53 | 显示全部楼层
    采果农 发表于 2024-4-25 09:18
    根据各位大佬的提示,我现在做了一下修改

    你这个WRITE_CAN是用的宏定义还是用的函数调用?
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

    QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

    GMT+8, 2024-5-4 13:38 , Processed in 0.069098 second(s), 66 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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