注册会员
签到天数: 1 天
[LV.1]初来乍到
50
0
3
IP:广东省珠海市 电信
收藏0回复 显示全部楼层 举报
该用户从未签到
问题1. GD32的FDCAN IP,是不是没有自动重发的机制?就是仲裁失败自动重发,ST的FDCAN有自动重发。
根据我搜索到的信息,GD32的FDCAN IP是有自动重发的机制的,但是可以通过配置是否使用该功能。在can_parameter_struct结构体中,有一个auto_retrans成员,用于配置是否使用自动重传功能(ENABLE / DISABLE),使用自动重传功能时,会一直发送报文直到成功为止,否则只会发送一次报文。这个功能和ST的FDCAN是类似的。
问题2. 假设CAN总线上负载率为100% 也就是说其他节点在狂发数据,比如其他节点发送的ID是100,那么现在GD32配置成禁止自动重发(假设问题1答案为 有自动重发机制)。发一帧报文,ID=7ff,那么应该会仲裁失败。发不出去。请问 此时GD32是不是:进入发送中断,然后读某个寄存器位得知,是仲裁失败。 但是我经过查看CANFD寄存器,并没有仲裁丢失的相关位,只有什么位填充错误,CRC错误等报告。这岂不是一大遗憾?
我没有找到关于GD32的FDCAN IP如何检测仲裁失败的具体信息,但是我猜测可能有以下几种方法:
我不确定这些方法是否有效,您可以自己尝试一下。如果您有更好的方法,欢迎分享。
回复 显示全部楼层 举报
签到天数: 3 天
[LV.2]偶尔看看I
关于CANFD寄存器中没有仲裁丢失的相关位,可能是因为CANFD寄存器是CAN Flexible Data Rate(CAN-FD)协议中的寄存器,与标准CAN协议略有不同。建议根据GD32F4xx/F1x0/F3xx/F0x0的数据手册中关于CAN和CAN-FD协议的描述,了解更多相关信息。
发表回复
手机版|小黑屋|国产电子社区 ( 沪ICP备2023018578号-1| 苏公网安备 32011102010465号 )|网站地图
苏公网安备 32011102010465号
GMT+8, 2025-2-13 06:52 , Processed in 0.060380 second(s), 25 queries , MemCached On.
Powered by Discuz! X3.5
© 2001-2023 Discuz! Team.