搜索
bottom↓
回复: 14

c2000 CAN通信问题求教

[复制链接]

出0入0汤圆

发表于 2015-4-22 13:22:05 | 显示全部楼层 |阅读模式
目前使用TI开发套件仿真实验can通讯收发例程(用TI提供的例程改成正常收发模式),发现:
ECanaRegs.CANTRS.all = 0x0000FFFF;
while(ECanaRegs.CANTA.all != 0x0000FFFF )
{
}
在while发送完成等待过程中,当连接USBCAN并启动接收时例程可以正常发送,但当移除USBCAN时即会死在      while中且CANTA一直为全零。
请教诸位,是否必须要接接收设备如USBCAN才可正常运作?如果真是如此用怎样的方法才可有效避免死循环,是否有寄存器可以设置?谢谢~

出0入0汤圆

发表于 2015-4-22 13:35:51 | 显示全部楼层
玩过股票没?没玩过我教你:你要买股票,那得有卖;你要卖股票,那得有人买。CAN跟这个相似,没有接收端,是发不出去的。至于怎么解决你的CAN问题,好好动动脑子。

出0入0汤圆

 楼主| 发表于 2015-4-22 13:46:05 | 显示全部楼层
steaven2000 发表于 2015-4-22 13:35
玩过股票没?没玩过我教你:你要买股票,那得有卖;你要卖股票,那得有人买。CAN跟这个相似,没有接收端, ...

额,谢谢。如果这样的话我想通过设置can模块超时寄存器能够解决这个问题的吧

出0入0汤圆

发表于 2015-4-22 13:55:23 | 显示全部楼层
dongaohui 发表于 2015-4-22 13:46
额,谢谢。如果这样的话我想通过设置can模块超时寄存器能够解决这个问题的吧 ...

这是一个行为的问题,而不是功能的问题。
怎么跟你解释呢?你看,你那个while仅仅是为了确认CAN发送出去了没对不对?为什么一定要去做这个确认,或者说换一个角度来考虑,写了寄存器我就不管了不行么?这样CPU就可以去做别的事了啊。
再给你进一步的思路:某个CAN发送邮箱,你发送完了后置忙状态,在发送中断中清忙状态,这样哪个邮箱处于什么状态,哪个邮箱可以用来发消息,这不一清二楚了吗?

出0入0汤圆

 楼主| 发表于 2015-4-22 15:13:26 | 显示全部楼层
steaven2000 发表于 2015-4-22 13:55
这是一个行为的问题,而不是功能的问题。
怎么跟你解释呢?你看,你那个while仅仅是为了确认CAN发送出去了 ...

恩,明白了,十分感谢

出0入0汤圆

发表于 2015-4-24 00:36:03 | 显示全部楼层
dongaohui 发表于 2015-4-22 13:46
额,谢谢。如果这样的话我想通过设置can模块超时寄存器能够解决这个问题的吧 ...

最简单的办法,你把TX和RX短路,你就会发现可以发送成功了

出0入0汤圆

发表于 2015-4-24 12:33:57 | 显示全部楼层
logosz 发表于 2015-4-24 00:36
最简单的办法,你把TX和RX短路,你就会发现可以发送成功了

你确定? 闻所未闻,你以为这是串口啊?不懂就不要误导楼主。

出0入0汤圆

发表于 2015-4-24 19:58:44 | 显示全部楼层
steaven2000 发表于 2015-4-24 12:33
你确定? 闻所未闻,你以为这是串口啊?不懂就不要误导楼主。

我当然确定。CAN总线仲裁的原理就是TX在发送数据的时候RX会同时监听,如果监听到数据和TX的数据不一样,说明CAN_H,CAN_L总线上面有冲突电平。所以直接将RX接到TX脚上面,TX在发送的时候RX会接收到TX的数据,C2000内部的CAN控制器就会认为是正常发送出去了。


很多新手刚接触CAN,调试代码的时候因为CAN的这种机制,会对新手调试造成困难。因为往往需要至少两台设备才能正常发送。但是新手往往一台设备还没调通,所以两台一起调就会感觉困难。难以判断到底是哪方面的问题。

其实发送方代码是正确的,只是没有接收方。看不到发送的电平,会误以为发送方问题。其实只要短路TX,RX,然后将逻辑分析仪连接到TX或RX任意一脚就可以看到波形了。



我在调试代码的时候经常就是先确定发送方到底是否真正发出了波形。然后再调试接受端。


CAN收发器都可以不用。直接短路单片机的RX和TX就可以了。

另外感觉用逻辑分析仪看CAN波形,调试,感觉比调试什么其他IIC波形都爽。

本帖子中包含更多资源

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

x

出0入0汤圆

发表于 2015-4-29 20:50:51 | 显示全部楼层
logosz 发表于 2015-4-24 19:58
我当然确定。CAN总线仲裁的原理就是TX在发送数据的时候RX会同时监听,如果监听到数据和TX的数据不一样, ...

高大上啊 ,逻辑分析仪随便使

出0入0汤圆

发表于 2015-4-30 21:10:06 | 显示全部楼层
star_tale 发表于 2015-4-29 20:50
高大上啊 ,逻辑分析仪随便使

啥叫“随便使”?

出0入0汤圆

发表于 2015-5-1 22:52:30 | 显示全部楼层
logosz 发表于 2015-4-30 21:10
啥叫“随便使”?

曾经有个逻辑分析仪摆在面前,却没怎么用过

出0入0汤圆

发表于 2015-5-1 23:33:19 | 显示全部楼层
star_tale 发表于 2015-5-1 22:52
曾经有个逻辑分析仪摆在面前,却没怎么用过

我发现逻辑分析仪看CAN波形是太爽了。

出0入0汤圆

发表于 2015-5-3 09:22:54 | 显示全部楼层
玩过股票没?没玩过我教你:你要买股票,那得有卖;你要卖股票,那得有人买
有才!!

出0入0汤圆

发表于 2015-5-3 14:09:17 | 显示全部楼层
logosz 发表于 2015-4-24 19:58
我当然确定。CAN总线仲裁的原理就是TX在发送数据的时候RX会同时监听,如果监听到数据和TX的数据不一样, ...

哎,楼主又被误导了,CAN发不出去不是应为它发送的和接收的不一样。是应为它发送过后没有设备来应答,就是没有ACK位。所以这个在CAN的标准里面属于 应答错误 ,一般的CAN控制器里面有寄存器指示错误的,检测CAN状态和错误寄存器就可以了。不用一直死等。

出0入0汤圆

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

本版积分规则

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

GMT+8, 2024-4-18 20:06

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

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