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.

CC1310如何实现组网

Other Parts Discussed in Thread: CC1310

Hi,TI工程师,

想在cc1310上实现组网,节点30个左右差不多。有解决方案吗?

  • 您可以尝试 Contiki 6LowPAN ,是支持 CC13xx的。也有私有组网 ,在CCS下集成了Wireless Sensor Network组网例程,一对多 http://www.ti.com/tool/cc13xx-sw

  • 你好,

    目前还没有任何联盟为sub1g定义协议,你可以在上面自由的定义自己协议进行组网,比较灵活,可以基于虚拟地址或物理地址,路由等方式组网。我曾经模仿蓝牙的调频协议在CC1310里组网,是完成没问题的。若保存节点信息的话,30个肯定没问题的,若不保存节点信息,自由刷新,多少个都没问题。

    建议参考我们的SDK提供的基于EASYLINK的例程 : (concentrator 和node)这两个程序。

  •  (concentrator 和node)这两个例程没有解决冲突的问题。这个冲突又如何解决的??

  • K三9,

    来来,用TI的TI15.4stack. 

    http://www.ti.com/tool/TI-15.4-STACK

    或者像2楼推荐的contiki 6lowpan均可。

    BR. AZ

  • Designed for 915MHz FCC / 863MHz ETS  只支持这两个频率吗??

  • 我们有listen before talk这个例程,我把它整合到concentrator和node里面,我这样用过,是很好的解决了冲突问题。

  • 明年初就支持china band了。不远了。

    BR. AZ

  • hi Eggsy Pang:

    可以将你的这个例程发出学系学习吗?

  • Hi K999,

    不好意思,这几天都在忙,那么晚回复实在抱歉。

    由于协议这方面跟客户信息有关,不方便把这个文件给到您。我可以给你跟您看一下怎么实现防止冲突,主要是在下面一个EasyLink_transmit发送函数里面实现:

    EasyLink_Status EasyLink_transmit(EasyLink_TxPacket *txPacket)
    {
        EasyLink_Status status = EasyLink_Status_Tx_Error;
        if ( (!configured) || suspended)
        {
            return EasyLink_Status_Config_Error;
        }
        //Check and take the busyMutex
        if (Semaphore_pend(busyMutex, 0) == FALSE)
        {
            return EasyLink_Status_Busy_Error;
        }
        if (txPacket->len > EASYLINK_MAX_DATA_LENGTH)
        {
            return EasyLink_Status_Param_Error;
        }

        //store application callback
        memcpy(txBuffer, txPacket->dstAddr, addrSize);
        memcpy(txBuffer + addrSize, txPacket->payload, txPacket->len);
        //packet length to Tx includes address
        EasyLink_cmdPropTx.pktLen = txPacket->len + addrSize;
        EasyLink_cmdPropTx.pPkt = txBuffer;
        if (txPacket->absTime != 0)
        {
         RF_cmdNop.startTrigger.triggerType = TRIG_ABSTIME;
         RF_cmdNop.startTrigger.pastTrig = 1;
         RF_cmdNop.startTime = txPacket->absTime;
        }
        else
        {
         RF_cmdNop.startTrigger.triggerType = TRIG_NOW;
         RF_cmdNop.startTrigger.pastTrig = 1;
         RF_cmdNop.startTime = 0;
        }
           /* Set up the next pointers for the command chain */
           RF_cmdNop.pNextOp = (rfc_radioOp_t*)&RF_cmdPropCs;
           RF_cmdPropCs.pNextOp = (rfc_radioOp_t*)&RF_cmdCountBranch;
           RF_cmdCountBranch.pNextOp = (rfc_radioOp_t*)&EasyLink_cmdPropTx;
           RF_cmdCountBranch.pNextOpIfOk = (rfc_radioOp_t*)&RF_cmdPropCs;
           /* Customize the API commands with application specific defines */
           RF_cmdPropCs.rssiThr = RSSI_THRESHOLD_DBM;
           RF_cmdPropCs.csEndTime = (IDLE_TIME_US + 150) * 4; /* Add some margin */
           RF_cmdCountBranch.counter = CS_RETRIES_WHEN_BUSY;
          // asyncCmdHndl = RF_postCmd(rfHandle, (RF_Op*)&EasyLink_cmdPropTx,
           //          RF_PriorityNormal, txDoneCallback, EASYLINK_RF_EVENT_MASK);
           RF_runCmd(rfHandle, (RF_Op*)&RF_cmdNop, RF_PriorityNormal, &Wcallback, 0);
      status = EasyLink_Status_Success;
      RF_cmdNop.status = IDLE;
      RF_cmdPropCs.status = IDLE;
      RF_cmdCountBranch.status = IDLE;
      RF_cmdPropTx.status = IDLE;
      RF_cmdCountBranch.counter = CS_RETRIES_WHEN_BUSY;
       
        //Release the busyMutex
        Semaphore_post(busyMutex);

        return status;
    }
  • thanks Eggsy Pang,我试试。

  • 返回这个错误  PROP_ERROR_NO_FS (Synth was not programmed when running Rx or Tx)怎么解决??

  • hi Eggsy Pang.

    我按照你的方法试了好多次了,已加入lbt就接收不到数据,没有lbt的接收正常啊,不知道是什么解决了???

  • 有没有单步调试一下呢?或者用软件SmartRF Studio 作接收方试试看

  • concentrator和node里面都需要LBT吗?我移植LBT到NODE里,在concentrator这边一直显示WAITING FOR NODES。。。。

    能告知一下移植的主要步骤及要点吗?

  • 我也移植了这个,LBT机制的函数,我发现他们的例程中有application_setting这个头文件和源代码,但是我从node中全部拷贝过去还是不好用!

    能不能将的详细一点,移植都需要什么文件和参数配置