?這周接手了另一個同事用合宙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中斷。看樣子是和休眠模式沒有關系的。
審核編輯 黃宇
?
-
4G
+關注
關注
15文章
5517瀏覽量
118983 -
模組
+關注
關注
6文章
1488瀏覽量
30364 -
MQTT
+關注
關注
5文章
650瀏覽量
22487
發布評論請先 登錄
相關推薦
評論