极客工坊

 找回密码
 注册

QQ登录

只需一步,快速开始

楼主: panthermx

各位大神,再次发帖求助。关于arduino 驱动mcp2515CAN模块问题

[复制链接]
 楼主| 发表于 2016-10-3 19:32:17 | 显示全部楼层
275891381 发表于 2016-9-30 16:44
uno 不可能呀,我早晨试的还可以呢。真不行也无能为力了

大神,今天抽空把新的pro mini的针脚焊上,用USB TTL烧了程序,设定速率成功了。
看来真的是板子有问题,只是不明白哪里坏了,UNO 和NANO一直在用,之前其他模块测试时都没问题的。
不过现在可以进行下一步测试了,感谢大神的帮助。
回复 支持 反对

使用道具 举报

发表于 2016-10-4 16:02:40 | 显示全部楼层
panthermx 发表于 2016-10-3 19:32
大神,今天抽空把新的pro mini的针脚焊上,用USB TTL烧了程序,设定速率成功了。
看来真的是板子有问题 ...

可以就可以了
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-12 18:55:54 | 显示全部楼层

大神,再向你请教一下。
现在2块2515之间的通讯已经测试完了,没有异常。
但现在跟车辆的CAN网络通讯却不成功,车辆的CAN网络正常,用CAN工具接CAN盒可以检测到车辆网络,但CAN工具加CAN盒监测不到2515发送的数据。
CAN高低交换链接都测试了,完全没有数据。
不知道那里还有问题,请大神指点一下。
回复 支持 反对

使用道具 举报

发表于 2016-10-13 17:22:17 | 显示全部楼层
panthermx 发表于 2016-10-12 18:55
大神,再向你请教一下。
现在2块2515之间的通讯已经测试完了,没有异常。
但现在跟车辆的CAN网络通讯却 ...

那可能是波特率 和can过滤与屏蔽设置不太对吧
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-13 18:41:56 | 显示全部楼层
275891381 发表于 2016-10-13 17:22
那可能是波特率 和can过滤与屏蔽设置不太对吧

大神,波特率是指CAN速率设置吗?
这个速率设置的是125K,车辆CAN速率也是125K,这个用CAN盒和诊断工具读取时就是设定的这个速率。
CAN过滤与屏蔽是要怎么查?才能确定类型?
回复 支持 反对

使用道具 举报

发表于 2016-10-13 19:28:27 | 显示全部楼层
panthermx 发表于 2016-10-13 18:41
大神,波特率是指CAN速率设置吗?
这个速率设置的是125K,车辆CAN速率也是125K,这个用CAN盒和诊断工具 ...


最简单的就是发送 车速can信号请求 看看是否有车速信号帧
也就是发送obd信号帧试试
格式大约是

  1. void CAN::CiARequest(uint8_t PID)
  2. {   
  3.         messageTx.id = ID_QUERY;
  4.         messageTx.header.rtr = 0;
  5.         messageTx.header.length = 8;
  6.         messageTx.data[0]= 0x02;
  7.         messageTx.data[1]= 0x01;
  8.         messageTx.data[2]= PID;  
  9.    
  10.        
  11.         sendMessage(&messageTx);
  12.         delay(5);

  13.         if (messageAvailable()) {
  14.                 //Read the message buffers
  15.                 getMessage(&messageRx);
  16.         }

  17. }

  18. unsigned int CAN::getVehicleSpeed()
  19. {
  20.         unsigned int data;

  21.         CiARequest(VEHICLE_SPEED);
  22.        
  23.         if (messageRx.id==ID_RESPONSE) {
  24.                 data =  uint16_t(messageRx.data[3]);

  25.                 #if (DEBUGMODE==1)
  26.                         printMessage(&messageRx);
  27.                 #endif
  28.         }
  29.        
  30.         return data;
  31.        
  32. }

  33. #define ID_QUERY                0x7DF
  34. #define ID_RESPONSE             0x7E8
  35. #define VEHICLE_SPEED               0x0D  //01         0D         1         Vehicle speed         0         255         km/h         A
复制代码
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-13 19:35:33 | 显示全部楼层
275891381 发表于 2016-10-13 19:28
最简单的就是发送 车速can信号请求 看看是否有车速信号帧
也就是发送obd信号帧试试


也就是说,每个模块需要先发请求指令,其他设备才会将报文反馈回来。
那如果只是监听网络上的报文呢,是否也需要发送请求指令?
用库里自带的示例程序《 receive_check》是否可以实现监听?
还是说出了改CAN速率,还要改什么参数?
回复 支持 反对

使用道具 举报

发表于 2016-10-13 19:39:14 | 显示全部楼层
panthermx 发表于 2016-10-13 19:35
也就是说,每个模块需要先发请求指令,其他设备才会将报文反馈回来。
那如果只是监听网络上的报文呢, ...

这个需要你自己好好了解下can协议了,慢慢尝试吧。有的你请求数据别人屏蔽了不会给你返回数据的,这个得看车的底层协议dbc文件了,最好用公开的车速 发动机专属等诊断协议试试自己的程序有问题没
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-13 19:52:45 | 显示全部楼层
275891381 发表于 2016-10-13 19:39
这个需要你自己好好了解下can协议了,慢慢尝试吧。有的你请求数据别人屏蔽了不会给你返回数据的,这个得 ...

大神,这下真的不明白了。
不知道大神有没有监听汽车CAN网络的例子给看一下。
非常感谢。
回复 支持 反对

使用道具 举报

发表于 2016-10-13 20:03:20 | 显示全部楼层
本帖最后由 275891381 于 2016-10-13 20:07 编辑
panthermx 发表于 2016-10-13 19:52
大神,这下真的不明白了。
不知道大神有没有监听汽车CAN网络的例子给看一下。
非常感谢。


用这么慢的单片机就没能力监听,只能有屏蔽 过滤的接收处理一些吧,没有现成例子 你自己就尝试读取车速试试吧,这个方法是接到obd上等的can线
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-13 20:43:59 | 显示全部楼层
275891381 发表于 2016-10-13 20:03
用这么慢的单片机就没能力监听,只能有屏蔽 过滤的接收处理一些吧,没有现成例子 你自己就尝试读取车速 ...

大神,再问一下。
示例库里的SEND例程序发的报文是不是和汽车上用的报文结构不一样吗?
我在用SEND这个例程序测试时,使用CANtest接CAN盒并不能读取到报文,这是怎么回事?
回复 支持 反对

使用道具 举报

发表于 2016-10-13 20:55:26 | 显示全部楼层
panthermx 发表于 2016-10-13 20:43
大神,再问一下。
示例库里的SEND例程序发的报文是不是和汽车上用的报文结构不一样吗?
我在用SEND这个 ...

can协议都一样 肯定可以呀,我记得好多程序的波特率错一倍,你用can检测仪放大一倍和缩小一倍贝特率都试试,或者用can盒子的波特率检测 检测波特率
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-13 21:05:27 | 显示全部楼层
275891381 发表于 2016-10-13 20:55
can协议都一样 肯定可以呀,我记得好多程序的波特率错一倍,你用can检测仪放大一倍和缩小一倍贝特率都试 ...

好的,我明白了。
明天先用用CAN盒再试一下,分别检测一下车辆和2515的波特率。
希望自己能成功。感谢大神的耐心指导,谢谢。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2016-10-19 10:31:30 | 显示全部楼层
panthermx 发表于 2016-10-13 21:05
好的,我明白了。
明天先用用CAN盒再试一下,分别检测一下车辆和2515的波特率。
希望自己能成功。感谢 ...

大神,现在还是没有办法跟车辆通讯
CAN盒读取也没有任何显示,从100K到10K的波特率都试了,都没有反应。用的软件没有自动检测波特率的功能。
用两个2515互相通讯是可以的,串口有输出,为什么CAN盒检测不到呢?
看了很多资料,可以还是一知半解的,发现不了自己错在那里了。
大神再帮帮忙吧。
回复 支持 反对

使用道具 举报

发表于 2017-3-27 09:03:37 | 显示全部楼层
你好,我看到您2016年10月份在极客工坊里询问关于arduino和CAN的问题,您好像是已经解决了。我现在在用DUE和nano通讯,遇到了一点连线的问题,想请教一下您,不知道您可否不吝赐教。我的QQ是411940567.非常感谢,挺急的。。。
回复 支持 反对

使用道具 举报

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

本版积分规则 需要先绑定手机号

Archiver|联系我们|极客工坊

GMT+8, 2024-3-29 22:29 , Processed in 0.051545 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2021, Tencent Cloud.

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