嵌入式技术论坛
直播中

杨平

7年用户 1604经验值
私信 关注
[问答]

at_device软件包ec200例程运行不稳定是哪儿的问题呢

一个网络应用,采用ec200u的cat1模块,开启at_device软件包,设置使用power引脚和status引脚,应用官方提供的tcpclient.c例子修改的应用代码,程序每隔一分钟向服务器发送一个数据包,开始的一段时间都正常,运行300次后候就连不上网了,,打开at raw 调试显示,一直在重复执行AT+CSQ和AT+CGREG,应用很不稳定,这个到底是哪儿的问题呢?ec200软件包卡在这条命名之后,就一直没有响应了,按道理ec200软件包在多次重试连接不成功会自动退出,但是为什么一直卡在这儿呢?

1.jpg

追踪了好几天,跑飞从这儿开始

1.jpg

明明ATI已经执行了,但是还还是显示超时。

而且这时ec200x软件包明显跑飞了,一直在重复执行AT+CSQ和AT+CGREG,

看了源代码中不可能出现重复执行的,要么就就会退出初始化。

1.jpg

回帖(3)

刘满贵

2022-11-17 10:34:39
通信模块(特别是公网无线模块)是一个内置CPU的系统,为了可靠工作你必须在你的软件里增加故障(异常)恢复机制;
1 心跳包机制保证TCP链接正常,否则断开重连;
2 模块重启机制,多次重连无效或模块无响应(错误响应)重新启动模块(彻底断电重新上电最好);
举报

王辉

2022-11-17 10:34:48
除了心跳包机制来确保连接之外,我觉得在调试的时候可以把 AT 指令交互的过程也给显示出来,根据提示,ATI 是查询设备的ID,这个命令和网络无关这个命令无响应的话要不就是串口那边解析有问题了,要不就是模块故障了。
可以把下面这两个配置打开,这样就可以看到 AT 指令的交互过程,把日志存起来,有问题的时候就可以看 AT 指令交互过程看看是哪一步出了问题。
1.jpg
举报

王平

2022-11-17 10:35:32
“ATI timeout” 后面那个 “RDY” 才是问题关键。
至于RDY后面的CSQ和CGREG,那是ec200x_check_link_status_entry线程检查网络状态的输出。
举报

更多回帖

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