上云秘笈:連結(jié)通訊模塊的 AT 命令實(shí)用精技
AT 命令(AT Commands)最早是由美國(guó)Hayes公司為了控制 MODEM 發(fā)明的控制協(xié)議。因?yàn)橹噶钍且浴窤T」為開(kāi)頭,故以此稱之。隨后的 3G、4G、NB-IoT 模塊等,均采用 AT 命令來(lái)控制,AT 命令逐漸在產(chǎn)品開(kāi)發(fā)中成為實(shí)際標(biāo)準(zhǔn)。AT 命令廣泛的應(yīng)用于嵌入式開(kāi)發(fā)領(lǐng)域,AT 命令作為MCU芯片和通訊模塊的協(xié)議接口,透過(guò)硬件串口,主控MCU可以通過(guò)簡(jiǎn)單的AT命令和通訊模塊連結(jié)完成多種通訊操作。
AT 命令集是一組指令集合,應(yīng)用于 AT 服務(wù)器(AT Server)與 AT 客戶端(AT Client)間的設(shè)備連接與數(shù)據(jù)通信的方式。其結(jié)構(gòu)如下圖所示:
一般 AT 命令由三個(gè)部分組成,分別是:前綴、主體和結(jié)束符。其中前綴由字符 AT 構(gòu)成;主體由命令、參數(shù)和可能用到的數(shù)據(jù)組成;結(jié)束符一般為 <CR><LF> ("\r\n")。
AT 功能的實(shí)現(xiàn)需要 AT Server 和 AT Client 兩個(gè)部分共同完成。
AT Server 主要用于接收 AT Client 發(fā)送的命令,判斷接收的命令及參數(shù)格式,并下發(fā)對(duì)應(yīng)的響應(yīng)數(shù)據(jù),或者主動(dòng)下發(fā)數(shù)據(jù)。
AT Client 主要用于發(fā)送命令、等待 AT Server 響應(yīng),并對(duì) AT Server 響應(yīng)數(shù)據(jù)或主動(dòng)發(fā)送的數(shù)據(jù)進(jìn)行解析處理,獲取相關(guān)信息。
AT Server 和 AT Client 之間支持多種數(shù)據(jù)通訊的方式,目前最常用的是串口 UART 通訊方式。
AT Server 向 AT Client 發(fā)送的數(shù)據(jù)分成兩種:響應(yīng)數(shù)據(jù)和 URC 數(shù)據(jù)。
響應(yīng)數(shù)據(jù):AT Client 發(fā)送命令之后收到的 AT Server 響應(yīng)狀態(tài)和信息。
URC (Unsolicited Result Code))數(shù)據(jù):AT Server 主動(dòng)發(fā)送給 AT Client 的數(shù)據(jù),一般出現(xiàn)在一些特殊的情況,比如 WIFI 連接斷開(kāi)、TCP 接收數(shù)據(jù)等,這些情況往往需要用戶做出相應(yīng)操作。
AT Client 數(shù)據(jù)收發(fā)方式
AT Client 主要功能是發(fā)送 AT 命令、接收數(shù)據(jù)并解析數(shù)據(jù)。下面是對(duì) AT Client 數(shù)據(jù)接收和發(fā)送相關(guān)流程與函數(shù)介紹。相關(guān)結(jié)構(gòu)體定義:
該結(jié)構(gòu)體用于定義一個(gè) AT 命令響應(yīng)數(shù)據(jù)的控制塊,用于存放或者限制 AT 命令響應(yīng)數(shù)據(jù)的數(shù)據(jù)格式。其中 buf 用于存放接收到的響應(yīng)數(shù)據(jù),注意的是 buf 中存放的數(shù)據(jù)并不是原始響應(yīng)數(shù)據(jù),而是原始響應(yīng)數(shù)據(jù)去除結(jié)束符("\r\n")的數(shù)據(jù),buf 中每行數(shù)據(jù)以 '\0' 分割,方便按行獲取數(shù)據(jù)。buf_size 為用戶自定義本次響應(yīng)最大支持的接收數(shù)據(jù)的長(zhǎng)度,由用戶根據(jù)自己命令返回值長(zhǎng)度定義。line_num 為用戶自定義的本次響應(yīng)數(shù)據(jù)需要接收的行數(shù),如果沒(méi)有響應(yīng)行數(shù)限定需求,可以置為 0。line_counts 用于記錄本次響應(yīng)數(shù)據(jù)總行數(shù)。timeout 為用戶自定義的本次響應(yīng)數(shù)據(jù)最大響應(yīng)時(shí)間。該結(jié)構(gòu)體中 buf_size、line_num、timeout 三個(gè)參數(shù)為限制條件,在結(jié)構(gòu)體創(chuàng)建時(shí)設(shè)置,其他參數(shù)為存放數(shù)據(jù)參數(shù),用于后面數(shù)據(jù)解析。
串口配置信息解析示例
IP 和 MAC 地址解析示例
透過(guò)以上的介紹,可以初步的掌握 AT Client 數(shù)據(jù)收發(fā)方式, 以上的功能都能夠在新唐NuMaker-IoT-M487 開(kāi)發(fā)板上實(shí)現(xiàn)。
NuMaker-IoT-M487 開(kāi)發(fā)板透過(guò)AT命令,可連接支持多種無(wú)線通訊模塊,並整合常用組件,內(nèi)建多軸傳感器,提供兼容 Arduino UNO 與 mikroBUS™ 接口,不論是 GPIO、UART、ADC、PWM、SPI 或 I2C 等等都能連接;外掛 SPI Flash 及提供 microSD 卡插槽。
編輯:zzy 最后修改時(shí)間:2021-12-28