[研电赛技术支持] GD32f470 CAN 驱动库有bug

[复制链接]
1419|1
 楼主| caizhiwei 发表于 2023-6-21 11:16 | 显示全部楼层 |阅读模式


问题是这样的,CAN外设采用多GIPO或模式初始化GPIO,导致can数据无法发送,无波形输出:

代码如下:
  1.    /* configure CAN0 GPIO, CAN0_TX(PD1) and CAN0_RX(PD0) */
  2.                         gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1);
  3.                         gpio_mode_set(GPIOI, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_0 | GPIO_PIN_1);                               
  4.                         gpio_af_set(GPIOD, GPIO_AF_9, GPIO_PIN_0 | GPIO_PIN_1);


修改为 一下代码就能正常了:

  1. gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);
  2.                         gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);
  3.                         gpio_af_set(GPIOD, GPIO_AF_9, GPIO_PIN_1);
  4.                
  5.                         gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
  6.                         gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_0);
  7.                         gpio_af_set(GPIOD, GPIO_AF_9, GPIO_PIN_0);
6440464926b8a2479e.png

再看看UART外设的代码,也用了这种模式,测试也是OK的。

5882964926af915fb2.png

不知道什么原因,查看入口参数和底层库的实现,确实支持或模式的,

还**GD原厂能否解答一下?


Qi18226636631 发表于 2023-6-22 01:25 | 显示全部楼层
/* configure CAN0 GPIO, CAN0_TX(PD1) and CAN0_RX(PD0) */

                        gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0 | GPIO_PIN_1);

                        gpio_mode_set(GPIOI, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_0 | GPIO_PIN_1);                                

                        gpio_af_set(GPIOD, GPIO_AF_9, GPIO_PIN_0 | GPIO_PIN_1);
你这引脚配错了吧, gpio_mode_set这里配成了PI0和PI1引脚上了。应该是配成GPIOD
您需要登录后才可以回帖 登录 | 注册

本版积分规则

100

主题

856

帖子

16

粉丝
快速回复 在线客服 返回列表 返回顶部