打印
[CAN-bus/DeviceNet]

如何获得单次发送?(即接收只为一帧报文)

[复制链接]
2552|7
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
桂电飞天鼠|  楼主 | 2007-7-11 16:25 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
好久没来坛子,俺等还只是学习使用CAN总线而已,但发现坛里火*味较重,已在规范上就辩得不可开交,说这么多,不如实验一下??

继续之前在学校就遇到的问题,现在终于要面对。
问题:

使用单次发送命令(CMR.0和CMR.1),在接收节点怎么老是重复进入接收中断七次?按道理应该是发送一次,接收一次,进入一次的呀~~

后看了手册,是因为如果在使用“释放接收缓冲区”命令后,FIFO里如果还有有效数据,则RI置位,又会继续进入中断。经通过串口观察,重复接收了七次。

但这里只使用单次发送,难道发了七次?使用RX信息计数器查看,FIFO里共有6个报文,为什么是这样呢?我哪里理解错了??为什么单次发送后,接收的FIFO里却有6个(或7个?)报文?

实验中使用两块CAN总线板子。
Peli模式,标准帧。

相关帖子

沙发
yusea| | 2007-7-11 16:34 | 只看该作者

什么芯片?

什么芯片?

使用特权

评论回复
板凳
桂电飞天鼠|  楼主 | 2007-7-11 16:41 | 只看该作者

哦,是51+SJA1000+82C250的

使用特权

评论回复
地板
yusea| | 2007-7-11 17:02 | 只看该作者

对sja1000不熟

在lpc2000上  如果把canmod的stm位置1,则单帧发送(不管成不成只发一次),否则,如果置0,一直发送直到发送成功。

没有遇到过类似楼主所说的问题。

使用特权

评论回复
5
桂电飞天鼠|  楼主 | 2007-7-11 17:37 | 只看该作者

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

不过现在做的实验没有实现预期效果,不知道哪里弄错了。。。
再研究研究下~~~

使用特权

评论回复
6
lan_tian88| | 2007-7-11 22:12 | 只看该作者

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

使用特权

评论回复
7
桂电飞天鼠|  楼主 | 2007-7-12 18:25 | 只看该作者

惭愧了~~

原来是按键没处理好。。。。
不过现在还是会进入中断两次,即使改为自收自发(自测试模式)还是一样~~~
继续研究中。。。

使用特权

评论回复
8
桂电飞天鼠|  楼主 | 2007-7-12 19:54 | 只看该作者

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

在公司前辈的指导下,终于解决了这些奇怪的小问题,也对SJA1000的用法有了更深的体会.

小结:读取缓冲区数据与释放缓冲区的时机没选择对,而且又用了全局标志位,所以重复进入中断~~即是说:CAN总线接收到数据后的处理必须迅速(在本实验中),并最好在中断里完成,特别是接收取出。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

13

主题

273

帖子

0

粉丝