• 欢迎大家分享资料!前往留言板评论即可!

Luat GPRS模块TCPIP应用指导V1.1

合宙 模组资料网 2年前 (2021-05-15) 304次浏览 0个评论 扫描二维码

1章 架构

Luat GPRS模块的 TCP/IP应用有两种连接模式,可以通过命令AT+CIPMUX=来设置。当AT+CIPMUX=0时,是单链路模式;当AT+CIPMUX=1时,是多链路模式。默认设置是单链路模式。

当在单链路模式下,Luat GPRS模块可以工作在透传模式和非透传模式。在单链接模式下,模块作为一个TCP/UDP连接的客户端

当在多链路模式下,Luat GPRS模块只工作在非透传模式。在多链接模式下,模块作为一个TCP/UDP连接的客户端,它总共可以建立8路连接


图表1Luat GPRS 模块TCP/IP 结构图

Luat GPRS模块TCPIP应用指导V1.1


2 状态机

 

当输入TCPIP相关命令以后,模块的状态也会发生相应的迁移。查询状态的命令是AT+CIPSTATUS

 图表2单链接时的状态机

Luat GPRS模块TCPIP应用指导V1.1

关于单连接状态机的几点说明:

 

l  输入AT+CIICR,会马上进入IP CONFIG状态,当返回OK后,会进入到IP GPRSACT状态;

l  输入AT+CIPSTART后,会立马进入IP/UDP
CONNECTING状态,如果后续模块上报CONNECT OK这个URC,表明连接服务器成功,此时进入CONNECT OK状态;

l  输入AT+CIPCLOSE后,立马进入TCP/UDP
CLOSING状态,此时如果模块上报CLOSE OK,则表明关闭与服务器的连接成功,此时模块进入TCP/UDP CLOSED状态;

l  如果模块上报+PDP DEACT这个URC,则标志着模块释放PDP上下文,并进入了PDP DEACT状态;

l  在IP
GPRSACT,IP STATUS,CONNECT OK以及TCP/UDP CLOSED状态下,输入AT+CGATT=0,则也可以使模块释放上下文,进入PDP
DEACT状态;

l  模块进入PDP
DEACT状态,仍需要输入AT+CIPSHUT,进入IP INITIAL状态;

l 模块在各个状态下均可以输入AT+CIPSHUT,进入IP
INITIAL状态。


图表3多链接时的状态机

Luat GPRS模块TCPIP应用指导V1.1


3 模块上电初始化以及TCPIP流程

Luat GPRS模块TCPIP应用指导V1.1


4 单链接模式

AT+CIPMUX=0,可以将模块设置为单链接模式。在单链接模式下,只能同时存在一个TCPUDP链接。CIPMUX缺省值就是0

单链接模式下Luat GPRS模块可以工作在透传模式非透传模式。可以通过命令AT+CIPMODE=用来设置,当AT+CIPMODE=0时,是非透传模式 (普通模式);当AT+CIPMODE=1时,是透传模式。默认设置是非透传模式

CIPMODE缺省值为0

 

4.1 非透传模式

非透传模式下,模块可以作为TCP客户端或UDP客户端与服务器建立链接。

 

4.1.1如何建立一个TCP/UDP链接

使用TCIPIP命令之前,需要进行一些必要的查询,确定模块是否注册网络。以下命令示例中,黑色的是输入的命令,蓝色的是命令的返回信息。

 Luat GPRS模块TCPIP应用指导V1.1

如果GPRS附着状态为1,则可以继续往下进行APN的设置,PDP的激活,以及建立一个TCPUDP链接。

Luat GPRS模块TCPIP应用指导V1.1


4.2 透传模式

4.2.1  什么是透传模式

透传模式是一种建立在TCP/IP应用任务下的特殊的数据传输模式,用来接收和发送数据。透传模式下,一旦链接被建立,模块就处于数据模式,所有从串口输入输出的字符皆被认为是有效数据。

透传模式下,所有AT命令不可用。我们提供了在命令模式和透传模式间切换的方法。一旦切换到了命令模式,所有的AT命令又可以被使用了。

需要注意的是:只有单链接模式下,才可以使用透传模式。

4.2.如何配置透传模式

AT+CIPMODE=1 开启透传模式。

 

在输入CIPMODE命令之前可以用AT+CIPCCFG
用来配置透传模式的相关参数:

l  NmRetry 用来设置一个IP包的重传次数。缺省值是5

l  WaitTm 发送数据的时间间隔,单位是200ms缺省值是2

l   SendSz 每次发送数据的字节数。1~1460,缺省值是1024

l   Esc 是否开启转义序列,默认开启。

 

一般的应用情况下,这个CIPCCFG命令不需要修改参数。

 

4.2.3  透传模式的使用方法

透传模式下,只能在单路链接下建立,在透传模式下,Luat GPRS模块也能工作在2种模式: TCP客户端, UDP 客户端。一旦链路建立,串口会上报 “CONNECT” ,模块处于数据模式,同时,DCD 被拉低

 

以下是TCP客户端透传应用的例子:

Luat GPRS模块TCPIP应用指导V1.1


4.2.4  如何在透传模式和命令模式间切换

通过下面的方法可以在透传模式和命令模式间自由切换

(1)   
如果AT+CIPCCFG 的第四个参数是1(默认值就是1,那么支持通过转义序列退出透传模式。默认的转义序列是 +++,为避免+++ 被错误的识别为数据,需要遵循以下步骤:

 


1. +++输入前1秒内无字符输入。

2. 0.5 秒内连续输入+++,中间不能有其他字符。

3. +++输入后 0.5 秒内无字符输入。

 

(2)   
+++退出透传模式后,如果当前链接是激活的,ATO 命令可以从命令模式切换回数据模式,字符串 “CONNECT”会再次上报。

(3)   
可以使用串口的DTR 脚。设置AT&D1(默认值就是1 DTR 脚至少接地 1 秒然后拉高。这个方法可以从数据模式切换到命令模式。上报字串“OK” 表示模块当前处于命令模式。

(4)   
对于TCP客户端链接,如果远端服务器断开了链接,模块会自动切换到命令模式。

(5)   
在数据传输中,如果模块的PDP场景被去激活(+PDP DEACT) ,模块也会自动切换到命令模式。

 

4.2.5  数据模式下如何处理来电和短信

数据模式下,如果有来电,串口的RING脚会一直拉低,直到挂断或者接通电话;而来短信的时候,RING脚会有120ms长的低电平。这个RI低电平可以给唤醒MCU并给MCU提示,有电话或短信到来了。

 

要处理来电或者短信,MCU那边首先要使模块进入命令模式 ( DTR 或者 +++),然后模块会得到正常的URC上报。

Luat GPRS模块TCPIP应用指导V1.1

 这时候就可以处理电话或者读短信了。

 

5 多链接模式

 

多链接模式下, Luat GPRS模块仅支持非透传模式。因此,在多链路模式下,命令AT+CIPMODE
是无效的。

多链路模式下,模块可以作为 TCP/UDP 客户端 使用。可以有8路链接(id = 0-7)同时共存,每一路链接可以是TCPUDP类型。

 下面是一个多链接应用示例:

Luat GPRS模块TCPIP应用指导V1.1


6 DNS域名自动解析

 

 Luat GPRS系列模块支持DNS域名自动解析,除了使用AT+CIPSTART=,<ip_addr>,连接服务器IP地址以外,还可以使用AT+CIPSTART=,,跟远端服务器域名地址建立连接

 

用户也可以使用命令 AT+CDNSGIP=来查询所给域名的IP地址

 

以下是域名解析的应用示例:

下面是一个多链接应用示例:

Luat GPRS模块TCPIP应用指导V1.1


7 数据发送

Luat
GPRS
系列模块有三种方法来发送数据:变长数据的发送,定长数据的发送和定时发送。用户可以通过命令AT+CIPACK用来查询当前链接的数据传送状态。

 

7.1 固定长度数据发送

在单链接模式下,通过命令AT+CIPSEND=可以进行固定长度的数据发送,发送长度是。输入数据达到个字节,不用发送(即0x1A),数据会自动发送出去。

在多链接模式下,该命令的格式是:AT+CIPSEND=<id>,<id>是链接id是发送长度。

7.2 不定长度数据发送


“AT+CIPSEND”直接发送即是不定长度的发送方式。输入“AT+CIPSEND”(如果是多链接模式,则是“AT+CIPSEND=),出现>后即进入数据输入模式,输入数据,然后发送CRTL-Z(即0X1A)即可发送数据。

不定长度的发送方式有以下情况,需要注意:

当数据中含有0X1A时,会将0X1A当做发送标识,并数据直接发送出去;当数据中含有0X1B时,会将0X1B认定为发送终止符,退出数据发送模式,回到AT命令状态。遇到含有0X1A0X1B的数据,请用户自己转义。

固定长度发送和不定长度发送两种数据发送方式的示例,请参考
4.1.1 如何建立一个TCP/UDP链接

7.3 定时发送

还有第三种数据发送的方式:定时发送。首先,通过命令“AT+CIPATS=,设置自动发送时间。设置为1,打开超时自动发送。是自动发送的超时时间,以秒为单位,取值范围为1~100

不管多链接还是单链接,设置了超时自动发送功能为开,发送数据的时候,时间到了就会自动发送数据,不管数据个数有多少。

 示例如下:

Luat GPRS模块TCPIP应用指导V1.1



8 数据接收

 

l  AT+CIPHEAD=1”在数据前加IP头,格式:“+IPD ,<data length>: payload”

l  AT+CIPSHOWTP”IP头里显示协议类型(TCP/UDP),这只有在CIPHEAD=1时有效。

实例示意如下:

Luat GPRS模块TCPIP应用指导V1.1

 

l  AT+CIPSRIP=1”显示数据发送方信息,格式:“RECV FROM: : 

通过这些信息,用户很容易就可以知道数据帧的源,数据大小,协议。这可以让用户把收到的TCP/UDP数据和AT命令区分开来。

 

9 查询数据链路的状态
 

AT模式下,可以通过AT+CIPSTATUS查询当前的TCP/UDP数据链路状态。

透传模式下DCD 脚用来实现这一功能。如果TCP/UDP 链接存在,DCD 脚被置位(拉低)。一旦链接断开,DCD 脚会被设无效(拉高)

Luat GPRS模块TCPIP应用指导V1.1


10 关闭链接

单链接下用户可以使用命令 AT+CIPCLOSE来关闭 TCP 或者 UDP 链接。

 

当上报CLOSE OK表示链接关闭成功。

在多链路模式下,链路序号要使用AT+CIPCLOSE=关闭链接。

 

注意:命令AT+CIPCLOSE 仅关闭当前TCP/UDP链接,但PDP场景仍然激活,此时可以直接AT+CIPSTART重新建立连接。当然,用户也可以用AT+CIPSHUT来关闭,这时候PDP 上下文会被去激活。如果想重新建立连接,需要+CSTT,+CIICR,+CIFSR重新发一遍来激活PDP






转载请注明原文链接:Luat GPRS模块TCPIP应用指导V1.1
喜欢 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址