微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI无线射频设计 > CC1310如何实现组网

CC1310如何实现组网

时间:12-23 整理:3721RD 点击:

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均可。

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

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

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

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中全部拷贝过去还是不好用!

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

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top