我最近一直在调试使用TMS570LS3137上面的FlexRay功能。
之前在官调试有五个节点的demo,现在我自己创建了两个节点Node1和Node2。
用来发送一些较大的数据。 我在Node1中初始化了4个127字长的buffer.用来发送数据, 4个127字长的buffer.用来发送数据。同样,在Node2中也设置了4个127字长的buffer.用来发送数据,和127字长的buffer.用来接收 Node1的4个发送buffer 的数据。
我发现无论是Node1还是Node2发送Buffer不能大于3个。两个节点都有三个或者三个以下接收发送节点数时候,两个节点之间的发送和接收数据都正常。
但是,当我把任意一个节点发送buffer数增加到四个或者更多的时候,比如我把Node1中的发送buffer数增加到4个 Node2中发送Bufffer保持3个,接收 Node1的buffer 对应的增加到四个。在Node1主函数中分别向四个buffer赋值,并分别把他们发送出去。但是在Node2中,收到Node1的数据第三个buffer数据竟然是自己发出去的数据。而不是来自Node1的第三个buffer的数据。
而且本来在Node1中本应正常收到Node2发来的3个Buffer的数据只能接收到了前两个。不知道这是怎么回事。希望知道的大神指点指点。我觉得我的 接收和发送配置应该是没有问题的。
gaoyang9992006:
官方给的demo是buffer多长的啊?
MichaelLee:
回复 gaoyang9992006:
你好,官方的代码有两个节点的和五个节点的,五个节点的是每个节点都有一个18字节大小的TX buffer一个254字节大小的tx buffer
并有分别对其他节点的4个18字节的RX buffer 和4个 254字节的RX buffer,两个节点的DEMO 也是同样的道理。具体的可以看附件。