嵌入式技术论坛
直播中

杨万富

7年用户 1498经验值
擅长:526774
私信 关注
[经验]

求解关于AT ESP8266 无法实现NTP时间同步的问题?

这两天一直在使用ENV构建GD32的项目,其中主要是使用AT CLIENT操作ESP8266,通过AP模式与手机直接通信,通过STA模式连接到云。目前各种组件已经初始化成功,ESP8266能够正常联网,本以为可以大功时,却发现NTP无法同步。关于NTP配置的各种文档看了很多,使用都很简单,没有特殊的配置要求。但是搞了一下午没有任何进展。希望各位前辈帮忙分析。
1.png
如上图,组件全部加载成功,NTP已经设置为自动启动,但是超时。
2.png
我仔细看了ntp.c,没有发现问题,将AF_INET改为AF_AT更换最新的NTP.C版本都不能成功。
8ca9625fe76fc00920f34ea4df576f96.png.webp.jpg
后来又将现有的程序简化,简化后报警依据,另外还出了新的报警。
4.png
AT SOCKET接收超时是否是造成NTP无法同步的真正原因。
AT+CIPDNS_CUR等等带有_CUR部分的AT指令,由于ESP8266固件问题,不支持,将_CUR部分删除,至少不打印报警信息。不清楚这部分是否有影响。
另外PING3个NTP服务器都能够正常通信,应该说通信已经建立,分析应该是AT SOCKET部分问题,但是目前水平有限,折腾多半天,没有任何进展,项目时间紧,希望高手们能多多帮助。谢谢!

回帖(10)

贾小龙

2022-3-15 14:37:40
抓个包看看到底是没发还是没收到呗,你这个Ping的时间也是错的吧。
举报

杨万富

2022-3-15 14:39:03
是的,跟windows的PING命令对比,确实时间不对,而且From的IP地址都是0也不对。
1.png
举报

刘埃生

2022-3-15 14:39:33
请确认你的ESP8266的固件需要升级到最新,另外这个问题的原因可能是你串口驱动的问题。
举报

杨万富

2022-3-15 14:40:54
您好我用的是这个固件,并不是标准的AT固件!
2.png
当时只是想用AT指令直接操作ESP8266,看了rtthread有很多组件可以直接使用,想直接用AT CLIENT和AT DEVICE,串口驱动应该是GD官方做的BSP,我是在GD32E303E的BSP基础上修改的,里面使用了DMA,怎么样确认是不是串口驱动问题?谢谢!
举报

刘埃生

2022-3-15 14:41:22
你把esp8266的固件升级一下试试
举报

杨万富

2022-3-15 14:41:37
您好,我没有升级固件,修改了at_socket_esp8266.c,重新适配了目前的ESP固件,可以正常PING通。但是NTP还是无法同步。从打印的记录分析,串口已经接收到了NTC服务器回复的48个字节数据。您看还有哪里需要检查。上面已经有截图了,我就不重复发了
举报

訾存贵

2022-3-15 14:41:50
rtc需要使能
举报

杨万富

2022-3-15 14:42:09
使能了,而且已经自动初始化。MSH命令直接输入date可以查询或设置日期和时间。
举报

李玉兰

2022-3-15 14:42:27
核心问题就是AT+CIPDNS_CUR执行失败,dns失败获取不到ip,当然也ping不通了
问题基本可以确定是8266固件问题
举报

杨万富

2022-3-15 14:42:39
收到,我看了论坛也有遇到同样问题的朋友,应该是固件的问题。有了方向我再仔细看看。非常感谢!
举报

更多回帖

发帖
×
20
完善资料,
赚取积分