找回密码
 立即注册
查看: 229|回复: 19

CAN接收问题求助

[复制链接]
  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-01 09:49:55
已绑定手机

1

主题

14

回帖

43

积分

新手上路

积分
43
发表于 2025-7-30 11:32:18 | 显示全部楼层 |阅读模式
我使用的是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

主题

2031

回帖

910

积分

等待验证会员

积分
910
发表于 2025-7-30 11:33:00 | 显示全部楼层
尊敬的用户,您好!

感谢您对我们产品的关注与使用。关于您在使用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分析仪观察实际通信波形,确认数据是否正常发送和接收。

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

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

祝工作顺利!

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-01 09:49:55
已绑定手机

1

主题

14

回帖

43

积分

新手上路

积分
43
发表于 2025-7-30 11:35:28 | 显示全部楼层
我使用的是扩展帧
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:547
  • 最近打卡:2025-08-21 21:27:12
已绑定手机
已实名认证

116

主题

2712

回帖

6806

积分

版主

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-01 09:49:55
已绑定手机

1

主题

14

回帖

43

积分

新手上路

积分
43
发表于 2025-7-30 13:53:38 | 显示全部楼层
你好,使用的是
截图202507301353309914.jpg
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-01 09:49:55
已绑定手机

1

主题

14

回帖

43

积分

新手上路

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:498
  • 最近打卡:2025-08-23 08:57:24
已绑定手机

45

主题

2172

回帖

7590

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-01 09:49:55
已绑定手机

1

主题

14

回帖

43

积分

新手上路

积分
43
发表于 2025-7-30 14:26:11 | 显示全部楼层
没设置ID过滤。那我这同样是例程的程序,为啥不行呢?
回复

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-01 09:49:55
已绑定手机

1

主题

14

回帖

43

积分

新手上路

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

使用道具 举报 送花

  • 打卡等级:初来乍到
  • 打卡总天数:3
  • 最近打卡:2025-08-01 09:49:55
已绑定手机

1

主题

14

回帖

43

积分

新手上路

积分
43
发表于 2025-7-30 14:36:52 | 显示全部楼层
实际的现有产品给我发过来一包数据是 :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-8-24 02:37 , Processed in 0.134512 second(s), 95 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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