找回密码
 立即注册
查看: 60|回复: 17

CAN接收问题求助

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:22:04
已绑定手机

1

主题

12

回帖

35

积分

新手上路

积分
35
发表于 昨天 11:32 | 显示全部楼层 |阅读模式
我使用的是STC32G8K64这款芯片,在can接收数据时,4位帧ID,从右到左顺序,只要第三位及以上有数,就无法接收到数据,如4位帧ID:00 01 00 00,只要这位有数就无法接收正确数据,00 00 xx xx, xx这两位是什么数都能正常接收数据。用例程STC32G-DEMO-CODE里的50-CAN总线扩展帧收发测试也是一样的问题。
2.jpg
1.jpg
截图202507301132062329.jpg
回复

使用道具 举报 送花

3

主题

247

回帖

-795

积分

等待验证会员

积分
-795
发表于 昨天 11:33 | 显示全部楼层
尊敬的用户,您好!

感谢您对我们产品的关注与使用。关于您在使用STC32G8K64芯片进行CAN通信时遇到的接收问题,我们非常重视,并已对相关情况进行分析。

根据您的描述,您在使用4位帧ID(即标准帧)时,当第三位及以后的位存在非零值时,无法正确接收数据;而前两位为0的情况下,能够正常接收。同时,您提到使用官方例程“50-CAN总线扩展帧收发测试”也出现相同问题。

经过初步排查和分析,可能的原因如下:

1. 帧ID配置错误  
   在CAN通信中,帧ID的配置方式对通信结果有直接影响。STC32G8K系列支持标准帧(11位)和扩展帧(29位),但部分型号可能默认使用标准帧模式。若您使用的是标准帧(11位),则帧ID应为11位长度。若误将4位作为帧ID输入,可能导致解析异常。

2. 滤波器配置不当  
   CAN控制器通常通过滤波器匹配接收到的帧ID。如果滤波器设置不正确或未正确启用,可能导致某些帧ID无法被识别。建议检查滤波器寄存器配置,确保其与目标帧ID匹配。

3. 帧ID位序问题  
   STC32G系列的CAN控制器在处理帧ID时,可能存在位序(高位优先或低位优先)的问题。例如,若您将帧ID按从右到左的方式写入寄存器,而控制器实际按照从左到右的方式解析,可能导致帧ID错位,从而导致无法正确接收。

4. 中断或接收缓冲区处理问题  
   若未正确配置接收中断或未及时读取接收缓冲区,可能导致数据丢失或覆盖。建议检查接收中断服务程序是否正确实现,以及接收缓冲区是否被正确读取。

5. 硬件连接或波特率设置问题  
   请确认CAN总线的物理层连接是否稳定,包括终端电阻、线路阻抗等。同时,检查波特率设置是否与主控设备一致,避免因通信速率不匹配导致数据丢失。

建议您采取以下步骤进行排查:
检查CAN控制器的工作模式(标准帧/扩展帧)是否与实际应用一致;
确认帧ID的位序是否符合控制器要求;
验证滤波器配置是否正确;
检查接收中断和缓冲区处理逻辑;
使用示波器或CAN分析仪观察实际通信波形,确认数据是否正常发送和接收。

如您仍无法解决问题,欢迎提供更详细的代码片段、配置寄存器截图或通信抓包数据,我们将进一步协助您定位问题。

感谢您的理解与支持!如需进一步帮助,请随时联系我们的技术支持团队。

祝工作顺利!

[本文内容由国芯人工智能辅助生成,仅供参考]
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:22:04
已绑定手机

1

主题

12

回帖

35

积分

新手上路

积分
35
发表于 昨天 11:35 | 显示全部楼层
我使用的是扩展帧
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:532
  • 最近打卡:2025-07-31 14:15:17
已绑定手机
已实名认证

116

主题

2499

回帖

6450

积分

版主

积分
6450
发表于 昨天 12:41 | 显示全部楼层
你底下的id格式使用的是左对齐,有可能是这个问题?
可以使用官方的can收发工具试试,can部分都在哪个工具上测试过的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:22:04
已绑定手机

1

主题

12

回帖

35

积分

新手上路

积分
35
发表于 昨天 13:53 | 显示全部楼层
你好,使用的是
截图202507301353309914.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:22:04
已绑定手机

1

主题

12

回帖

35

积分

新手上路

积分
35
发表于 昨天 14:07 | 显示全部楼层
程序是咱们官方的例程STC32G-DEMO-CODE,中的“50-CAN总线扩展帧收发测试”。帧ID 00 00 00 00时,是下图中的0-3条,发送一个就立刻转发一条。当帧ID为 00 01 00 00时,4-7条只发出了,就收不到转发的了。
2.png
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:479
  • 最近打卡:2025-07-31 08:56:35
已绑定手机

44

主题

2129

回帖

7413

积分

论坛元老

积分
7413
发表于 昨天 14:17 | 显示全部楼层
你的上位机软件是不是设置了CAN ID过滤?
用例程STC32G-DEMO-CODE里的50-CAN总线扩展帧收发测试是可以正常收发的:
截图202507301416449561.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:22:04
已绑定手机

1

主题

12

回帖

35

积分

新手上路

积分
35
发表于 昨天 14:26 | 显示全部楼层
没设置ID过滤。那我这同样是例程的程序,为啥不行呢?
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:22:04
已绑定手机

1

主题

12

回帖

35

积分

新手上路

积分
35
发表于 昨天 14:30 | 显示全部楼层
情况是这样子。我参照咱们的例程做的自己的程序。是实际两个产品间的测试,测试时时候发现收不到对方传来的CAN数据,发现是ID这块有数据造成的,我想着是不是我的程序有问题。于是用例程试,情况试一样的
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:2
  • 最近打卡:2025-07-31 09:22:04
已绑定手机

1

主题

12

回帖

35

积分

新手上路

积分
35
发表于 昨天 14:36 | 显示全部楼层
实际的现有产品给我发过来一包数据是 :4位帧ID:00 02 80 00  , 8位数据 :06 00 00 00 00 00 00 00,我收不到需要的06这个字节。而4位帧ID改成 00 00 80 00,我就能收到后面的8位数据中的06。所以我就用例程测试,结果也是这样
回复 支持 反对

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-7-31 23:06 , Processed in 0.128075 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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