[CAN-bus/DeviceNet] 如何获得单次发送?(即接收只为一帧报文)

[复制链接]
3570|7
 楼主| 桂电飞天鼠 发表于 2007-7-11 16:25 | 显示全部楼层 |阅读模式
好久没来坛子,俺等还只是学习使用CAN总线而已,但发现坛里火*味较重,已在规范上就辩得不可开交,说这么多,不如实验一下??<br /><br />继续之前在学校就遇到的问题,现在终于要面对。<br />问题:<br /><br />使用单次发送命令(CMR.0和CMR.1),在接收节点怎么老是重复进入接收中断七次?按道理应该是发送一次,接收一次,进入一次的呀~~<br /><br />后看了手册,是因为如果在使用“释放接收缓冲区”命令后,FIFO里如果还有有效数据,则RI置位,又会继续进入中断。经通过串口观察,重复接收了七次。<br /><br />但这里只使用单次发送,难道发了七次?使用RX信息计数器查看,FIFO里共有6个报文,为什么是这样呢?我哪里理解错了??为什么单次发送后,接收的FIFO里却有6个(或7个?)报文?<br /><br />实验中使用两块CAN总线板子。<br />Peli模式,标准帧。<br />
yusea 发表于 2007-7-11 16:34 | 显示全部楼层

什么芯片?

什么芯片?
 楼主| 桂电飞天鼠 发表于 2007-7-11 16:41 | 显示全部楼层

哦,是51+SJA1000+82C250的

  
yusea 发表于 2007-7-11 17:02 | 显示全部楼层

对sja1000不熟

在lpc2000上&nbsp;&nbsp;如果把canmod的stm位置1,则单帧发送(不管成不成只发一次),否则,如果置0,一直发送直到发送成功。<br /><br />没有遇到过类似楼主所说的问题。<br />
 楼主| 桂电飞天鼠 发表于 2007-7-11 17:37 | 显示全部楼层

在SJA1000上也有类似的寄存器控制位~

不过现在做的实验没有实现预期效果,不知道哪里弄错了。。。<br />再研究研究下~~~
lan_tian88 发表于 2007-7-11 22:12 | 显示全部楼层

应该是你寄存器设置的问题,再仔细的看一下.

  
 楼主| 桂电飞天鼠 发表于 2007-7-12 18:25 | 显示全部楼层

惭愧了~~

原来是按键没处理好。。。。<br />不过现在还是会进入中断两次,即使改为自收自发(自测试模式)还是一样~~~<br />继续研究中。。。
 楼主| 桂电飞天鼠 发表于 2007-7-12 19:54 | 显示全部楼层

原来是中断处理没弄好...

在公司前辈的指导下,终于解决了这些奇怪的小问题,也对SJA1000的用法有了更深的体会.<br /><br />小结:读取缓冲区数据与释放缓冲区的时机没选择对,而且又用了全局标志位,所以重复进入中断~~即是说:CAN总线接收到数据后的处理必须迅速(在本实验中),并最好在中断里完成,特别是接收取出。<br />
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

273

帖子

0

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