打印

STM32 AT 指令合集

[复制链接]
2127|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
wangjiahao88|  楼主 | 2017-11-23 09:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

STM32  AT基本命令集:
------------------------------------------------------------------
const romchar AT_AT[] = {"AT\r\n"};
const romchar AT_CBC[] ={"AT+CBC\r\n"};  //检查充电状态,以及电池电量占容量的百分比+CBC: 0,97,4164
const romchar AT_CREG[] = {"AT+CREG?\r\n"}; //查询网络注册状态
const romchar AT_CREGINIT[] = {"AT+CREG=1\r\n"}; //初始化网络注册状态
const romchar AT_ATE[] = {"ATE0\r\n"};  //存储当前的设置参数
const romchar AT_Save[] = {"AT&W\r\n"};  //存储当前的参数


/* 0 disable slow clock   1 enable slow clock */
const romchar AT_CSCLK[] = {"AT+CSCLK=1\r\n"}; //enable slow clock


/* 0 minimum functionality 1  full functionality (Default) 4 disable phone both transmit and receive RF circuits */
const romchar AT_CFUN[] = {"AT+CFUN=1\r\n"}; //使模块在重启后电源进入功能性的电平
const romchar AT_CGMR[] = {"AT+CGMR\r\n"}; //软件版本标识
const romchar AT_CCID[] = {"AT+CCID\r\n"}; //获得SIM卡标识
const romchar AT_CGSN[]={"AT+CGSN\r\n"}; //IMEI
const romchar AT_CSQ[]={"AT+CSQ\r\n"}; //信号强度
const romchar AT_CSMINS[]={"AT+CSMINS?\r\n"}; //检测SIM卡是否插入+CSMINS: 0,1
const romchar AT_COPS[]={"AT+COPS?\r\n"};
const romchar AT_CPOL[]={"AT+CPOL?\r\n"};
const romchar AT_REG_COPS[]={"AT+CPOL=1,2,\""};

******************************************************************************


相关帖子

沙发
wangjiahao88|  楼主 | 2017-11-23 09:38 | 只看该作者
SMS命令集
------------------------------------------------------------------
const romchar AT_CMGF[] = {"AT+CMGF=1\r\n"}; //指定信息的输入输出格式为文本格式
const romchar AT_CMGFNMEA[] = {"AT+CMGF=0\r\n"}; //指定信息的输入输出格式为PDU格式
const romchar AT_CSCS[] = {"AT+CSCS=\"GSM\"\r\n"}; //AT+CSCS=“GSM”设置什么样的字体让模块接受
const romchar AT_CMGS[] = {"AT+CMGS=\""};  //发短信
const romchar AT_CMGR[] = {"\r\nAT+CMGR="};  //读短信
const romchar AT_CMGD1[] = {"AT+CMGD=1\r\n"};   //删除短信
const romchar AT_CMGD2[] = {"AT+CMGD=2\r\n"};   //删除短信
const romchar AT_CMGD3[] = {"AT+CMGD=3\r\n"};   //删除短信
const romchar AT_CMGD4[] = {"AT+CMGD=4\r\n"};   //删除短信
const romchar AT_CMGD5[] = {"AT+CMGD=5\r\n"};   //删除短信
const romchar AT_CMGD6[] = {"AT+CMGD=6\r\n"};   //删除短信
const romchar AT_CMGD7[] = {"AT+CMGD=7\r\n"};   //删除短信
const romchar AT_CMGD8[] = {"AT+CMGD=8\r\n"};   //删除短信
const romchar AT_CMGD9[] = {"AT+CMGD=9\r\n"};   //删除短信

const romchar AT_CNMI[] = {"AT+CNMI=2,1\r\n"};  // ?   初始化AT指令时要用上
const romchar AT_CMGL[] = {"AT+CMGL=\"REC UNREAD\"\r\n"}; //接收没有读的信息
//const romchar AT_CSMP[] = {"AT+CSMP=17,167,0,240 \r\n"};
//const romchar AT_IFC[] = {"AT+IFC=2,2 \r\n"}; //建立数据呼叫,通过RTS和CTS控制
//const romchar AT_CBST[] = {"AT+CBST=0,0, 1 \r\n"};

使用特权

评论回复
板凳
wangjiahao88|  楼主 | 2017-11-23 09:38 | 只看该作者
GPRS命令集
------------------------------------------------------------------
const romchar Gprs_class[] = {"AT+CGCLASS=\"B\"\r\n"}; //length = 16B 显示GPRS信息移动的类型  
const romchar Gprs_apn[] = {"AT+CSTT=\""};    //GPRS通用的名字
const romchar Gprs_CSTT[]={"AT+CIPCSGP=1,\""}; //设置GPRS为无线连接的模式
const romchar Gprs_cgatt[] = {"AT+CGATT=1\r\n"}; //length = 12B显示GPRS配置是附加的
const romchar Gprs_cgreg[] = {"AT+CGREG?\r\n"}; //查询GPRS网络注册状态
const romchar Gprs_cgreginit[] = {"AT+CGREG=1\r\n"}; //初始化GPRS网络注册状态
const romchar Gprs_T_S[] = {"AT+CIPSTART=\"TCP\",\""}; //建立TCP连接;连接成功反馈CONNECT OK
const romchar Gprs_U_S[] = {"AT+CIPSTART=\"UDP\",\""}; //建立UDP连接
const romchar Gprs_ipshut[] = {"AT+CIPSHUT\r\n"}; //  //使GPRS的PDP失效
const romchar Gprs_send[] = {"AT+CIPSEND\r\n"}; //发送数据;
const romchar Gprs_dpdp[] = {"AT+CIPDPDP=1,60,3\r\n"}; //自动检测GPRS是否为附着状态;60毫秒,检测3次
const romchar SetBand[]= "AT+IPR=9600\r\n";    //设置与终端设备通信的波特率为9600

使用特权

评论回复
地板
wangjiahao88|  楼主 | 2017-11-23 09:39 | 只看该作者
通话命令集
------------------------------------------------------------------
const romchar Gsm_cmd_call_view[] = {"AT+CLIP=1\r\n"}; //使能来电显示
const romchar Gsm_P_ATD[] = {"\r\nATD"}; //拨号
const romchar Gsm_cmd_call_ack[] = {"ATA\r\n"}; //接通
const romchar Gsm_call_connect[] = {"AT+CLCC\r\n"}; //查询是否接通
const romchar Gsm_cmd_call_noack[] = {"ATH\r\n"}; //挂断
const romchar Gsm_cmd_call_sel[] = {"AT+CHFA=0\r\n"}; //选主通道
const romchar Gsm_cmd_call_CMIC[] = {"AT+CMIC=0,9\r\n"}; //MIC增益+13.5dB,选择主麦克风
const romchar Gsm_cmd_call_CLVL[] = {"AT+CLVL=90\r\n"}; //受话器音量级别
const romchar Gsm_cmd_Voice_num1[] = {"AT+VTS=1\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num2[] = {"AT+VTS=2\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num3[] = {"AT+VTS=3\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num4[] = {"AT+VTS=4\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num5[] = {"AT+VTS=5\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num6[] = {"AT+VTS=6\r\n"}; //拨号键3
const romchar AT_VTS[] = {"AT+VTS=\r\n"}; //Send DTMF
const romchar ATMicOn[]="AT+CMUT=0\r\n";  
const romchar ATMicOff[]="AT+CMUT=1\r\n";
const romchar Gsm_cmd_Turn_Off[] = {"AT+CPOWD=1\r\n"}; //关模块命令

使用特权

评论回复
5
wangjiahao88|  楼主 | 2017-11-23 09:41 | 只看该作者
各个命令的详细解释:


FUNCTIONS        AT COMMANDS        DETAILS
厂家认证        AT+CGMI        获得厂家的标识
模式认证        AT+CGMM        查询支持频段
修订认证        AT+CGMR        查询软件版本
生产序号        AT+CGSN        查询IMEI NO.
TE设置        AT+CSCS        选择支持网络
查询IMSI        AT+CIMI        查询国际移动电话支持认证
卡的认证        AT+CCID        查询SIM卡的序列号
功能列表        AT+GCAP        查询可供使用的功能列表
重复操作        A/        重复最后一次操作
关闭电源        AT+CPOF        暂停模块软件运行
设置状态        AT+CFUN        设置模块软件的状态
活动状态        AT+CPAS        查询模块当前活动状态
报告错误        AT+CMEE        报告模块设备错误
键盘控制        AT+CKPD        用字符模拟键盘操作
拨号命令        ATD        拨打电话号码
挂机命令        ATH        挂机
回应呼叫        ATA        当模块被呼叫时回应呼叫
详细错误        AT+CEER        查询错误的详细原因
DTMF信号        AT+VTD,+VTS        +VTD设置长度,+VTS发送信号
重复呼叫        ATDL        重复拨叫最后一次号码
自动拨号        AT%Dn        设备自动拨叫号码
自动接应        ATS0        模块自动接听呼叫
呼入载体        AT+CICB        查询呼入的模式,DATA or FAX or SPEECH
增益控制        AT+VGR,+VGT        +VGR调整听筒增益,+VGT调整话筒增益
静音控制        AT+CMUT        设置话筒静音
声道选择        AT+SPEAKER        选择不同声道(2对听筒和话筒)
回声取消        AT+ECHO        根据场所选择不同回声程度
单音修改        AT+SIDET        选择不同回声程度
初始声音参数        AT+VIP        恢复到厂家对声音参数的默认设置
信号质量        AT+CSQ        查询信号质量
网络选择        AT+COPS        设置选择网络方式(自动/手动)
网络注册        AT+CREG        当前网络注册情况
网络名称        AT+WOPN        查询当前使用网络提供者
网络列表        AT+CPOL        查询可供使用的网络
输入PIN        AT+CPIN        输入PIN码
输入PIN2        AT+CPIN2        输入第二个PIN码
保存尝试        AT+CPINC        显示可能的各个PIN码
简单上锁        AT+CLCK        用户可以锁住状态
改变密码        AT+CPWD        改变各个PIN码
选择电话簿        AT+CPBS        选择不同的**体上存储的电话簿
读取电话簿        AT+CPBR        读取电话簿目录
查找电话簿        AT+CPBF        查找所需电话目录
写入电话簿        AT+CPBW        增加电话簿条目
电话号码查找        AT+CPBP        查找所需电话号码
动态查找        AT+CPBN        查找电话号码的一种方式
用户号码        AT+CNUM        选择不同的本机号码(因网络服务支持不同)
避免电话簿初始化        AT+WAIP        选择是否防止电话簿初始化
选择短消息服务        AT+CSMS        选择是否打开短消息服务以及广播服务
短消息存储        AT+CPMS        选择短消息优先存储区域
短消息格式        AT+CMGF        选择短消息支持格式(TEXT or PDU)
保存设置        AT+CSAS        保存+CSCA and +CSMP参数设置
恢复设置        AT+CRES        恢复+CSCA and +CSMP参数设置
显示TEXT参数        AT+CSDH        显示当前TEXT模式下结果代码
新消息提示        AT+CNMI        选择当有新的短消息来时系统提示方式
读短消息        AT+CMGR        读取短消息
列短消息        AT+CMGL        将存储的短消息列表
发送短消息        AT+CMGS        发送短消息
写短消息        AT+CMGW        写短消息并保存在存储器中
从内存中发短消息        AT+CMSS        发送在存储器中保存的短消息
设置TEXT参数        AT+CSMP        设置在TEXT模式下条件参数
删除短消息        AT+CMGD        删除保存的短消息
服务中心地址        AT+CSCA        提供短消息服务中心的号码
选择广播类型        AT+CSCB        选择系统广播短消息的类型
广播标识符        AT+WCBM        读取SIM卡中系统广播标识符
短消息位置修改        AT+WMSC        修改短消息位置
短消息覆盖        AT+WMGO        写一条短消息放在第一个空位
呼叫转移        AT+CCFC        设置呼叫转移
呼入载体        AT+CLCK        锁定呼入载体以及限制呼入或呼出
修改SS密码        AT+CPWD        修改提供服务密码
呼叫等待        AT+CCWA        控制呼叫等待服务
呼叫线路限定        AT+CLIR        控制呼叫线路认证
呼叫线路显示        AT+CLIP        显示当前呼叫线路认证
已连接线路认证        AT+COLP        显示当前已连接线路认证
计费显示        AT+CAOC        报告当前费用
累计呼叫        AT+CACM        累计呼叫费用
累计最大值        AT+CAMM        设置累计最大值
单位计费        AT+CPUC        设置单位费用以及通话计时
多方通话        AT+CHLD        保持或挂断某一通话线路(支持多方通话)
当前呼叫        AT+CLCC        列出当前呼叫
补充服务        AT+CSSN        设置呼叫增值服务
非正式补充服务        AT+CUSD        非正式的增值服务
保密用户        AT+CCUG        选择是否在保密状态
载体选择        AT+CBST        选择数据传输的类型
选择模式        AT+FCLASS        选择发送数据or 传真
服务报告控制        AT+CR        是否报告提供服务
结果代码        AT+CRC        报告不同的结果代码(传输方式、语音或数据)
设备速率报告        AT+ILRR        是否报告当前传输速率
协议参数        AT+CRLP        设置无线连接协议参数
其他参数        AT+DOPT        设置其他的无线连接协议参数
传输速度        AT+FTM        设置传真发送的速度
接收速度        AT+FRM        设置传真接收的速度
HDLC传输速度        AT+FTH        设置传真发送的速度(使用HDLC协议)
HDLC接收速度        AT+FRH        设置传真接收的速度(使用HDLC协议)
停止传输并等待        AT+FTS        停止传真的发送并等待
静音接收        AT+FRS        保持一段静音等待
固定终端速率        AT+IPR        设置数据终端设备速率
其他位符        AT+ICF        设置停止位、奇偶校验位
流量控制        AT+IFC        设置本地数据流量
设置DCD信号        AT&C        控制数据载体探测信号
设置DTR信号        AT&D        控制数据终端设备准备信号
设置DSR信号        AT&S        控制数据设备准备信号
返回在线模式        ATO        返回到数据在线模式
结果代码抑制        ATQ        是否模块回复结果代码
DCE回应格式        ATV        决定数据通信设备回应格式
默认设置        ATZ        恢复到默认设置
保存设置        AT&W         保存所有对模块的软件修改
自动测试        AT&T        自动测试软件
回应        ATE        是否可见输入字符
回复厂家设置        AT&F        软件恢复到厂家设置
显示设置        AT&V        显示当前的一些参数的设置
认证信息        ATI        显示多种模块认证信息
区域环境描述        AT+CCED        用户获取区域参数
自动接收电平显示        AT+CCED        扩展到显示接收信号强度
一般显示        AT+WIND         
在ME和MSC之间数据计算模式        AT+ALEA         
数据计算模式        AT+CRYPT         
键盘管理        AT+EXPKEY         
PLMN上的信息        AT+CPLMN         
模拟数字转换测量        AT+ADC         
模块事件报告        AT+CMER         
选择语言        AT+WLPR        选择可支持的语言
增加语言        AT+WLPW        增加可支持的语言
读GPIO值        AT+WIOR         
写GPIO值        AT+WIOW         
放弃命令        AT+WAC        用于放弃SMS、SS and PLMN
设置单音        AT+WTONE        设置音频信号(WMOi3)
设置DTMF音        AT+WDTMF        设置DTMF音(WMOi3)

使用特权

评论回复
6
wangjiahao88|  楼主 | 2017-11-23 09:42 | 只看该作者
1) AT指令
很多手机都带有数据线,同时提供软件可以与手机进行交互,控制之手机的行为;市场上也有很多GSM、GPRS模块,用这些模块加上简单的电路,就可以制作成所谓的短信群发器,在加上一个软件,就可以狂发短信了。不管是手机还是这些短信短发模块,安装在电脑上的软件一般都是通过AT指令来控制手机或模块的行为。
通过AT指令能够控制手机的许多行为,包括拨叫号码、按键控制、传真、GPRS等。随便搜索以下,就可以搜索很多各种手机或模块其AT指令的文档,其多数指令都是相同的,各个常见一般会根据自身的情况对指令进行扩展,这里不必细说。
通过串口线连接计算机的串口与手机或者GSM/GPRS模块,打开超级终端,设置好相关参数,然后就可以在电脑使用AT指令了。手机一般通过USB与计算机连接,可以找一个USB转串口的软件。

使用特权

评论回复
7
wangjiahao88|  楼主 | 2017-11-23 09:43 | 只看该作者
2) GSM/GPRS模块
市场有很多这种模块,提供不同的功能。比如,有的GPRS模块内置了TCP/IP协议栈,就可以很方便的通过厂家扩展的AT指令直接进行TCP或UDP通信。如果没有提供TCP/IP协议栈,那么就需要编写相关的程序,在软件中实现网络访问功能。
GSM/GPRS模块通常不能直接使用,其通常用于嵌入式系统中,需要扩展外围电路。厂家一般也都提供了详细的扩展电路图,如果加上一个嵌入式CPU,弄一个Linux或Windows CE作为操作系统,那么就俨然一个高端智能手机。
用于发送短信的扩展电路一般比较简单,仅仅添加一个基本的电路,提供一个电源接口和一个用于连接计算机的串口。

使用特权

评论回复
8
wangjiahao88|  楼主 | 2017-11-23 09:43 | 只看该作者
3) 常用的AT指令
命令        作用
AT        测试连接是否正确
ATE0/ATE1        关闭回显/打开回显
AT+CGMI        得到厂商信息
AT+CGMR        得到手机版本号
AT+CGSN        得到手机序列号(IMEI)
AT+CIMI        得到手机IMSI号码
AT+CSCS        获取、设置手机当前字符集。可设置为 GSM 或 UCS2
AT+CCLK        获取设置手机时钟
AT+COPS        网络营运商
AT+CSCA        短信中心号码
AT+CPMS        选择短信储存地点。可选择 ME(SIM卡)和MT(机身)
AT+CMGL        列出短信,列出指定状态的短信息的PDU代码
AT+CMGR        读短信,列出指定序号的短信息PDU代码
AT+CMGS        发送短信
AT+CMGD        删除指定的短信
AT+CMGF        短信格式。分为Text模式和PDU模式
AT+CNMI        设置新短消息通知电脑端

使用特权

评论回复
9
wangjiahao88|  楼主 | 2017-11-23 09:43 | 只看该作者
4) 通过串口发送AT的过程
(1)设置串口参数
(2)打开串口
(3)发送AT指令,然后等待模块响应
(4)接收相应,然后处理
(5)通讯完成,关闭串口

使用特权

评论回复
10
wangjiahao88|  楼主 | 2017-11-23 09:44 | 只看该作者
5) 编程技巧
发送完AT指令后,一般需要等待模块做出响应。串口通讯是一种流式通讯,通讯另一方可能正常相应,也有可能不能正常响应,这是就需要对这种情况进行处理。
(1)可以设置读超时,如果对方不能正常响应,则系统会认为与对方通讯失败
(2)如果对方成功响应,那么还需要对对方相应的信息进行判断,确定串口数据流中的那些是相应自己AT指令的数据。一般地,期望的响应都有一定的特征信息,可以通过判断相应的数据是否包含特征信息来判断。
例如,一般当发送一个AT指令后,通常会有一个OK作为相应的结尾,那么就可以通过相应数据是否包含OK判断针对自己的响应是否结束。
例如,如果GSM/GPRS模块认为指令有问题,或者执行指令出错,会返回ERROR,那么程序就不能一直等待自己期望的特征数据出现,如遇到ERROR,就应该返回报错。
(3)即使对方能够成功响应,有时候对方对指令的处理需要一定的时间,这时候并不能通过一个read函数将所有的相应数据都读回。因此就需要将每次读回的数据缓存起来,然后不断的读取数据,直到期望的特征数据出现为止。
(4)在不断的读取数据时,应该在每次读取之间sleep一小会,以保证下次尽量能够读到数据。

使用特权

评论回复
11
god9987| | 2017-11-23 13:59 | 只看该作者
const romchar Gsm_cmd_Voice_num1[] = {"AT+VTS=1\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num2[] = {"AT+VTS=2\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num3[] = {"AT+VTS=3\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num4[] = {"AT+VTS=4\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num5[] = {"AT+VTS=5\r\n"}; //拨号键3
const romchar Gsm_cmd_Voice_num6[] = {"AT+VTS=6\r\n"}; //拨号键3

请问一下 这个拨号键,如果按下的是 137 XXXX XXXX 的号码,是不是也可以实现自动拨打电话的功能/.

使用特权

评论回复
12
stm32lover| | 2017-11-23 14:03 | 只看该作者
这个 应该就是操作SIM8000C之类的模块使用的!

使用特权

评论回复
13
wangjiahao88|  楼主 | 2017-11-24 10:34 | 只看该作者
是的 这个理论上是通用的

因为大部分的厂商都支持标准的AT协议指令集!

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

473

主题

7517

帖子

30

粉丝