上海域格ASR平台4g模块低功耗应用指导
1.普通休眠唤醒方法
1.1 USB支持 suspend/resume
当主机支持 suspend/resume 时,可通过以下方式对模块进行休眠唤醒操作。
休眠流程:
发送命令 AT+CSCLK=1使能模块休眠功能(CAT1模块需禁用RNDIS拨号)。
断开USB。
唤醒方式:
连接 USB。
1.2 USB不支持suspend/resume
当主机不支持suspend/resume 或 主机和模块仅通过UART口连接时,可根据情况选择以下方式中的一种对模块进行休眠唤醒操作。
1.2.1 GPIO休眠唤醒
该休眠方式默认关闭,开启需发送 AT^GPIOWAKE=1(重启生效,仅需设置一次)。
休眠流程:
开机初始化发送命令 AT+DISABLEUSB=1断开模块内部 USB连接,每次开机发一次即可,后面进休眠不需要再发(CAT4模块不支持该指令)。
AT+CSCLK=1 断开模块内部 UART 连接(每次开机发一次即可,后面进休眠不
需要再发)。
拉高 WAKEUP_IN 引脚,使模块进入休眠(开机后第一次休眠只需发送 AT 指令即可,唤醒模块后再进入休眠需要一直拉高WAKEUP_IN引脚,高电平触发)。
唤醒方式:
拉低 WAKEUP_IN引脚,使模块唤醒。
注:
CAT4 miniPCIE 模块 WAKEUP_IN 引脚为第 32脚;
CAT1 miniPCIE 模块 WAKEUP_IN 引脚为第 19脚;
CLM920 AC3、CLM920 AC3 等贴片模块 WAKEUP_IN引脚为第 1 脚。
2.数据唤醒方法
支持型号 CAT4:CLM920 AC3;CAT1:CLM920 RC3、RE3、RV7、KV3、YV9
等,需使用低功耗版本。
2.1应用场景1
主控无操作系统,如单片机等,周期上传数据,有远程唤醒需求,使用uart口收发数据使用内嵌AT指令,需要使用心跳机制维持tcp长连接,控制模块进入休眠使用WAKEUP_IN(或者DTR)引脚,模块唤醒主控使用RI引脚。
初始化指令:
AT+YGFEATURECFG=128,0 //只需设置一次即可
AT+CFUN=1,1 //重启生效
AT+YGFEATURECFG? //确认 sleep8 是否为“1”
2.1.1建立socket连接
AT+QIPOPEN=1,1,“TCP”,“192.168.0.100”,12346,0,1 //(0非主动上报模式,主动 上报模式)建立TCP连接
AT+QIPSEND=1,200 //发200个数据
RECVFROM: //收数据主动上报服务器返回数据
2.1.2进入低功耗模式
AT+QISWTMD=1,0 //切换到非主动上报模式 唤醒数据到来时先缓存并通知主控,由主控主动读取数据
主控拉高WAKEUP_IN(或者DTR) 进入休眠 (模块进入休眠时会拉低RI脚)
主控进入低功耗模式,检测ri中断,设置心跳定时器
2.1.3心跳
根据运营商的NAT超时规则,tcp连接在NAT超时时间内一直没有数据收发,链路会被清除,心跳间隔需要小于NAT超时时间,一般设置设置3-5分钟,3分钟比较通用,5分钟功耗更低。
由主控发送心跳,主控采集到数据或者心跳定时器到达指定时间
(1)主控拉低WAKEUP_IN 退出休眠(模块拉高RI脚)
(2) AT+QISWTMD=1,1 //切换到主动上报模式
(3) AT+QIPSEND=1,200 //发心跳数据
(4) AT+QISWTMD=1,0 //切换到非主动上报模式
(5) 主控拉高WAKEUP_IN 进入休眠 (模块拉低RI脚)
由4g模块发送心跳
①主控在休眠前设置好心跳参数,发送AT指令切换为心跳模式
AT+SLEEPCFG=1,180,“31323334”,1 //第一路socket,心跳时间180s,hex 心跳包,使能模块心跳1
②主控拉高WAKEUP_IN 进入休眠 //模块拉低RI脚
2.1.4唤醒
网络唤醒
手机等app发送唤醒信号给服务器,服务器发送唤醒包给指定设备。
模块拉高RI脚通知上位机
主控拉低WAKEUP_IN 退出休眠 (模块拉高RI脚)
主控收到RI信号,发送 AT+QIPREAD=1 //查询收数据长度
AT+QIPREAD=1,length //读取数据
AT+QISWTMD=1,1 //切换回主动上报模式
操作完后设置心跳参数,根据步骤2.1.2走休眠流程
2.2 应用场景2
主控有操作系统,如户外摄像头等,有远程唤醒需求,使用usb虚拟出来的网卡上网。操作系统一般使用linux或者liteos,支持rndis或者ECM网卡
2.2.1驱动支持
修改主控驱动支持TTYUSB,使用TTYUSB1作为AT口
2.2.2休眠
初始化指令: AT+YGFEATURECFG=128,0 //只需设置一次即可
AT+CFUN=1,1 //重启生效
AT+YGFEATURECFG? //确认 sleep8 是否为“1”
① 开启需发送AT^GPIOWAKE=1(重启生效,仅需设置一次)
② 设置休眠参数,如 AT+ENTERSLEEPHEX=1 设为 HEX,默认为 1,实际发送给服务器会转换成原始数据(0为原始数据,有特殊字符时建议 HEX 模式)
③ 设置服务器、心跳包、唤醒包信息,如服务器地址 192.168.0.100,服务器端口号12346,心跳间隔 180,心跳包发“sleep12345” ,唤醒包发“wake123”,
登录包为“login” 、应答包为“ok” 、心跳包回复“data” (任意数据唤醒,唤醒
包可设置为空“” ;无登录包以及应答包可将登录包以及应答包设置为空“” )
AT+ENTERSLEEPHEX=1时可设置以下:
AT+ENTERSLEEP=“192.168.0.100”,12346,180,“736c6565703132333435”,“77616B65313233”,“6c6f67696e”,“6f6b”,“64617461”
AT+ENTERSLEEPHEX=0时可设置以下:
AT+ENTERSLEEP=“192.168.0.100”,12346,180,“sleep12345”,“wake123”,“login”,“ok”,“data”)
AT+ENTERSLEEP参数说明:
AT+ENTERSLEEP=<server_ip>,<server_port>,<in_t erval>,<heartbeat_data>,<wakeup_data>,<auth_data>,<auth_resp>,<heartbeat_resp>
<server_ip>:服务器地址;
<server_port>:服务器端口号;
<in_terval>:心跳间隔时间(1-21600)秒;
<heartbeat_data>:心跳包, (范围:1-512字节)
<wakeup_data>:唤醒包, (范围:1-512字节)
<auth_data>:登录包, (范围:1-1024字节)
<auth_resp>:应答包, (范围:1-32字节)
<heartbeat_resp>:心跳包回复头, (范围:1-32字节)
④设置登录包、应答包、USB断开方式、连接重试次数及发送重试次数(若
AT+ENTERSLEEP设置了登录包、应答包,会被 AT+ENTERSLEEPCFG 设置的所覆盖。如果不需要设置 USB 断开方式及重试次数,该步骤可跳过。USB 断开方式固定为 1,表示由模块主动断开 USB;连接重试次数默认为 3;发送重试次数默认为3)。
如AT+ENTERSLEEPCFG=“6c6f67696e”,“6f6b”,1,3,2 //登录包为
“6c6f67696e” 、应答包为“6f6b” 、USB断开方式固定为 1 表示由模块主动断开 USB、连接重试次数 3、发送重试次数为 2。
AT+ENTERSLEEPcfg=“6c6f67696e”,“6f6b”,1,3,2
⑤ 主控进入休眠前发送 AT+ENTERSLEEP指令并拉高WAKEUP_IN
模块建立与服务器的tcp连接,此时服务器会收到指令设置的登录包,服务器需 10s内回复应答包, 如示例中模块发送登录包login, 服务器 10s内需要返回应答包ok,若设置登录包和应答包为空,模块连接服务器时服务器会收到心跳包,服务器10s内也需要返回应答 ok响应,之后模块拉低 RI脚进入休眠。
2.2.3心跳
模块根据设置的参数,周期发送心跳给服务器,维持tcp的长连接
2.2.4唤醒
网络唤醒包触发唤醒
手机等app发送唤醒信号给服务器,服务器发送唤醒包给指定设备
模块收到数据时断开与服务器的连接,恢复usb,RI脚输出高电平唤醒主控
主控被唤醒后,拉低模块WAKEUP_IN脚,快速恢复网络
主控唤醒
拉低模块WAKEUP_IN脚
模块收到数据时断开与服务器的连接,恢复usb,RI脚输出高电平
快速恢复网络
2.3 Liteos驱动加载方法
① AT+USBCFG=4E3CE //初始化时设置一次即可,设置后,模块自动重启通过ECM联网
② 修改liteosusb驱动
在usb\implementation\usbdevs.h中添加
在usb\serial\u3g.c中添加