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.

[参考译文] 编译器/CC3220SF-LAUNCHXL:AWS -物联网 SNTP 同步问题

Guru**** 2578945 points
Other Parts Discussed in Thread: CC3220SF-LAUNCHXL

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

https://e2e.ti.com/support/wireless-connectivity/wi-fi-group/wifi/f/wi-fi-forum/930385/compiler-cc3220sf-launchxl-aws-iot-sntp-sync-issue

器件型号:CC3220SF-LAUNCHXL

工具/软件:TI C/C++编译器

我正在尝试使用"SimpleLink_CC32xx_v2_10_00_04" SDK 以及 AWS - IOT FreeRTOS 来获取 CC3220SF-LAUNCHXL 器件的 NTP 时间。

我尝试按照2种方法进行同步、但方法1的方法为-100方法2的方法为-102。  

请查找我尝试过的以下错误和源代码、并帮助解决此问题。

方法#1:SNTP getTime (NULL、 0、 &timeval、 &ntpTimeStamp);

返回的错误代码: SNTP EGETHOSTBYNAMEFAIL     (-100)
源代码:
int32_t RetVal;
uint32_t 秒;
uint32_t secondsFraction;
slNetSock_Timeval_t timeval;
uint64_t ntpTimeStamp = 0;

timeval.tv_sec = 5;
timeval.tv_usec = 0;
RetVal = SNTP getTime (NULL、0、&timeval、&ntpTimeStamp);

IF (RetVal = 0){
//秒值存储在高32位中
秒=(0xFFFF00000000和 ntpTimeStamp)>>32;
//秒分次存储在低32位中
secondsFraction = ntpTimeStamp;

IotLogInfo ("NTP 时间:%d\n"、辅助帧);

}
否则
{
IotLogInfo ("NTP 时间错误:%d\n"、RetVal);
}

方法#2:ntp_getTimeByAddr ((SlNetSock_Addr_t *)&ipv4addr、 &timeval、 &ntpTimeStamp);

返回的错误代码 : SNTP (        -102)
源代码:
uint32_t DestIP[1];

int32_t RetVal;
uint32_t 秒;
uint32_t secondsFraction;
slNetSock_Timeval_t timeval;
uint64_t ntpTimeStamp = 0;
SlNetSock_AddrIn_t ipv4addr;
ipv4addr.sin 系列= SLNETSOCK_AF_iNet;
ipv4addr.sin 端口= SlNetUtil_htons (80);
ipv4addr.sin addr.s_addr = SlNetUtil_htonl (DestIP[0]);
timeval.tv_sec = 5;
timeval.tv_usec = 0;
RetVal = SNTP_getTimeByAddr ((SlNetSock_Addr_t *)&ipv4addr、&timeval、&ntpTimeStamp);
if (RetVal = 0){
//秒值存储在高32位中
秒=(0xFFFF00000000和 ntpTimeStamp)>>32;
//秒分次存储在低32位中
secondsFraction = ntpTimeStamp;

IotLogInfo ("NTP 时间:%d\n"、辅助帧);

}
其他
{
IotLogInfo ("NTP 时间错误:%d\n"、RetVal);
}



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

    您好!

    您是否使用由 AWS 提供的 AWS FreeRTOS 版本? 在这种情况下、他们的 SDK 可能使用其他 SNTP 方法。 您在此处引用的函数似乎来自 TI AWS IoT 插件。 我建议您查看 AWS FreeRTOS SDK 提供的 API,并查看是否有与您尝试使用的 SNTP_*()调用等效的 API。

    此致、
    Michael

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

     您好、Michael、

    感谢您的回答、

    根据 AWS-FreeRTOS 论坛的建议、未提供 API 与 NTP 服务器同步。 请找到以下链接供您参考  

    https://forums.freertos.org/t/aws-freertos-ticc3220sf-launchxl-ntp-synchronization-issue/10456。

    请建议其他方法来启用与 NTP 服务器的同步。

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

    您好!

    使用 SDK 中提供的 SNTP 库很可能是最简单的前进路径。 调试导致 SNTP 函数返回-100和-102的根本原因、并使其与 AWS 代码配合使用是获取 SNTP 功能所应执行的操作。

    我的文章中提到了一些调试步骤: https://e2e.ti.com/support/wireless-connectivity/wifi/f/968/p/671717/2471813#2471813

    请查看并尝试列出的步骤、即确保正确执行 slnetsock 库的初始化、然后查看 CC32xx SDK 中用于使用 SNTP 函数和更广泛的 slnetsock 函数的示例。

    此致、

    Michael