[CAN-bus/DeviceNet] 关于SJA1000,请 wxj1952再看看,

[复制链接]
3058|6
 楼主| yizaisong 发表于 2007-4-3 14:16 | 显示全部楼层 |阅读模式
问个很菜的问题,关于SJA1000,发送的时候是不是一定要有接收端?我的发送端总是报错,就是单独一个发送芯片,<br />SR状态&nbsp;0110&nbsp;0000<br />在线等
qiutie 发表于 2007-4-4 08:19 | 显示全部楼层

也可以

也可以,用示波器量一下总线信号
wxj1952 发表于 2007-4-4 13:56 | 显示全部楼层

不可以

CAN协议要求总线上至少有一个接收器,否则发送器没有ACK应答信号,当然报错。
 楼主| yizaisong 发表于 2007-4-4 15:03 | 显示全部楼层

TO wxj1952

你能不能帮助我一下,帮我写一个中断接收的流程给我看看,我现在接收中断是进了,刚进时候&nbsp;SR&nbsp;0001&nbsp;1101&nbsp;然后读出接收寄存器后SR&nbsp;0000&nbsp;0000不知道啥,然后中断进&nbsp;不了了,读出的数据也不对<br />CANREG_read(3)&nbsp;表示读寄存器3里面的数据<br />CANREG_write(1,0x04);表示往寄存器1里面写0x04<br /><br />&nbsp;void&nbsp;SJA_INTR()&nbsp;interrupt&nbsp;0&nbsp;using&nbsp;1&nbsp;&nbsp;&nbsp;&nbsp;//CanBus接口芯片产生中断(INTR0)<br />{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;unsigned&nbsp;char&nbsp;sta;<br />&nbsp;&nbsp;unsigned&nbsp;char&nbsp;temp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;EX0&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;sta&nbsp;=&nbsp;CANREG_read(3);&nbsp;//读中断寄存器<br />&nbsp;&nbsp;temp&nbsp;=&nbsp;sta&nbsp;&&nbsp;0x20;<br />&nbsp;&nbsp;if(temp&nbsp;==&nbsp;0x20)<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA1000_init();&nbsp;<br />&nbsp;&nbsp;temp&nbsp;=&nbsp;sta&nbsp;&&nbsp;0x04;<br />&nbsp;&nbsp;if(temp&nbsp;==&nbsp;0x04)<br />&nbsp;&nbsp;&nbsp;&nbsp;SJA1000_init();//消极错误中断错误报警中断,均导致重启<br />&nbsp;&nbsp;temp&nbsp;=&nbsp;sta&nbsp;&&nbsp;0x02;<br />&nbsp;&nbsp;if(temp&nbsp;==&nbsp;0x02)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//发送中断处理<br />&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;send_interrupt();<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;temp&nbsp;=&nbsp;sta&nbsp;&&nbsp;0x01;<br />&nbsp;&nbsp;if(temp&nbsp;==&nbsp;0x01)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//接收中断,接收数据<br />&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;receive_interrupt();<br />&nbsp;&nbsp;}&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;EX0&nbsp;=&nbsp;1;<br />}<br />receive_interrupt();<br />{<br />unsigned&nbsp;char&nbsp;R_temp0=0;<br />unsigned&nbsp;char&nbsp;R_temp1=0;<br />unsigned&nbsp;char&nbsp;R_temp2=0;<br />unsigned&nbsp;char&nbsp;R_temp3=0;<br />unsigned&nbsp;char&nbsp;R_temp4=0;<br />unsigned&nbsp;char&nbsp;R_temp5=0;<br />unsigned&nbsp;char&nbsp;R_temp6=0;<br />unsigned&nbsp;char&nbsp;R_temp7=0;<br />unsigned&nbsp;char&nbsp;R_temp8=0;<br />unsigned&nbsp;char&nbsp;R_temp9=0;<br />unsigned&nbsp;char&nbsp;R_test=0;<br />&nbsp;R_temp0=CANREG_read(20);<br />&nbsp;&nbsp;&nbsp;R_temp1=CANREG_read(21);<br />&nbsp;&nbsp;&nbsp;R_temp2=CANREG_read(22);<br />&nbsp;&nbsp;&nbsp;R_temp3=CANREG_read(23);<br />&nbsp;&nbsp;&nbsp;R_temp4=CANREG_read(24);<br />&nbsp;&nbsp;&nbsp;R_temp5=CANREG_read(25);<br />&nbsp;&nbsp;&nbsp;R_temp6=CANREG_read(26);<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;R_temp7=CANREG_read(27);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;R_temp8=CANREG_read(28);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;R_temp9=CANREG_read(29);&nbsp;<br />&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;CANREG_write(1,0x04);<br /><br />}
wxj1952 发表于 2007-4-4 23:13 | 显示全部楼层

书上有

void&nbsp;ex0int(void)&nbsp;interrupt&nbsp;0&nbsp;using&nbsp;0<br />{<br />LED1=!LED1;<br />receive();<br /><br />}
 楼主| yizaisong 发表于 2007-4-5 09:54 | 显示全部楼层

wxj1952

请问是哪本书上?
wxj1952 发表于 2007-4-5 15:25 | 显示全部楼层

C51/CAN,哪本上都有

凡是讲C51的书上都有。<br />推荐写得好的一本,清华大学《基于C语言编程--MCS51单片机原理与应用》。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

38

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部