• 207查看
  • 0回复

[芯片硬件] 单片机开发——AT指令

[复制链接]


该用户从未签到

发表于 9-5-2024 21:17:41 | 显示全部楼层 |阅读模式

汽车零部件采购、销售通信录       填写你的培训需求,我们帮你找      招募汽车专业培训老师


一、AT命令简介

AT 即Attention,AT指令集是从终端设备(Terminal Equipment,TE)或数据终端设备(Data Terminal Equipment,DTE)向终端适配器(Terminal Adapter, TA)或数据电路终端设备(Data Circuit Terminal Equipment,DCE)发送的。通过TA,TE发送AT指令来控制移动台(Mobile Station,MS)的功能,与GSM 网络业务进行交互。用户可以通过AT指令进行呼叫、短信、电话本、数据业务、传真等方面的控制。90年代初,AT指令仅被用于Modem操作。没有控制移动电话文本消息的先例,只开发了一种叫SMS BlockMode的协议,通过终端设备(TE)或电脑来完全控制 SMS。几年后,主要的移动电话生产厂商诺基亚、爱立信、摩托罗拉和HP共同为GSM 研制了一整套AT指令,其中就包括对SMS的控制。AT指令在此基础上演化并被加入GSM 07.05标准以及现在的GSM07.07标准,完全标准化和比较健全的标准。如:对SMS的控制共有3种实现途径:最初的Block Mode;基于AT指令的Text Mode;基于AT指令的PDU Mode。到现在PDU Mode已经取代BlockMode,后者逐渐淡出。GSM 模块与计算机之间的通信协议是一些AT指令集,AT指令是以AT作首,字符结束的字符串,AT指令的响应数据包在 中。每个指令执行成功与否都有相应的返回。其他的一些非预期的信息(如有人拨号进来、线路无信号等),模块将有对应的一些信息提示,接收端可做相应的处理。

AT的优点:

命令简单易懂,并且采用标准串口来收发AT命令,这样对设备控制大大简化了,转换成简单串口编程了。

命令提供了一组标准的硬件接口--串口。这个简化的硬件设计.较新的电信网络模块,几乎都采用串口硬件接口。

AT命令功能较全,可以通过一组命令完成设备的控制,完成呼叫、短信、电话本、数据业务、传真.

AT命令与ppp协议的关系

在数据通讯的应用中,比如说无线拨号上网。除了AT命令,还会常听到另外一个网络协议ppp(Point to Point Protocol)。在应用串口通讯的场合,我们可以从硬件上明确看到分为两大块。DTE(Data Terminal Equipment)数据终端设备。通常是一个智能设备,如PC机,嵌入式主机等,用于发送AT命令和 PPP命令,还有用于链路通讯的DCE(Data Circuit Terminal )数据电路终端。用于与外界建立通讯的链路。DTE与DCE之间用串口相连。比如PC机用串口接入拨号MODEM时,PC机是DTE,拨号MODEM是DCE.

AT和PPP的相同点都是由DTE发送给DCE的协议。不同点是AT只用于DTE来控制DCE。比如初始化设备,用于发送呼叫,发送短消息等,虽然AT有规范,但是大部分DTE产商都扩展了一些AT命令。

而PPP是用于数据通讯,是DTE与远程的接入服务器(Access Server)进行通讯的协议。是属于网络通讯的数据链路层协议,DCE本身收到PPP包时,除了将其调制到物理层上发送到远端服务器外,本身并不处理PPP的内容。

单片机开发——AT指令w1.jpg

DCE的状态切换与AT的命令拨号流程

这两个协议都是DTE通过串口发往DCE。那DCE是如何区别是AT命令,如何区别PPP协议包。大部分DCE是采用分时段传送的,两个协议并不同时发送。但是可以通过AT命令两个专用命令来用切换是AT命令时段,还是PPP协议时段。

在发送AT命令时称为命令状态,在发送PPP包时或者语音通讯时称为数据状态。在modem设备启动时,默认进入AT命令接收状态,用ATDn ;命令拨出电话号码n(语音拨号);ATDn 拨出电话号码n(数据拨号),两者区别在于前者有一个分号。用数据拨号拨通后,将进入PPP交互状态。当需要切回接收AT命令状态,DTE 需要发送+++命令给DCE.让其保持在线的状态时,但接收是AT命令.如果此时需要切断链接,此时发送ATH挂断命令.注意发送+++需要前后各一秒的时间。否则会当成数据发送出去。

回顾一下之前3g拨号上网的wcdma-chat-connect脚本

ABORT 'NO CARRIER'

ABORT 'ERROR'

ABORT 'NO DIALTONE'

ABORT 'BUSY'

ABORT 'NO ANSWER'

'' \rAT   #发送AT命令

OK \rATZ   #等待接收OK,接收到OK发送ATZ命令

OK \rAT+CGDCONT=1,"IP","3gnet",,0,0  #接收到OK,发送AT+CGDCONT=1...命令

#下面一行是联通的拨号设置,不同的运营商拨号方式有所不同

OK-AT-OK ATDT*99#

CONNECT \d\c

上次做3G模块拨号上网时候没太搞懂现在看了之后又理解了一些,chat-是调制解调器的自动对话脚本,chat程序定义了一个计算机与调制解调器之间的对话交流,主要目的是用来在本地pppd与远端pppd程序之间建立连接,PPPD是用户态应用程序,负责PPP协议的具体配置,如MTU、拨号模式、认证方式、认证所需用户名/密码等。PPPD定义PPPD:PPPD(point-to-point protocol daemon)点对点协定隐形程式。这里就不去细说了,再说就跑偏了哈哈哈,有兴趣可以自己去了解,chat拨号的使用详解:https://wenku.baidu.com/view/7b53ac3102020740be1e9ba7.html

二、AT命令的使用

不同产商的AT命令大同小异,但是还是有所区别,如果有不同的就需要看产品手册

先做准备测试

检测Module与串口是否连通,能否接收AT命令:AT

查看SIM卡是否到位:AT+CPIN?

测试信号:AT+CSQ

查看运营商:AT+COPS?

获取模块标识:AT+CGMM

获取模块厂商标识:AT+CGMI

查看SIM卡是否到位:AT+CPIN?

网络注册。获得手机的注册状态:AT+CREG?

拨打电话

拨打电话:ATD电话号码;

来电显示:AT+CLCC(有电话打过来串口会打印RING提示。)

接电话:ATA

挂电话:ATH

挂电话尚未接通的来电:AT+CHUP

发短信

短信的编码方式有两种:text模式,pdu模式。因此短信的AT指令执行格式也有两种,分别对应text模式和pdu模式。

1 . Text模式

纯文本模式,支持不同的字符集,从技术上说也可用于发送中文短消息,但国内手机基本上不支持,主要用于欧美地区。

2 . Pdu模式

这个是手机默认的编码方式,可以使用任何字符集,其包括三种编码方式:7bit编码,8bit编码,UCS2编码。

7bit编码:ASCⅡ码就是7bit编码。

8bit编码:ASCⅡ字符可以使用7位二进制表示,但是由于计算机的基本处理单位是字节(1byte=8bit),所以一般在高位补0,用一个字节表示一个ASCⅡ字符。这就是8bit编码。

UCS2编码:处理Unicode字符,使用2个字节来表示一个字符,可以表示世界上所有的字符。发送中文就是使用此编码方式。

发英文短信

设置信息格式:AT+CMGF=1 (格式有TEXT方式和PDU方式。AT+CMGF=1时是TEXT方式,AT+CMGF=0是PDU方式)

发送短信:AT+CMGS="电话号码"

>data       //下一行出现>后面跟的data 为发送内容(以ctrl+z(0x1A)结束)

设置收到短消息提示:AT+CNMI=1,1,2

设置存储区域为SM:AT+CPMS=”SM”

读取短信:AT+CMGR=index(index为读第几条短信)

发中文短信:

设置信息格式:AT+CMGF=0

单片机开发——AT指令w2.jpg


快速发帖

您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|手机版|小黑屋|Archiver|汽车工程师之家 ( 渝ICP备18012993号-1 )

GMT+8, 27-12-2024 11:19 , Processed in 0.312606 second(s), 31 queries .

Powered by Discuz! X3.5

© 2001-2013 Comsenz Inc.