微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 关于CC2530的zigbee发送选择广播模式的ACK问题

关于CC2530的zigbee发送选择广播模式的ACK问题

时间:10-02 整理:3721RD 点击:

  各位好,最近发现CC2530在进行广播发送数据时,发送选项选择需要ACK,在多个设备接收时,用sniffer抓包,发现虽然有多个设备接收,但是只有一个ACK,我能理解有ACK,可是这个ACK是谁发送的呢,两个接收设备为什么只有一个ACK,难道是两个接收设备之间有辨别?这个不应该吧,求人来解惑一下。

你是用AF_DataRequest();这个函数发送数据么?

函数里对广播进行了限制了,不能够使能ACK,如下:

...

req.txOptions = 0;

if ( ( options & AF_ACK_REQUEST ) &&
( req.dstAddr.addrMode != AddrBroadcast ) &&
( req.dstAddr.addrMode != AddrGroup ) )
{
req.txOptions |= APS_TX_OPTIONS_ACK;
}

...

我是用的是TIMIC的进行测试的,用的是MSA_McpsDataReq()函数进行发送的

贴上函数的代码

void MSA_McpsDataReq(uint8* data, uint8 dataLength, bool directMsg, uint16 dstShortAddr)
{
  macMcpsDataReq_t  *pData;
  static uint8      handle = 0;

  if ((pData = MAC_McpsDataAlloc(dataLength, msa_securityLevel, msa_keyIdMode)) != NULL)
  {
    pData->mac.srcAddrMode = SADDR_MODE_SHORT;
    pData->mac.dstAddr.addrMode = SADDR_MODE_SHORT;
    pData->mac.dstAddr.addr.shortAddr = dstShortAddr;
    pData->mac.dstPanId = msa_PanId;
    pData->mac.msduHandle = handle++;
    pData->mac.txOptions = MAC_TXOPTION_ACK;

//    pData->mac.txOptions = MAC_TXOPTION_NO_RETRANS;
    /* MAC security parametcers */
    osal_memcpy( pData->sec.keySource, msa_keySource, MAC_KEY_SOURCE_MAX_LEN );
    pData->sec.securityLevel = msa_securityLevel;
    pData->sec.keyIdMode = msa_keyIdMode;
    pData->sec.keyIndex = msa_keyIndex;

    /* If it's the coordinator and the device is in-direct message */
    if (msa_IsCoordinator)
    {
      if (!directMsg)
      {
        pData->mac.txOptions |= MAC_TXOPTION_INDIRECT;
      }
    }

    /* Copy data */
    osal_memcpy (pData->msdu.p, data, dataLength);

    /* Send out data request */
    MAC_McpsDataReq(pData);

  }

}

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

网站地图

Top