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.

[参考译文] CC2538DK:CC2538 ZED 至 CC2538 ZC 数据传输、每分钟1个样本

Guru**** 651100 points
Other Parts Discussed in Thread: Z-STACK, CC2538, CC2591, CC2592
请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/953072/cc2538dk-cc2538-zed-to-cc2538-zc-data-transfer-with-1-sample-per-minute

器件型号:CC2538DK
Thread 中讨论的其他器件:Z-stackCC2538CC2591CC2592

您好、先生、

我使用的是 z-stack mesh 1.0.0通用应用示例。 我想将模拟信号数据从多个终端设备传输到协调器。 我每分钟需要从每个节点采样1次、我的输入信号大约为1Hz。

1) 1)在其余时间、器件需要处于睡眠状态。

2) 2)如果 ZC 即使在使用 NV_RESTORE 后也重新启动、器件也不会重新连接到协调器。

3) 3)我想禁用所有外设(LCD、按钮等)以降低功耗、并执行此操作。

请帮助。

谢谢、此致

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

    您好!

    ZC 和 ZED 是否都使用 Z-Stack MESH 1.0.0?  

    您使用的是 CC2538 EVM、还是有定制板?

    [引用 user="shiva p]1)在剩余时间内,设备需要处于睡眠状态。

    如果 CC2538不需要执行其他活动、我认为默认情况下应启用低功耗。
    另外、请尝试参阅以下文章 :https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/369843


    [引用 user="shiva p]2)如果 ZC 在使用 NV_RESTORE 后重新启动,则设备不会重新连接到协调器。

    您能否共享捕获此行为的监听器日志?

    [引用 user="shiva p]3)我要禁用所有外设(LCD、按钮等)以降低功耗,但要执行此操作。[/引用]

    考虑在启动期间如何初始化/启用外设(例如 HAL_Board_init、 HalDriverInit 等,来自 main())。

    此致、
    Toby

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

    感谢您的回复、

    我仅使用 cc2538EVM。

    NV_RESTORE 现在工作正常。

    实际上、我希望每1分钟将 ADC 数据从 ZED 传输到 ZC。CC2538使用 Δ-Σ ADC、其时钟频率为4Mhz。 对于具有512抽取率的12位分辨率、我们将获得几乎7812个样本。 因此、我希望每分钟使用 ADC 对数据进行一次采样。

    对于12位分辨率4Mhz / 512 = 7812.5个采样并且转换时间=(512+16) 0.25usec = 132usec* 7812 = 1.03sec。

    根据我的计算,数据大小= 7812.5*12位= 93750位/8 = 11718.75字节的数据是否正确? 如何发送该数据以及有多少数据包。

    为此、我启用了使用的 ADC

    HalAdcInit ();
    HalAdcSetReference (HAL_ADC_REF_AVDD);在 genericapp_init()函数中仅适用于终端器件。

    使用

    我在这里假设封装尺寸为60、字节 ui16dummy[60];

     if (事件和 GENERICAPP_SEND_MSG_EVT)
     {
    #IF 定义(ENDDEVICE)
       int i = 0;
       ui16dummy[i]= HalAdcRead (HAL_ADC_CHN_AIN6、HAL_ADC_Resolution_12);
       i++;
       IF (I =(PACKETSIZE-1))
       {
         I=0;
       }
       printf ("%s"、ui16dummy);
       HalUARTWrite (HAL_UART_PORT_0、ui16dummy、60);
       HalUARTWrite (HAL_UART_PORT_0、"\r\n"、2);
    #endif
       //发送“该”消息
       GenericApp_SendTheMessage();
       OSAL_SET_EVENT (GenericApp_TaskID、GENERICAPP_SEND_MSG_EVT);

       //设置以再次发送消息
       
         /*
       OSAL_START_timerEx (GenericApp_TaskID、
                           GENERICAPP_SEND_MSG_EVT、
                           txMsgDelay);
       *

       //返回未处理的事件
       返回(事件^ GENERICAPP_SEND_MSG_EVT);
     }

    上述代码是否正确?

    可在不按按钮的情况下从终端设备发送 matchdescreq。

    案例 ZDO_State_change:
             GenericApp_NWkState =(devStates_t)(MSGpkt->HDR.status);
             //if ((GenericApp_NWKState =DEV_ZB_COord)||
              //   (GenericApp_NWkState =DEV_router)||
             //    (GenericApp_NWkState =DEV_END_DEVICE))
            //{
             
    #if defined (ENDDEVICE)(如果已定义)
             if (GenericApp_NWkState =DEV_END_DEVICE)
             {
               dstAddr.addrMode = Addr16Bit;
               dstAddr.addr.shortAddr = 0x0000;            //NWK_broadcast_SHORTADDR;
               ZDP_MatchDescReq (&dstAddr、0x0000、
                                 GENERICAPP_PROFID、
                                 GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、
                                 GENERICAPP_MAX_CLUSTERSICS、(CID_t *) GenericApp_ClusterList、
                                 false );
        
         ////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////
               //开始定期发送“该”消息。
             /*
             OSAL_START_timerEx (GenericApp_TaskID、
                                  GENERICAPP_SEND_MSG_EVT、
                                  GENERICAPP_SEND_MSG_TIMEOUT );
        *
            }
               
    #endif

    上述假设和代码是否正确?

    请澄清问题。

    谢谢、此致

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

    您使用的是什么 ADC? 如果是针对 TI 的、我建议您在 https://e2e.ti.com/support/data-converters/f/73上发帖 以检查您的 ADC 参数计算。

    就 Zigbee 而言:

    60字节的有效载荷应该正常(Zigbee 支持高达128字节的完整数据包大小)。 过去、我在有效载荷中使用的最大值为82字节(这将计入分配给标头的数据包字节等)。

    将报告多少台设备?
    对于~12000字节的数据、60字节的数据需要200个数据包。 每个数据包大约需要4ms (128字节* 8位/字节* 250kbps)。 另一个注意事项是在 ZC 中处理该数据。
    如果您在设置中看到网络带宽问题、我建议延长报告频率或减少每个设备的报告数据。

    我不会立即看到您的代码有任何问题。
    不过、我看不到检测所有数据包是否已发送的机制? 乍一看、您似乎总是在触发 GENERICAPP_SEND_MSG_EVT。

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

    我使用的是板载 ADC、它是 Δ-Σ ADC。

    我想在网络中使用10个终端设备。

    不过、我看不到检测所有数据包是否已发送的机制?

    如何做到这一点、请提出建议。

    出于 ADC 原因、您可以将此问题转给 TI 的其他人员。

    谢谢



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

    由于要发送的数据包数量已知、因此一种简单的方法是使用计数器。

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

    您好、先生、

    我能够将 ADC 数据从 ZED 传输到 ZC。

    我已经在封闭的房间中使用板载天线、测试了它的范围大约为1.5米。 z 堆栈中的默认 I TX 功率设置是多少? 在 z-stack 中的什么位置可以找到它? 它是否在 z-stack 中固定为7dm?

    我浏览了 CC2538的文档、输出标称功率为7dBm、因此我想将 TX 功率增加到7dBm。

    我已使用 PER TEST 菜单中提供的各种可编程 TX 功率(7dBm、3dBm、0dBm、-3dBm、-9dbm、-15dbm)完成了每次测试、7dBm 时的结果高达6米。

    如果已在 z 堆栈中设置 TX 功率7dBm、则在执行每项测试的同一环境中、连接限制在1米半的范围内。

    我想将板载天线更改为外接天线、即 SMA 天线、以实现更好的覆盖范围。 需要考虑什么?

    由于功耗原因、我不想使用范围扩展器(CC2591和 cc2592)。

    请澄清问题

    谢谢、此致

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

    您的文章 e2e.ti.com/.../956236将继续支持此射频问题