[CAN-bus/DeviceNet] can自收发模式问题?

[复制链接]
 楼主| ligang411 发表于 2008-8-23 16:26 | 显示全部楼层 |阅读模式
&nbsp;本人用89c51+sja1000+tja1050,89c51的p26接sja_cs,p26接sja复位。现在用自收发模式(mod.2=1)调试,初始化sja1000总是失败,下面是初始化程序,请高手指点。<br /><br />void&nbsp;init_sja1000(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;state,ss,status;<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;ACRR[4];<br />&nbsp;&nbsp;&nbsp;&nbsp;uchar&nbsp;AMRR[4];<br /><br />//&nbsp;接收代码寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;ACRR[0]&nbsp;=&nbsp;0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;ACRR[1]&nbsp;=&nbsp;0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;ACRR[2]&nbsp;=&nbsp;0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;ACRR[3]&nbsp;=&nbsp;0xff;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />//&nbsp;接收屏蔽寄存器,<br />&nbsp;&nbsp;&nbsp;&nbsp;AMRR[0]&nbsp;=&nbsp;0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;AMRR[1]&nbsp;=&nbsp;0Xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;AMRR[2]&nbsp;=&nbsp;0xff;<br />&nbsp;&nbsp;&nbsp;&nbsp;AMRR[3]&nbsp;=&nbsp;0xff;&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />//&nbsp;使用do--while语句确保进入复位模式<br />&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MODR&nbsp;&nbsp;=&nbsp;0x09;&nbsp;&nbsp;//&nbsp;设置MOD.0=1--进入复位模式,以便设置相应的寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;=&nbsp;MODR;&nbsp;&nbsp;&nbsp;//state=0x09<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;ss=ECC;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ss=0x2f<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status=MODR;&nbsp;&nbsp;&nbsp;//status=0x09<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;!(status&nbsp;&&nbsp;0x01)&nbsp;);//<br />&nbsp;&nbsp;&nbsp;&nbsp;status=MODR;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//这条语句status=0x2f&nbsp;&nbsp;应该是0x09这是为什么?<br />&nbsp;&nbsp;&nbsp;&nbsp;ss=ECC;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//ss=0x2f<br />&nbsp;&nbsp;&nbsp;&nbsp;status=status&nbsp;&&nbsp;0x01;&nbsp;//status=0x2f<br />if(status==0x01)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&nbsp;=&nbsp;MODR;<br />&nbsp;&nbsp;&nbsp;&nbsp;ss=MODR;<br />//&nbsp;对SJA1000部分寄存器进行初始化设置<br />&nbsp;&nbsp;&nbsp;&nbsp;CDR&nbsp;&nbsp;=&nbsp;0x88;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;CDR为时钟分频器,CDR.3=1--时钟关闭,&nbsp;CDR.7=0---basic&nbsp;CAN,&nbsp;CDR.7=1---Peli&nbsp;CAN<br />&nbsp;&nbsp;&nbsp;&nbsp;BTR0&nbsp;=&nbsp;0x53;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;总线定时寄存器0&nbsp;;总线波特率设定<br />&nbsp;&nbsp;&nbsp;&nbsp;BTR1&nbsp;=&nbsp;0x2f;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;总线定时寄存器1&nbsp;;总线波特率设定<br />&nbsp;&nbsp;&nbsp;&nbsp;IER&nbsp;&nbsp;=&nbsp;0x01;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;IER.0=1--接收中断使能;&nbsp;&nbsp;IER.1=0--关闭发送中断使能<br />&nbsp;&nbsp;&nbsp;&nbsp;OCR&nbsp;&nbsp;=&nbsp;0x1a;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;配置输出控制寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;CMR&nbsp;&nbsp;=&nbsp;0x04;&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;释放接收缓冲器<br /><br />//&nbsp;初始化接收代码寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;ACR0&nbsp;=&nbsp;ACRR[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;ACR1&nbsp;=&nbsp;ACRR[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;ACR2&nbsp;=&nbsp;ACRR[2];&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;ACR3&nbsp;=&nbsp;ACRR[3];&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;初始化接收屏蔽寄存器<br />&nbsp;&nbsp;&nbsp;&nbsp;AMR0&nbsp;=&nbsp;AMRR[0];<br />&nbsp;&nbsp;&nbsp;&nbsp;AMR1&nbsp;=&nbsp;AMRR[1];<br />&nbsp;&nbsp;&nbsp;&nbsp;AMR2&nbsp;=&nbsp;AMRR[2];<br />&nbsp;&nbsp;&nbsp;&nbsp;AMR3&nbsp;=&nbsp;AMRR[3];&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;<br /><br />&nbsp;&nbsp;<br /><br />//&nbsp;使用do--while语句确保进入自接收模式<br />&nbsp;&nbsp;&nbsp;&nbsp;do<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MODR&nbsp;&nbsp;&nbsp;=&nbsp;0x0c;&nbsp;&nbsp;&nbsp;&nbsp;//MOD.2=1--进入自接收模式,<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;MODR&nbsp;&nbsp;&nbsp;=&nbsp;0x0c;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;state&nbsp;&nbsp;=&nbsp;ECC;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;status=MODR;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;while(&nbsp;!(status&nbsp;&&nbsp;0x0c)&nbsp;);<br />}<br />}<br /><br /><br />
 楼主| ligang411 发表于 2008-8-25 11:16 | 显示全部楼层

原理图有问题么

初始化总是不成功。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

16

帖子

0

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