AT(Attention)指令是由 Dennis Hayes 發(fā)明的,所以也稱為 Hayes command set
。AT 指令最初是用來指導(dǎo) modem 工作的,后面隨著技術(shù)的發(fā)展,低速 modem 已經(jīng)退出了市場,但 AT 指令卻不斷發(fā)展,并且在今天 AT 指令依舊扮演這非常重要的角色。
雖然在 PC 端、手機(jī)上已經(jīng)沒有了 AT 的使用,但其卻在嵌入式行業(yè)里各類聯(lián)網(wǎng)模塊中發(fā)揮著重要的作用,而且不僅僅只應(yīng)用在蜂窩模塊,還應(yīng)用到了 WiFi、BLE 等模塊中。
相關(guān)標(biāo)準(zhǔn)
隨著技術(shù)的發(fā)展,目前 AT 指令發(fā)展過程中形成兩個重要標(biāo)準(zhǔn):
V.250:該標(biāo)準(zhǔn)于 1995 年建立,1998 年重命名為 V.250
ETSI GSM 07.07(3GPP TS 27.007):用于控制 GSM modem 的 AT 指令集
GSM 07.07 是基于 V.250 標(biāo)準(zhǔn)的。是目前最新的 AT 標(biāo)準(zhǔn)。
當(dāng)下 AT 指令的應(yīng)用
目前的 AT 指令著重應(yīng)用在蜂窩模塊、WiFi 模塊、BLE 模塊中,目的是為了簡化嵌入式設(shè)備聯(lián)網(wǎng)的復(fù)雜度。
AT 標(biāo)準(zhǔn)定義了 AT 命令的格式本身,比如命令以 AT 為前綴開頭,以或者結(jié)尾,這被現(xiàn)有的 AT 模塊所延用。
圖片來自 3GPP TS 27.007 V10.7.0 (2012-03)
但是,由于每個廠家的模塊不一樣,實現(xiàn)的功能不一樣,導(dǎo)致每個 AT 模塊廠家有自己的一套私有的 AT 命令集,每一個 AT 模塊廠家實現(xiàn)的 AT 指令集解析器也不一樣(解析器實現(xiàn)的 AT 標(biāo)準(zhǔn)功能也參差不齊)。像上圖所示的 AT 命令使用方式不被大多數(shù)模塊廠家所實現(xiàn)。
AT 模塊的應(yīng)用框圖
既然是指令集,那么必然會有指令集的解析處理,通常,我們把 AT 模塊端的解析處理程序稱為 AT Server,而將控制 AT 模塊的處理器端的解析處理程序稱為 AT Client。由 AT Client 發(fā)起命令請求,AT Server 回應(yīng)處理結(jié)果。另外 AT Server 通過 URC(Unsolicited result code) 來主動給 AT Client 發(fā)送數(shù)據(jù)。
應(yīng)用框圖如下所示:
一些約定
AT 命令的常用格式:
AT+CMD=[,,]
AT 指令以 AT
開始,以 r
或者 rn
結(jié)尾,參數(shù)之間使用 ,
隔開,字符串參數(shù)使用雙引號 ""
包裹,整形參數(shù)不適用雙引號。
:回車符
:換行符
尖括號中的名稱 xxx
在 AT 里是一個語法元素,要求必須指定。尖括號本身不會出現(xiàn)在命令行里。
[xxx]
中括號中的名稱 xxx
在 AT 里是一個語法元素,表示可選擇指定。中括號本身不出現(xiàn)在命令行里。
四類 AT 命令
Test 命令:AT+
測試指令類似于命令行里的 help
指令,用于提供該命令的使用信息,以及命令參數(shù)的取值范圍。
Read 命令:AT+
用于查詢該指令對應(yīng)功能的當(dāng)前值。
Set 命令:AT+
設(shè)置用戶指定的參數(shù)到對應(yīng)的功能里。
Execute 命令:AT+
執(zhí)行相關(guān)操作。
響應(yīng)結(jié)果字符串
AT 標(biāo)準(zhǔn)定義了標(biāo)準(zhǔn)的響應(yīng)結(jié)果字符串:
rnOKrn
如果 AT 指令被 AT Server 識別,并正確執(zhí)行,則返回該結(jié)果。
“
標(biāo)準(zhǔn)中的 V1 模式下響應(yīng)結(jié)果代碼的方式。V0 模式下返回
0r
。”
rnERRORrn
“
標(biāo)準(zhǔn)中的 V1 模式下響應(yīng)結(jié)果代碼的方式。V0 模式下返回
4r
。”
數(shù)據(jù)模式與指令模式
在收到 +++
,并且接下來 1s 內(nèi)未收到其他數(shù)據(jù)的話,將從數(shù)據(jù)模式切換到指令模式。
數(shù)據(jù)模式,可以透傳數(shù)據(jù),client 發(fā)什么,server 就原封不動發(fā)出去。指令模式時,AT Server 需要解析 AT 指令,并作出響應(yīng)。
參考
- wiki - Hayes command set
https://en.wikipedia.org/wiki/Hayes_command_set
V.250ter
https://www.itu.int/rec/T-REC-V.25ter-199508-S
3GPP TS 27.007
http://www.arib.or.jp/english/html/overview/doc/STD-T63v9_30/5_Appendix/Rel10/27/27007-a70.pdf