硬汉嵌入式论坛

 找回密码
 立即注册
搜索
查看: 818|回复: 9
收起左侧

[CAN助手] H7-TOOL的CAN/CANFD助手无痛使用体验优化,每帧1-64字节数据无需指定位宽,自动匹配DLC(2026-08-24)

[复制链接]

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124403
QQ
发表于 2026-8-24 13:40:19 | 显示全部楼层 |阅读模式



上周完成了两项优化

H7-TOOL的CANFD助手升级,也增加无痛实时CSV格式日志记录功能,至此UART, RTT和CAN全部完日志改造(2026-08-21)
https://forum.anfulai.cn/forum.php?mod=viewthread&tid=132139


这几天通过优化,再带来两个重要的改进。
1、帧字节数据随意设置,自动匹配DLC值

CANFD支持的帧字节是这样的,如果我们发送9,10,11,63等这种中间值字节数非常不方便,需要手动补0或者其它值



本次升级带来特别优化,上位机的发送自动匹配最近的DLC值,1-64字节数据随意发送,用户不用管DLC。

123.png

接收端接收到的都是自动匹配好的DLC
1234.png

不再需要大家再繁琐的自动这里

1234.png

2、这里的两个地方的发送,不再使用LUA小程序,直接做成数据的传输,大大提升用户体验,并且底层了极致的速度优化。无论发送还是接收都做了极致的速度优化

234.png

快速的暂停启动

MDK调试4.gif

当然,需要实现复杂逻辑,这里LUA小程序可以方便实现

234.png


回复

使用道具 举报

2

主题

115

回帖

121

积分

初级会员

积分
121
发表于 2026-8-26 09:16:27 | 显示全部楼层
请问自动识别真实长度的原理是什么?只支持 canopen 协议?
回复

使用道具 举报

11

主题

136

回帖

169

积分

初级会员

积分
169
发表于 2026-8-26 19:32:08 | 显示全部楼层
dukelec 发表于 2026-8-26 09:16
请问自动识别真实长度的原理是什么?只支持 canopen 协议?

根据实际数据,然后根据上面的表取最近的值就行
回复

使用道具 举报

1

主题

19

回帖

22

积分

新手上路

积分
22
发表于 2026-8-26 21:25:03 | 显示全部楼层
什么时候发版呀硬汉哥
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124403
QQ
 楼主| 发表于 2026-8-27 14:42:42 | 显示全部楼层
Surfing 发表于 2026-8-26 21:25
什么时候发版呀硬汉哥

这几天就给需要用的发临时版用,正式版2.34还要过段时间,还有其它的功能要更新下。
回复

使用道具 举报

2

主题

115

回帖

121

积分

初级会员

积分
121
发表于 2026-8-30 00:25:24 | 显示全部楼层
本帖最后由 dukelec 于 2026-8-30 00:26 编辑
596142041 发表于 2026-8-26 19:32
根据实际数据,然后根据上面的表取最近的值就行


不明白,我的做法是协议里面定义一个 PAD_LEN 字段,指示数据尾部有多少字节的 PADDING 可以丢弃,这样接收到的数据就是有效的数据,不会包含结尾填充的垃圾数据

坛主的做法是垃圾数据也显示给用户?应该不会吧?

Screenshot_2026-08-30_00-25-46.png


Screenshot_2026-08-30_00-26-26.png

回复

使用道具 举报

1

主题

70

回帖

73

积分

初级会员

Link

积分
73
发表于 2026-8-30 12:43:54 | 显示全部楼层
dukelec 发表于 2026-8-30 00:25
不明白,我的做法是协议里面定义一个 PAD_LEN 字段,指示数据尾部有多少字节的 PADDING 可以丢弃,这样 ...

接收端显不显示无效数据,这不是和使用的上层协议有关吗  ,自动匹配DLC值的实现 肯定是根据实际数据去取表中最近的值 多余的填充无效数据,从can总线上来看 这些填充数据肯定能被接收显示
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2026-10-6 07:11:01 | 显示全部楼层
反馈一个 H7-TOOL CAN 助手在 CAN/CAN FD 混合总线下的问题:
当前上位机只能设置整个通道为经典 CAN、CAN FD 或 CAN FD 双波特率,报文记录中也只有 STD/EXT、DATA/RTR、长度和数据,没有每帧的 FDF、BRS 标志。因此在 CAN FD 通道中,如果同时存在:
- 经典 CAN:FDF=0
- CAN FD:FDF=1, BRS=0
- CAN FD 加速:FDF=1, BRS=1
上位机无法准确区分每帧的实际类型。尤其当数据长度不超过 8 字节时,仅根据长度无法判断经典 CAN 还是 CAN FD。

混合总线

混合总线

CAN FD 通道初始化只是启用 CAN FD 能力并配置仲裁域、数据域波特率,并不会限制所有报文必须使用同一种格式。经典 CAN、CAN FD 和 CAN FD+BRS 可以在同一总线上混合收发,具体类型由每帧报文头中的 FDF、BRS 决定。比如像ZCANPRO这样:

发送

发送

建议:
1. 接收数据和 PC 通信协议中增加每帧的 FDF、BRS 标志,直接取自 FDCAN_RxHeaderTypeDef。
2. 上位机报文列表增加 CAN、CAN FD、CAN FD+BRS 类型显示。
3. 发送窗口增加逐帧选择 CAN、CAN FD、CAN FD+BRS 的选项,并映射到发送头的 FDFormat 和 BitRateSwitch。
4. Lua/PC 端接口也增加对应的可选参数,同时兼容现有调用方式。
目前官方上位机发送窗口也没有混合发送这三种帧的选项,但从 STM32 FDCAN 硬件能力来说是支持的,不需要为每种帧重新初始化总线,只需要逐帧设置 FDF 和 BRS。
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
124403
QQ
 楼主| 发表于 2026-10-6 20:02:27 | 显示全部楼层
sendu2wfdx 发表于 2026-10-6 07:11
反馈一个 H7-TOOL CAN 助手在 CAN/CAN FD 混合总线下的问题:
当前上位机只能设置整个通道为经典 CAN、CAN ...

谢谢建议,可以做,不过这种得在同一个波特率下有意义,应用场景有限。

点评

是的,前提是仲裁段波特率一致。这种应用还是比较常见的,PCAN、Kvaser、CANable 2 等设备都支持逐帧选择。比如汽车 ECU 在编程或刷写阶段使用 CAN FD+BRS 提高传输速度,正常运行时仍发送经典 CAN 报文。  详情 回复 发表于 2026-10-6 22:05
回复

使用道具 举报

1

主题

5

回帖

8

积分

新手上路

积分
8
发表于 2026-10-6 22:05:37 | 显示全部楼层
eric2013 发表于 2026-10-6 20:02
谢谢建议,可以做,不过这种得在同一个波特率下有意义,应用场景有限。

是的,前提是仲裁段波特率一致。这种应用还是比较常见的,PCAN、Kvaser、CANable 2 等设备都支持逐帧选择。比如汽车 ECU 在编程或刷写阶段使用 CAN FD+BRS 提高传输速度,正常运行时仍发送经典 CAN 报文。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-10-22 23:50 , Processed in 0.478881 second(s), 28 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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