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.

[参考译文] CCS/LPSTK-CC1352R:在收集器 UI 中实现时间戳

Guru**** 2586265 points


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

https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz-group/sub-1-ghz/f/sub-1-ghz-forum/935741/ccs-lpstk-cc1352r-implementing-timestamp-in-collector-ui

器件型号:LPSTK-CC1352R

工具/软件:Code Composer Studio

您好!  

我正在关注 SimpleLink SDK 中的 collector_CC1352R1_LaunchXL_tirtos_ccs 示例。  [ https://dev.ti.com/tirex/explore/node?node=AIKcHFRMmg0MRAyz1RySsg__pTTHBmu__LATEST]

我想在收集的数据中添加一个时间戳。 我正在以1.6kHz 的频率从加速计传感器接收数据、并且需要为每个读数分配时间戳。 这需要达到纳秒或微秒精度。 我能否详细介绍一下实现此功能所需的代码/屏幕截图。

谢谢、

Richard

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

    您好 Richard、

    您可以使用 Clock_getTicks (RTC 计时器计数、32kHz 时钟、源)或 RF_getCurrentTime (RAT 计时器计数、4MHz 时钟、源)。  传感器示例中提供了用于计算端到端延迟的 Clock_getTicks 示例。

    https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_4_20_01_04/docs/tirtos/sysbios/docs/cdoc/index.html 
    https://dev.ti.com/tirex/content/simplelink_cc13x2_26x2_sdk_4_20_01_04/docs/rflib/html/group__rf__driver.html 
    https://e2e.ti.com/support/wireless-connectivity/zigbee-and-thread/f/158/t/932970 
    https://dev.ti.com/tirex/explore/node?node=AEyWHeyj-.vUUkDNMkhtTA__pTTHBmu__LATEST 

    此致、
    Ryan

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

    您好、Ryan、

    我对所有的联系都进行了很好的探索、但仍然有点迷路。 我已经成功打印了 Clock_getTicks()和 RF_getCurrentTime(),但不确定这些值代表什么。 我知道它们是刻度、而不是微秒。 我无法跟踪您提供的其他 e2e 支持线程。

    您能向我介绍一下如何为从传感器读取的每个数据获取微秒精度时间。 我在传感器示例中找到了相关代码:  

    bool Sensor_sendMsg (Smsgs_cmdIds_t 类型、apiMac_sAddr_t * pDstAddr、
    bool rxOnIdle、uint16_t len、uint8_t *pData)

    bool ret = false;
    /*有关网络的信息*/
    ApiMac_mcpsDataReq_t dataReq;

    /*用于计算端到端延迟的时间戳*/
    #ifdef OSAL_PORT2TIRTOS
    startSensorMsgTimeStamp = Clock_getTicks();
    其他
    startSensorMsgTimeStamp = iCall_getTicks();
    #endif

    /*构造数据请求字段*/
    memset (&dataReq、0、sizeof (ApiMac_mcpsDataReq_t));
    memcpy (&dataReq.dstAddr、pDstAddr、sizeof (apiMac_sAddr_t));

    /*设置正确的地址模式。 *
    if (pDstAddr->addrMode = ApiMac_addrType_extended)

    dataReq.srcAddrMode = ApiMac_addrType_extended;

    其他

    dataReq.srcAddrMode = ApiMac_addrType_short;

    if (重新加入=true)

    /*从 Mac 获取新的 panID */
    ApiMac_mlmeGetReqUint16 (ApiMac_attribute_panId、
    和(parentInfo.devInfo.panID));

    dataReq.dstPanId = parentInfo.devInfo.panID;

    dataReq.msduHandle = getMsduHandle (type);

    dataReq.txOptions.ack = true;

    if (certation_test_mode)

    dataReq.txOptions.ack = false;

    if (rxOnIdle = false)

    dataReq.txOptions.indirect = true;

    dataReq.MSDU.len = len;
    dataReq.MSDU.p = pData;

    #ifdef feature_MAC_security
    #ifdef feature_secure_commissioning

    extern ApiMac_sAddrExt_t ApiMac_extAddr;
    sm_getSrcDeviceSecurityInfo (ApiMac_extAddr、SM_Sensor_sAddress、&dataReq.sec);

    其他
    Jdllc_securityFill (dataReq.sec);
    #endif // feature_secure_commissioning */
    #endif // feature_MAC_security */

    if (type =Smsgs_cmdIds_sensorData || type =Smsgs_cmdIds_rampdata)

    sensor_msgStats.msgsAttemped++;

    否则 if (type == Smsgs_cmdIds_trackingRsp)

    sensor_msgStats.trackingResponseAttempts++;

    否则、如果(type = Smsgs_cmdIds_configRsp)

    sensor_msgStats.configResponseAttempts++;

    /*发送消息*/
    if (ApiMac_mcpsDataReq (&dataReq)== ApiMac_STATUS_SUCCESS)

    RET = true;

    其他

    /*通过重试处理事务溢出*/
    if (type =Smsgs_cmdIds_sensorData || type =Smsgs_cmdIds_rampdata)

    SSF_setReadingClock (configSettings.reportingInterval);

    返回(RET);

    不过,我不知道从哪里来。

    谢谢、

    Richard

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

    Clock_tick_period 为10us、TICKPERIOD_MS_US (1000/clock_tick_period)用于将传感器的 endToEndDelay 周期从 us 转换为 ms。  所有这一切都可以说 Clock_getTicks 将为您提供10us 的分辨率。

    此致、
    Ryan

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

    您好、Ryan、

    那么、getClock_ticks ()为我提供自应用程序启动以来的节拍数、如果我计算出旧的和新的 getClock_tick 之间的差异、这是自上次读取以来的节拍数、即结束到结束延迟?  然后、我可以将节拍数乘以10、以微秒为单位给出时间?

    RF_getTime()呢?

    正如您可能知道的、我更希望通过全面的工作来理解!

    我尝试在收集器中为加速计的每个新读数写入该时间戳。

    最棒的

    Richard

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

    您好 Richard、

    现在、您已经正确了解 Clock_getTicks。  RF_getCurrentTime 以每微秒4个周期为单位。  https://e2e.ti.com/support/wireless-connectivity/sub-1-ghz/f/156/t/637395 

    此致、
    Ryan