求助!!Can通信只能发送数据,不能接受数据,请大神帮...
/*-------------------------------------------------------------------------------------------------------CAN中断函数0
作用:用于CAN接受信息
---------------------------------------------------------------------------------------------------------*/
void SJA1000_INT0(void) interrupt 0
{
uchar Rebuf;
uchar len;
uchar Data,i;
// HAND=0; //CAN接收到数据
// TR0=0; //先关闭定时器0
//ET0=0;
if(ReadSJAReg(REG_CAN_IR)&0x01) //产生了接收中断并允许接收
{
ReadSJARegBlock(16,Rebuf,13);
WriteSJAReg(REG_CAN_CMR,RRB_BIT); //释放SJA1000接收缓冲区
len=Rebuf&0x08;//数据长度
for(i=0;i<len;i++){
Data=Rebuf; //第五字节为所需的字节书,前面的都是ID信息帧
com_sendbyte(Data);
// display(Data); //数据01 显示一号机发送的地址
// delay1s();
// delay1s();
// delay1s();
// delay1s();
// SendData(1,8,Data);
}
}
// TR0=1; //先关闭定时器0
//ET0=1;
}
中断函数如上所述,请问大侠们为什么CAN只能发送数据,不能接受数据?这个问题困惑了好久了,希望大神解惑,感激不尽,小弟在此谢过~~ 中断允许了吗?终端引脚有电平变化吗?进中断后是否需要清除标志位? 本帖最后由 kamfun 于 2013-11-2 21:24 编辑
这位朋友先谢谢啦~~有的。而且can的INT接外部中断0,中断函数是CAN的引脚引起的,但是米有变化,接收灯RXD2也不亮,不像发送的时候灯都会亮。
低电平触发,程序我是在其他板子弄好移植过来的,这里加了光耦隔离就变成样子了,不知道什么原因。貌似进入中断不用清标志位吧。之前没光耦的两块板用同样的程序都是可以收发通信的。现在怀疑是硬件问题,因为进入中断了,就是没反应,求高人指教! 你好,我也在做CAN和你遇到同样的问题,CAN能发不能收,而且接收死机,不知道你解决了没有,这是我的电路和程序,如果你做完了能不能给我发一个参考资料,1534256154@qq.com这是我邮箱
http://www.amobbs.com/thread-5660036-1-1.html CAN如果能发送数据,说明基本配置初始化没问题,接收死机看看是不是开了接收中断,但程序中没处理
页:
[1]