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

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

[复制链接]
  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

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

需要 16us时间?

到底做了些什么?

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

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

执行时间肯定不到 16US.

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

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

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

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-01-01 20:46:17

2

主题

29

回帖

214

积分

中级会员

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

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

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

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-01-01 20:46:17

2

主题

29

回帖

214

积分

中级会员

积分
214
发表于 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的数据
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-01-01 20:46:17

2

主题

29

回帖

214

积分

中级会员

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:6
  • 最近打卡:2025-04-17 09:50:59

17

主题

91

回帖

755

积分

高级会员

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

需要 16us时间?

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

使用道具 举报 送花

  • 打卡等级:偶尔看看I
  • 打卡总天数:10
  • 最近打卡:2025-01-01 20:46:17

2

主题

29

回帖

214

积分

中级会员

积分
214
发表于 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
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:312
  • 最近打卡:2025-03-11 13:20:13

54

主题

1327

回帖

5395

积分

荣誉版主

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

这个理解
回复 支持 反对

使用道具 举报 送花

2

主题

185

回帖

1048

积分

金牌会员

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

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

使用道具 举报 送花

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

本版积分规则

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

GMT+8, 2025-5-2 07:09 , Processed in 0.127188 second(s), 110 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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