当前位置:
工控论坛
> >
产品
>
工业互联
>
现场总线
>
Can
我要发帖
***请教CAN数据通讯的几个问题***
点击:
2450
| 回复:
17
whm
关注
私信
精华:1帖
求助:0帖
帖子:30帖 | 39回
年度积分:0
历史总积分:185
注册:2002年3月09日
发表于:2002-10-22 16:01:00
楼主
各位高手: 我有几个问题请教一下: 1.我的系统是AT89C52+SJA1000+82C250,采用中断接收。我在测试CAN接收程序,发现每次进入中断后在读取IR.0时,结果总是0(正常发生中断,此接收中断位应为1),致使我总接收不到数据,而我如不判断它,只是读取(清零),就可以正常接受数据,请问这是为什么?我在接收数据时是否需要判断IR.0?如需要,如何读取 2.关闭总线是如何实现的 3.我用一个主机带64个从机节点,各节点能否采用不同波特率 4.主从采用轮循方式,主机向从机发请求,从机接到后向主机发送数据,主机接收数据,那么从机发送数据后如何知道发送成功呢?是否还需要主机返回从机一个接受成功信号呢? 谢谢
分享到:
收藏
邀请回答
回复楼主
举报
lhsw
关注
私信
精华:0帖
求助:0帖
帖子:0帖 | 69回
年度积分:0
历史总积分:69
注册:2001年6月29日
发表于:2002-07-22 11:08:00
1楼
1.不需要,因为你一读取中断寄存器,他就自动清零了,所以你读不到他高的时候 2,当两个错误计数器都达到128(好象是)时,总线就关闭了 3不可以 4是
回复
引用
举报
whm
关注
私信
精华:1帖
求助:0帖
帖子:30帖 | 39回
年度积分:0
历史总积分:185
注册:2002年3月09日
发表于:2002-07-22 11:14:00
2楼
谢谢你 lhsw,那我如果有多个中断,需要我必须读取中断寄存器怎么办 另外,能否通过软件关闭总线
回复
引用
举报
ruth
关注
私信
精华:0帖
求助:0帖
帖子:8帖 | 17回
年度积分:0
历史总积分:127
注册:2002年3月28日
发表于:2002-07-23 13:47:00
3楼
1.中断寄存器的中断标志位,读取之后就会被清除,但接收中断并不会,只有通过软件才能清除(向命令寄存器发命令0x04);是否是你在中断使能寄存器中没有开接收中断?所以不会产生接收中断。 2.总线出错(有各种原因),总线关闭。 3.不可以 4.从机发送数据后如何知道发送成功,其实发送成功后主机会有一个类似ACK的回应给从机(CAN控制器本身就已实现的),并且从机发送成功会有发送中断产生(中断使能寄存器中开发送中断)。
回复
引用
举报
whm
关注
私信
精华:1帖
求助:0帖
帖子:30帖 | 39回
年度积分:0
历史总积分:185
注册:2002年3月09日
发表于:2002-07-23 14:42:00
4楼
谢谢你RUTH,你的答复我有些看法: 1. 我的中断使能是打开的,我用BASICCAN方式,给控制寄存器位1即CR.1置位就可以了,而且我也能产生接收中断,只是在接收中断中判断IR.0时,总是零,我见到的一些例子在接收中断也对它进行了判断,为什么总是零,我不太清楚 2. DEVICENET协议中有在主从连接中关闭总线的情况,那应该是软件关闭吧? 以上测试程序我只打开接收中断
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2002-07-23 19:03:00
5楼
我想你的问题可能是这样的,你开了很多中断,但不一定是进的接收中断,也许你的发送和接收有问题。如果你进了接收中断,那一定可以读到IR.0为1。
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2002-07-23 19:04:00
6楼
我想你的问题可能是这样的,你开了很多中断,但不一定是进的接收中断,也许你的发送和接收有问题。如果你进了接收中断,那一定可以读到IR.0为1。
回复
引用
举报
whm
关注
私信
精华:1帖
求助:0帖
帖子:30帖 | 39回
年度积分:0
历史总积分:185
注册:2002年3月09日
发表于:2002-07-24 08:32:00
7楼
谢谢,可我只开了接收中断啊,而且我接数发数都是正常的啊
回复
引用
举报
lhsw
关注
私信
精华:0帖
求助:0帖
帖子:0帖 | 69回
年度积分:0
历史总积分:69
注册:2001年6月29日
发表于:2002-07-31 22:50:00
8楼
把第一次读出的数据进行备份保留
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2002-08-02 12:53:00
9楼
你可以用示波器测一下到底进如89C52的是不是SJA1000的中断。
回复
引用
举报
enoch
关注
私信
精华:0帖
求助:0帖
帖子:3帖 | 11回
年度积分:0
历史总积分:20
注册:2002年6月24日
发表于:2002-08-13 12:40:00
10楼
你可以看一下,是否是使用的自监测方式?如是,则有可能是ir.0为0 ,我就遇到过这种情况。
回复
引用
举报
whm
关注
私信
精华:1帖
求助:0帖
帖子:30帖 | 39回
年度积分:0
历史总积分:185
注册:2002年3月09日
发表于:2002-08-14 08:33:00
11楼
谢谢,请问自监测方式是由哪个寄存器设定的,如何判断是自监测方式,为什么这种状态下IR.0为0
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2002-08-16 16:33:00
12楼
在PELINcan模式下寄存器0的第三位为自检位,1为自检,0为正常。
回复
引用
举报
whm
关注
私信
精华:1帖
求助:0帖
帖子:30帖 | 39回
年度积分:0
历史总积分:185
注册:2002年3月09日
发表于:2002-08-19 09:28:00
13楼
可我用BASIC CAN模式啊
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2002-08-19 10:21:00
14楼
basic can 没有自检方式,我建议你检查一下硬件,你的SJA1000的中断与89C52的哪个中断相连
回复
引用
举报
whm
关注
私信
精华:1帖
求助:0帖
帖子:30帖 | 39回
年度积分:0
历史总积分:185
注册:2002年3月09日
发表于:2002-08-19 12:55:00
15楼
我的SJA1000中断与89C52的INT0相连,不会错的
回复
引用
举报
gongkongedit
关注
私信
精华:1099帖
求助:0帖
帖子:14392帖 | 54470回
年度积分:0
历史总积分:622
注册:2008年9月08日
发表于:2002-08-20 15:59:00
16楼
那INT0还与别的相连了吗?把你产生中断前后的状态寄存器的值写出来,我帮你看一下。
回复
引用
举报
小电容
关注
私信
精华:0帖
求助:0帖
帖子:5帖 | 24回
年度积分:0
历史总积分:200
注册:2001年3月14日
发表于:2002-10-22 16:01:00
17楼
BASIC CAN方式下接收到PELI CAN方式的数据包时正常中断,但无接收数据!!!
回复
引用
举报
热门招聘
相关主题
普及基础知识:什么是双绞线,...
[1959]
modbus协议中文版很不错需要...
[1547]
在PCS7 V7.0 SP2下安装中央归...
[1455]
请问工业以太网的网线(RJ45)...
[4147]
讨论:现场总线组网软件
[2736]
RS485总线型网络具体怎么实现...
[3036]
如何判断DP接头故障
[2911]
PROFIBUS-DP从站的工作原理
[3239]
DeviceNet技术概要(六)
[2858]
求一思路
[1692]
官方公众号
智造工程师
客服
小程序
公众号