当前位置: 首页 > article >正文

休眠唤醒不了?你的4G模组不是装睡,而是少了一条指令…

这周接手了另一个同事用合宙Air780EP模块没做完的项目,刚上手之后就发现了一个问题:

在通过AT+CSCLK=2进入休眠之后,连接MQTT服务器,从服务器端下行消息到模块唤醒,并且触发RI脚的下降沿,以此唤醒MCU——但实际却唤醒不了。

问题排查及解决方式记录如下,希望对遇到类似情况的朋友有所帮助。

图片

一、通过自测缩小问题范围

在做过以下测试后,问题基本上锁定了。

1. 进入休眠后,MQTT链接是否有断开:

使用AT+MQTTSTATU指令查看MQTT链接状态,
返回结果是:+MQTTSTATU :1

说明链接是存在的,没有断开。

2. 服务端下行的数据模块是否有收到:

检测main_uart串口的URC上报,发现在下发消息的时候,模块有上报:
+MSUB: "/topic",10 byte,1234567890

说明数据可以正常收到。

3. 用逻辑分析仪或者示波器检测下RI脚波形:

发现在进入休眠后,和服务器下发消息,模块收到URC整个流程中——RI脚都没有出现下拉的波形,说明RI脚的功能有问题?

从Air780EP官网资料的硬件设计手册,找下RI脚的位置有没有量错,嗯~ 是20脚没有错。

合宙Air780EP最新资料:

https://www.air780ep.cn/

图片

二、找到了解决方法

通过合宙资料摸索了一小下,看到AT手册第58页有一条指令:

设置RI指示功能:AT+CFGRI

这条指令的功能,就是打开在Air780EP模块接收到TCP/UDP/FTP/HTTP/MQTT的URC时,就会产生RI脚120ms的低脉冲,也就是给予MCU的下降沿。

AT指令手册:

https://doc.openluat.com/article/4985

图片

休眠流程中,进入休眠之前加一条这个AT+CFGRI=1的指令后,重新尝试了下,果然可以了。

在收到MQTT下行数据时,RI脚正确产生一个下降沿,唤醒了主控,大致业务逻辑没问题了!

三、总结及建议 

要想Air780EP模块可以通过网络服务端下行数据,以此来唤醒模块以及唤醒主控,节省功耗的话:

需要接入模块的RI脚,并且在流程中(最好是开机后就配置,作为初始化的流程)加入一条 AT+CFGRI=1 指令才可以。

并且通过实测,不管进入任何休眠模式:

例如:
AT+CSCLK=1
AT+POWERMODE="PSM+"

都需要配置AT+CFGRI=1这个指令后,才可以触发RI中断。看样子是和休眠模式没有关系的。


http://www.kler.cn/a/325950.html

相关文章:

  • 【DQ Robotics】基于SVD的全秩矩阵逆
  • STM32完全学习——使用标准库点亮LED
  • 9.C++面向对象6(实现一个较为完善的日期类)
  • HarmonyOS 如何获取设备信息(系统、版本、网络连接状态)
  • 计算机视觉 1-8章 (硕士)
  • vue+svg圆形进度条组件
  • Spring Mvc 基础源码分析
  • OceanBase 关于一号表笔记与ERROR 1060(42S21)问题
  • 表驱法优化代码
  • 入职2年的程序员,被劝退了!年纪大了,感觉好绝望!
  • Studying-图论包含的算法总结
  • [Python学习日记-31] Python 中的函数
  • Java开发:文件上传和下载
  • PCL 移动立方体重建(HOPPE)
  • STM32引脚PB3、PB4、PA15作为输入输出的特殊配置
  • mysql代理服务器
  • 自然语言处理实战项目
  • MinIO使用客户端进行桶和对象的管理
  • OpenCV视频I/O(1)视频采集类VideoCapture介绍
  • Mybatis-Mapper接口方式
  • SpringBoot依赖之Microsoft SQL Server Driver
  • 谈谈Redisson分布式锁的底层实现原理
  • 怎么提取视频里的音频?非常简单的提取音频方法
  • 上下位关系自动检测方法(论文复现)
  • Stargazers Ghost Network在GitHub平台上的隐性威胁
  • 大数据复习知识点4