搜索
bottom↓
回复: 19

AVR8+MCP2515的can通讯问题,为什么总是总线错误,在线等!

[复制链接]

出0入0汤圆

发表于 2013-3-2 11:34:08 | 显示全部楼层 |阅读模式
回环模式首发正常,但正常模式数据无法发送,用示波器观察CANTX波形为16个脉冲(低电平),其中,第一个脉冲宽度比较宽,后面15个比较窄。

此图黄色是CANTX的波形

此图为can_h和can_l的波形。

我是250k的速度,做了2块一样的板子,把can接起来后,就出现这个波形(一个板子测试的时候也是这个波形)。2个板子的程序是一样的,在回环模式测试的时候,首发都是正常的。
以i经确定spi工作是正常的。就是在正常模式下发送不行,这个问题自己找了很久的原因了,小弟刚毕业第一次接项目,在做不出来就真要辞职了,大家有高手速度来指点一下啊!!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

 楼主| 发表于 2013-3-2 12:21:07 | 显示全部楼层
自己顶一下啊 论坛的大侠呢

出0入0汤圆

 楼主| 发表于 2013-3-2 12:21:28 | 显示全部楼层
有知道来讨论一下也好啊

出0入0汤圆

发表于 2013-3-2 12:24:21 | 显示全部楼层
接2个120欧姆终端电阻。

出0入0汤圆

发表于 2013-3-2 12:32:24 | 显示全部楼层
cocomobei00 发表于 2013-3-2 12:21
自己顶一下啊 论坛的大侠呢

一般总线两端都要加120欧的终端电阻。没有用过MCP2515,帮你顶一下。

出0入0汤圆

发表于 2013-3-2 13:36:53 | 显示全部楼层
如果只有两个点的话可以不加120电阻。。。。。。。检查一下设置吧!
电路也不贴一下,也不知电路有问题不!

出0入0汤圆

 楼主| 发表于 2013-3-3 09:38:06 | 显示全部楼层
本帖最后由 cocomobei00 于 2013-3-3 09:50 编辑
pcwinner 发表于 2013-3-2 13:36
如果只有两个点的话可以不加120电阻。。。。。。。检查一下设置吧!
电路也不贴一下,也不知电路有问题不 ...


终端电阻加上了,2个端点都有120的电阻。您说的设置,是指MCP2515的初始化设置吗?我回环模式都是ok的,而且发送之前我设断点用spi读发送寄存器的数据都是正确的数据,只是一发送就出现上面的波形,而且是一直重复不停的发送……

出0入0汤圆

 楼主| 发表于 2013-3-3 09:47:56 | 显示全部楼层


图中的光耦部分已经去掉,经MCP2515的CTAXD与CRXD直接接到了MCP2551的TXD/RXD,MCP2551的2脚直接接到地了(图中未画出)。不知道后面的二极管个那2个10欧姆的电阻会不会有影响。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2013-3-3 09:58:40 | 显示全部楼层
那个TVS管,结电容是多大?can用的不能大于30pf。也许拆了试试能行。

出0入0汤圆

发表于 2013-3-3 12:03:52 | 显示全部楼层
一直重复不停的发送…要不就接收端收不到信号,发送端一直在发
查一下接收部分的地址是否正确。你可以把接收设为接收所有信号试试。

出0入0汤圆

 楼主| 发表于 2013-3-3 15:53:03 | 显示全部楼层
cash95 发表于 2013-3-3 09:58
那个TVS管,结电容是多大?can用的不能大于30pf。也许拆了试试能行。

TVS都卸了  还是原来波形   买了个can-usb的线  接上去做成双节点 还是一样的波形   单节点发送的话正常的波形应该就是这样的吗?

出0入0汤圆

 楼主| 发表于 2013-3-3 15:54:09 | 显示全部楼层
pcwinner 发表于 2013-3-3 12:03
一直重复不停的发送…要不就接收端收不到信号,发送端一直在发
查一下接收部分的地址是否正确。你可以把接 ...

我现在是单节点测试   刚接上usb-can的线 也是这样呢  现在在想是不是单节点的时候正常波形到底是什么样的

出0入0汤圆

 楼主| 发表于 2013-3-3 16:00:01 | 显示全部楼层
对了 我用示波器的时候 表笔的地接在板子的地上的   如果canh表笔地接到canh上 就没有波形了  canl也是这样  到底这个表笔的地要接在哪里?

出0入0汤圆

 楼主| 发表于 2013-3-3 17:07:40 | 显示全部楼层
如果将MCP2515的CTXD与CRXD短接,将模式设置为正常模式,若通讯正常的话是不是也可以收到数据呢

出0入0汤圆

 楼主| 发表于 2013-3-3 21:29:20 | 显示全部楼层
晚上又实验了 这会发现:就算是只有一个节点发送,CANH  CANL并未相连一起,MCP2515的CRXD竟然也有跟上图一样的波形(看着跟CANH上波形一样)。我的MCP2515的CTXD CRXD在硬件上并未链接在一起啊??CRXD的波形是怎么回事呢?

出0入0汤圆

 楼主| 发表于 2013-3-4 11:33:19 | 显示全部楼层
今天测试有新的发现,就是将avr复位一下就可以正常发送了 ,但为什么要复位还是不知道,继续测试,找到原因一定把结果分享出来!!

出0入0汤圆

 楼主| 发表于 2013-3-4 17:49:02 | 显示全部楼层
问题得到就解决了,先总结如下:
1.主要是硬件上原因,硬件上将MCP2515的CRXD与单片机的PD7连接,我在单片机初始化的时候,将PD7设置为输出高,这样在MCP2515的CRXD就有一个上拉电平,使得在MCP2515发送数据后的位检测时候一直出错,就会出现上面的波形(我个人这样理解)。不知道对不对。但至今不明白为什么要把CRXD接到单片机的PD7(硬件不是我做的),有大侠知道这么做的好处吗?
2.一般回环模式测试成功了的话,如果硬件没有问题,都会通讯成功的。
3.单节点测试:如果硬件和软件都是ok的话,单节点测试,用示波器是可以看到波形的,MCP2515由于发送完毕没有收到ACK信号,会一直发送数据,用示波器的逻辑分析仪看会有正确的数据,但是会提示却是ACK。我上面的图那些脉冲是有错误。简单的说,如果一切都是ok的,不会出现我上面的截图波形,而是正常的数据波形!!
4.其他的想到在写吧
5.感谢楼上2位的指点,希望我的帖子可以给更多人提供参考帮助。

出0入0汤圆

发表于 2013-3-20 23:01:58 | 显示全部楼层
楼主可否发一份代码给我 我也在学习2515  十分感谢 270317992@qq.com

出0入0汤圆

发表于 2013-4-28 22:49:24 | 显示全部楼层
求助楼主,本人在做毕业设计用到2515,可否发一份代码给我,万分感谢 549417992@qq.com

出0入0汤圆

发表于 2013-9-27 14:03:26 | 显示全部楼层
cocomobei00 发表于 2013-3-4 17:49
问题得到就解决了,先总结如下:
1.主要是硬件上原因,硬件上将MCP2515的CRXD与单片机的PD7连接,我在单片 ...

你好,我在学习MCP2515的过程中遇到一个问题:
  1. uchar mcp2515_init(void)
  2. {
  3.         uchar temp[4] = { 0, 0, 0, 0 };
  4.         uchar TempData;
  5.        
  6.         // MCP2515 启动前进行软件复位
  7.         SPI_PORT &= ~(1<<SS);                //MCP2515的CS有效
  8.         SPI_MasterTransmit(SPI_RESET);
  9.         SPI_PORT |= (1<<SS);                //MCP2515的CS无效
  10.        
  11.         //DelayMS(5);
  12.        
  13.         Usart_Transmit(mcp2515_read_register(CANSTAT));
  14.        
  15.         //设置为配置模式
  16.         mcp2515_bit_modify(CANCTRL,0xE0,(1<<REQOP2));
  17.         DelayMS(5);
  18.         //验证是否进入配置模式
  19.         TempData = mcp2515_read_register(CANSTAT);
  20.         Usart_Transmit(TempData);
  21.         if((TempData&0xE0)!=(1<<REQOP2))
  22.         {
  23.             Usart_Transmit(0xFF);//测试用
  24.            return OPMODE_CONFIG_EEROR;
  25.         }
复制代码
我在MCP2515的初始化代码里面,在设置工作模式的后面加入验证代码,以确认是否真的进入我想要的模式。初始化代码放在main函数中执行一次。我在给系统上电的时候,发现大部分时候都是验证不正确,不过也有几次能够通过验证。我用的是Mega16A,我参考过几个帖子,代码应该没有错误,都是参考别人成功的代码,不过别人没有做工作模式的验证。请问你有没有遇到过这个问题呢?

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-27 00:19

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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