[CAN-bus/DeviceNet] 帮忙看看程序错在哪!!

[复制链接]
2021|1
 楼主| xhming 发表于 2008-5-20 22:57 | 显示全部楼层 |阅读模式
我用的是S51+SJA1000+TJA1050做的两个一样的板子通信&nbsp;一个发送一个接收<br />现在出现的问题是接收端老是提示数据溢出。下面是我的发送接收程序,懂行的帮我看看,提出意见,谢谢、!!<br /><br />void&nbsp;init_can()<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_CONTROL,0x01);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_ACR,0x00);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_AMR,0xFF);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_BTR0,0x03);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_BTR1,0x1C);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_CDR,0x48);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_OCR,0xaa);<br />&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_CONTROL,0x1E);<br />}<br /><br /><br />void&nbsp;&nbsp;SendData(void)<br />{<br />&nbsp;&nbsp;&nbsp;&nbsp;SendBuf[0]&nbsp;=&nbsp;0x11;<br />&nbsp;&nbsp;&nbsp;&nbsp;SendBuf[1]&nbsp;=&nbsp;0x28;<br />&nbsp;&nbsp;&nbsp;&nbsp;if((ReadSjaReg(REG_CONTROL)&0x01)==0)&nbsp;//JA1000处于工作模式<br />&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;if((ReadSjaReg(REG_CONTROL)&0x08)==0x08)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if((ReadSjaReg(REG_CONTROL)&0x04)==0x04)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer1)&nbsp;=&nbsp;0x55;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer2)&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer3)&nbsp;=0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer4)&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer5)&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer6)&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer7)&nbsp;=&nbsp;SendBuf[6];<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer8)&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer9)&nbsp;=&nbsp;0;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;*((unsigned&nbsp;&nbsp;&nbsp;&nbsp;char&nbsp;xdata&nbsp;*)REG_TxBuffer10)&nbsp;=&nbsp;0;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;BCAN_CMD_PRG(TR_CMD);&nbsp;//置位发送请求位<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2_1=0;<br />&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;else&nbsp;//SJA1000在复位模式<br />&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;printf(&quot;SJA1000&nbsp;is&nbsp;working&nbsp;as&nbsp;Reset&nbsp;Mode!
&quot;);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;init_can();<br />&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;<br />}<br /><br />接收程序:<br />void&nbsp;&nbsp;&nbsp;ReceiveData(void)<br />{<br />&nbsp;&nbsp;&nbsp;unsigned&nbsp;char&nbsp;DataLong;<br />&nbsp;&nbsp;&nbsp;if(ReadSjaReg(REG_STATUS)&nbsp;&&nbsp;0x01&nbsp;==&nbsp;0x01)<br />&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;&nbsp;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[0]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer1);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[1]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer2);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[2]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer3);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[3]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer4);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[4]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer5);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[5]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer6);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[6]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer7);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[7]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer8);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[8]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer9);<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;RcvBuf[9]&nbsp;=&nbsp;*((unsigned&nbsp;char&nbsp;xdata&nbsp;*)REG_RxBuffer10);<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;//P2_1=0;&nbsp;<br /><br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;if(ReadSjaReg(REG_STATUS)&nbsp;&&nbsp;0x03&nbsp;==&nbsp;0x03)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_COMMAND,0x0c);&nbsp;//释放缓冲区并清除溢出标志<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2_2&nbsp;=&nbsp;0;&nbsp;(问题就在这里,这个LED亮,数据溢出!)<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;else<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;WriteSjaReg(REG_COMMAND,0x04);;&nbsp;//释放缓冲区<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;P2_3&nbsp;=&nbsp;0;<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}<br />}
 楼主| xhming 发表于 2008-5-23 10:48 | 显示全部楼层

高手帮忙看看啊

  
您需要登录后才可以回帖 登录 | 注册

本版积分规则

14

主题

41

帖子

0

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