TI中文支持网
TI专业的中文技术问题搜集分享网站

CC1310如何实现组网

Hi,TI工程师,

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

Susan Yang:

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

Eggsy Pang:

你好,

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

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

k999:

回复 Eggsy Pang:

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

Albin Zhang:

K三9,

来来,用TI的TI15.4stack. 

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

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

BR. AZ

k999:

回复 Albin Zhang:

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

Albin Zhang:

回复 k999:

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

BR. AZ

k999:

回复 Eggsy Pang:

hi Eggsy Pang:

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

Eggsy Pang:

回复 k999:

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;}

k999:

回复 Eggsy Pang:

thanks Eggsy Pang,我试试。

赞(0)
未经允许不得转载:TI中文支持网 » CC1310如何实现组网
分享到: 更多 (0)