硬汉嵌入式论坛

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

[技术讨论] GD32 CAN

[复制链接]

0

主题

2

回帖

2

积分

新手上路

积分
2
发表于 2025-10-16 23:46:02 | 显示全部楼层 |阅读模式
各位大佬,求助个问题

GD32F427 CAN在初始化完之后,等待退出初始化模式超时

    can_deinit(dev->base);

    rcu_periph_clock_enable(RCU_CAN0);
    can_struct_para_init(CAN_INIT_STRUCT, &can_parameter);
    can_parameter.auto_bus_off_recovery = ENABLE;
    can_parameter.auto_retrans = ENABLE;
    can_parameter.working_mode = CAN_NORMAL_MODE;

    can_parameter.resync_jump_width = CAN_BT_SJW_1TQ;
    can_parameter.time_segment_1 = CAN_BT_BS1_7TQ;
    can_parameter.time_segment_2 = CAN_BT_BS2_2TQ;
    /* baudrate 1Mbps */
    can_parameter.prescaler = 5;

    can_init(dev->base, &can_parameter);


can_init是GD官方HAL库里的函数,里面在配置完CAN之后就等待退出初始化模式,但超时了

奇怪的是,如果CAN使用LOOPBACK回环模式,就没问题,CAN自己能收到自己发的数据,外部的CAN盒也能收到数据
GPIO的复用在别的地方做了
求大佬指点



回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 2025-10-17 09:26:22 | 显示全部楼层
在STM32上遇到过类似问题,看看是不是和我这个差不多

STM32F4使用HAL库双CAN通信出现错误Wait initialisation acknowledge解决办法
https://forum.anfulai.cn/forum.p ... 1521&fromuid=58
(出处: 硬汉嵌入式论坛)
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2025-10-17 22:23:18 | 显示全部楼层
eric2013 发表于 2025-10-17 09:26
在STM32上遇到过类似问题,看看是不是和我这个差不多

STM32F4使用HAL库双CAN通信出现错误Wait initialis ...

试了一下,也不太行,这边CAN IO初始化也在前面,顺便把CAN1的IO也初始化了一下,仍然不能退出初始化模式
回复

使用道具 举报

0

主题

2

回帖

2

积分

新手上路

积分
2
 楼主| 发表于 2025-12-26 15:28:14 | 显示全部楼层
结一下帖吧。。。
后续测试了很多次,如果将其他能够用于CAN的IO复用成CAN,就可以初始化成功,能退出初始化模式,就这两个IO不行
猜测是CAN控制器检测不到连续的显性位导致的,后来问了硬件,这个版本换了CAN的差分芯片。。。
不管了,让硬件查了,反正驱动没啥问题,一天天的净挖坑
回复

使用道具 举报

1万

主题

7万

回帖

12万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
120427
QQ
发表于 2025-12-27 10:53:41 | 显示全部楼层
monody 发表于 2025-12-26 15:28
结一下帖吧。。。
后续测试了很多次,如果将其他能够用于CAN的IO复用成CAN,就可以初始化成功,能退出初始 ...

谢谢分享最终解决办法。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2026-1-9 17:34 , Processed in 0.043608 second(s), 25 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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