21ic问答首页 - GD32F303CCT6只能发送NMEA2000消息但是接收不到NMEA2000消息
GD32F303CCT6只能发送NMEA2000消息但是接收不到NMEA2000消息
我移植了一个官方写的STM32F429的NMEA2000工程代码到GD32F303CCT6上,但是移植完了之后发现单片机只能发送消息不能接收消息,对着官方代码逻辑看了几遍也是一样的,真是没辙了。
1. 在加NMEA2000协议文件上去之前我已经做了普通CAN测试,收发都没有问题
2. 电脑发送的NMEA2000消息我用CAN分析仪试了,总线信号是没问题的
3. 我在debug中发现是 if (can_receive_message_length_get(CAN0, CAN_FIFO0) > 0) 这个判断一直不成立导致后面所有的逻辑代码全进不去,但是波特率250k,滤波也是配置全接收。
1. 在加NMEA2000协议文件上去之前我已经做了普通CAN测试,收发都没有问题
2. 电脑发送的NMEA2000消息我用CAN分析仪试了,总线信号是没问题的
3. 我在debug中发现是 if (can_receive_message_length_get(CAN0, CAN_FIFO0) > 0) 这个判断一直不成立导致后面所有的逻辑代码全进不去,但是波特率250k,滤波也是配置全接收。

问答
赞0
评论
2026-04-21
软件到收发器这边,我用示波器量了CAH_H和CAN_L引脚,只会隔一会儿就跳出几个方波然后消失
赞0
评论
2026-04-20
用示波器看CAN收发器芯片引脚波形,TX引脚有正常波形,RX引脚没有波形,CAN_H和CAN_L引脚的波形一会有一会没有,很微弱
我是通过轮询的方式来判断里面有没有数据,然后接收,这个函数 if (can_receive_message_length_get(CAN0, CAN_FIFO0) > 0) 进不去。我用的CAN底层配置是我前面测试没问题的CAN2.0B代码,
赞0
评论
2026-04-20
单片机发送过去的数据在软件上显示是没有问题的,但是软件发送过来的数据单片机接收不到,我拿CAN分析仪看了,总线发来的数据没有问题
您需要登录后才可以回复 登录 | 注册