打印
[研电赛技术支持]

GD32f470 CAN 驱动库有bug

[复制链接]
878|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主


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

代码如下:
   /* 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_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_1);
                        gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_1);
                        gpio_af_set(GPIOD, GPIO_AF_9, GPIO_PIN_1);
               
                        gpio_output_options_set(GPIOD, GPIO_OTYPE_PP, GPIO_OSPEED_50MHZ, GPIO_PIN_0);
                        gpio_mode_set(GPIOD, GPIO_MODE_AF, GPIO_PUPD_NONE, GPIO_PIN_0);
                        gpio_af_set(GPIOD, GPIO_AF_9, GPIO_PIN_0);


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



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

还**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

主题

857

帖子

14

粉丝