This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

CC1352R1 星星网络多点实时数据传输能实现吗?

三块 cc1352r1lauchpad ,使用了simplelink_cc13x2_sdk_2_20_00_71 ---> rfEasyLinkEchoTx & rfEasyLinkEchoRx  其中一块只做接收,另两块发送。测试接受容量多大,在测试时,发送模块 每20ms发送10byte数据,发送超时2ms;接受端实时接收,接受超时2ms;   如果一块发,一块收,数据正常没有丢数据现象,如果两块同时发,一块收,会出现只能收一块数据,或者收到两块数据但是两块都有数据丢失现象(接收到的发送发发送序列不连续)。现在的问题是:

   1:我要实现多点,比如10个点,每个点实时发送128kbps的数据,同时接受另外9个点的9个128kbps数据。cc1352r1能实现吗?用什么方案?

   2:假如不能实现,可有推荐的方案,适合实时数据通讯,一点对多点 ,一点对多点发送数据,同时一点接受多点发送的数据?

  • 建议你使用Wireless Sensor Network(WSN)例程,是一对多的星型网应用
  • 好的,我试试,有情况再联系你!
  • 你的这个应用,主要是要解决多个节点同时传输数据发生碰撞的问题。
    可以考虑由接收数据的节点逐个向发送数据的节点查询数据,即轮询的方式。这样整个网络内的收发时序都有接收数据的节点控制,可以避免呢网络内节点同时发送导致的冲突。
  • 如果轮询的话,其实就是降低了传输效率。我看了文档中说传输的速率也就是5-50kbps,而我要接收的数据是9个128kbps实时数据接收,觉得如果真的是5-50kbps ,就无法实现。如果是轮询的话,效率更低。不知道是不是这样?
  • 还有你说的碰撞的问题,应该在MAC层已经解决,我在调试时两个实时发,一个收,有丢数据,应该是传输的速度跟不上,我还测试过,cc1352好像没有缓存之类的机制,我这样测试的,A发送一帧数据后停止(仿真EasyLink_transmit()结束后断点停止),这个时候B开始运行EasyLink_receicver(),这个时候我期望时能够收到的,因为我以为和串口,或者网口一样,至少有个缓存,存放一下接收的数据,结果我从来没有收到这个数据。也就是,我必须时刻保证一个任务在调用EasyLink_receicver(),确保有任何一方发送数据的时候本地能够及时接收,不致错过而丢失。请问我得出的这样的结果是不是正确的?
  • 如果你是使用proprietary mode,就像easylink里面的这种,速率可以设的更高,比如500kbps。

    轮询是最简单的一种避免多点同时上报数据发生冲突的方式。如果你希望提高传输效率,也可以使用更复杂一些的协议,比如给每个节点分配一个时隙等。
  • 你说的复杂的一点协议是自己在easy link 的demo里面自己实现还是自己去实现?你可有建议的DEMO可以我可以去调试下?Viki Shi 建议的WSN可以去尝试下吗? 还是我继续在 rfEasyLinkEchoTx/Rx 的demo上面自己修改?
  • 是的,你可以基于easylink实现自己的协议。

    另外,TI-15.4 stack是一套完整的星型网络协议,你也可以考虑。