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.

[参考译文] CC2530:发送多个命令时冻结几秒钟

Guru**** 2465890 points
Other Parts Discussed in Thread: CC2591, CC2530

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/1138229/cc2530-a-few-seconds-freeze-when-sending-multiple-commands

器件型号:CC2530
主题中讨论的其他器件:CC2591

大家好、

发送多个命令时、例如使用 zcl_SendReportCmd、我的 CC2530+CC2591往往会冻结几秒钟。 如果我发送命令时有几毫秒的延迟(使用计时器)、则一切都很好。

我的内存不足或什么?

我使用不同的输入参数值重复同步调用的代码如下所示:

static void zclZ8_ReportOnOff( uint8 endpoint )
{
  const uint8 NUM_ATTRIBUTES = 1;
  zclReportCmd_t *pReportCmd;
  pReportCmd = osal_mem_alloc(sizeof(zclReportCmd_t) + (NUM_ATTRIBUTES * sizeof(zclReport_t)));
  if (pReportCmd != NULL) {
    pReportCmd->numAttr = NUM_ATTRIBUTES;
    zclZ8_DstAddr.addrMode = (afAddrMode_t)Addr16Bit;
    zclZ8_DstAddr.addr.shortAddr = 0;
    zclZ8_DstAddr.endPoint = 1;
    pReportCmd->attrList[0].attrID = ATTRID_ON_OFF;
    pReportCmd->attrList[0].dataType = ZCL_DATATYPE_BOOLEAN;
    pReportCmd->attrList[0].attrData = (void *)&(zclZ8_OnOff[endpoint]);
    zcl_SendReportCmd(endpoint + 1, &zclZ8_DstAddr,
                      ZCL_CLUSTER_ID_GEN_ON_OFF, pReportCmd,
                      ZCL_FRAME_CLIENT_SERVER_DIR, false, zclZ8SeqNum++);
  }
  osal_mem_free(pReportCmd);
}

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    在循环中连续发送数据包会产生此类问题。 使用计时器事件发送数据包是正确的。

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ra、

    您可以尝试增大 NWK_MAX_DATABUFS_*,但 CC2530在 RAM 上已经受到限制。  最好将 zcl_SendReportCmd 消息分配到多 个节点、或将消息广播到路由器和非休眠终端设备。

    此致、
    Ryan