GD32A503 CAN只能收不能发

[复制链接]
2124|11
 楼主| hzh0301 发表于 2023-11-21 11:24 | 显示全部楼层 |阅读模式
can_struct_para_init(CAN_MDSC_STRUCT, &transmit_message);
   transmit_message.rtr = 0;
    transmit_message.ide = 0;
    transmit_message.code = CAN_MB_TX_STATUS_DATA;
    transmit_message.brs = 0;
    transmit_message.fdf = 0;
    transmit_message.prio = 0;
    transmit_message.data_bytes = 8;
    /* tx message content */
    transmit_message.data = (uint32_t *)(tx_data);
    transmit_message.id = 0x11;

    can_mailbox_config(CAN0, 2, &transmit_message);

可以帮忙看一下哪里出错了吗
中国龙芯CDX 发表于 2023-11-29 12:31 | 显示全部楼层
CAN接收需要进行相关设置的
xlhmx 发表于 2023-11-30 11:05 | 显示全部楼层
// 触发CAN消息发送
can_transmit(CAN0, 2);  // 假设使用CAN0,并且配置的邮箱号为2


确保你的CAN模块已经正确初始化,CAN消息的发送函数被正确调用,以及硬件连接和节点地址等设置是正确的。
xlhmx 发表于 2023-11-30 11:06 | 显示全部楼层
你的代码片段看起来主要是在配置CAN消息发送的一些参数,但并没有包含发送操作的具体代码。在你的代码中,你使用了can_mailbox_config函数配置了一个邮箱(mailbox)来发送CAN消息。

在调试CAN通信问题时,可以考虑以下几个方面:

硬件连接: 确保CAN线正确连接,电源供应正常,节点地址配置正确等。

初始化CAN模块: 在你的代码中没有展示CAN模块的初始化过程。确保你在使用CAN模块前正确进行了初始化。

错误处理: 在CAN通信中,可能会发生一些错误,如仲裁丢失、错误传输等。你可能需要在你的代码中添加错误处理的逻辑。

发送代码: 确保你在配置好邮箱后,有相应的代码触发CAN消息的发送。在你的代码片段中并没有展示这一部分的内容。
单片小菜 发表于 2023-11-30 11:22 | 显示全部楼层
CAN接收的时候,需要进行设置的。
cyckflove 发表于 2024-1-17 12:52 | 显示全部楼层
把CAN时钟源修改为 RCU_CANSRC_HXTAL , 然后调整SEG1/SEG2/PRESCALER参数(即波特率设置),然后就应该可以的。
elephant00 发表于 2024-1-30 10:42 | 显示全部楼层
检查CAN总线驱动是否正确配置
两只袜子 发表于 2024-1-30 10:42 | 显示全部楼层
CAN总线上的干扰过多
cr315 发表于 2024-1-30 10:42 | 显示全部楼层
检查CAN控制器或收发器是否正常工作
elephant00 发表于 2024-1-30 10:43 | 显示全部楼层
CAN总线线路是否正常,是否存在断路、短路、接触不良等问题。
发呆爱好者 发表于 2024-1-30 13:36 | 显示全部楼层
CAN的收发,需要单独设置的。
中国龙芯CDX 发表于 2024-1-30 22:01 | 显示全部楼层
应该是CAN设置的问题导致的
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

2

帖子

0

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