Page 1 of 1

上雲秘笈: 連結通訊模組的AT命令實用精技

Posted: 05 Nov 2020, 12:05
by NuvotonMarcom
AT 命令(AT Commands)最早是由美國Hayes公司為了控制 MODEM 發明的控制協議。因為指令是以「AT」為開頭,故以此稱之。隨後的 3G、4G、NB-IoT 模組等,均採用 AT 命令來控制,AT 命令逐漸在產品開發中成為實際標準。AT 命令廣泛的應用於嵌入式開發領域,AT 命令作為MCU晶片和通訊模組的協定介面,透過硬體串口,主控MCU可以通過簡單的AT命令和通訊模組連結完成多種通訊操作。

AT 命令集是一組指令集合,應用於 AT 伺服器(AT Server)與 AT 用戶端(AT Client)間的設備連接與資料通信的方式。

1. 一般 AT 命令由三個部分組成,分別是:首碼、主體和結束符。其中首碼由字元 AT 構成;主體由命令、參數和可能用到的資料組成;結束符一般為 <CR><LF> ("\r\n")。
2. AT 功能的實現需要 AT Server 和 AT Client 兩個部分共同完成。
3. AT Server 主要用於接收 AT Client 發送的命令,判斷接收的命令及參數格式,並下發對應的回應資料,或者主動下發資料。
4. AT Client 主要用於發送命令、等待 AT Server 回應,並對 AT Server 回應資料或主動發送的資料進行解析處理,獲取相關資訊。
5. AT Server 和 AT Client 之間支援多種資料通訊的方式,目前最常用的是串口 UART 通訊方式。
6. AT Server 向 AT Client 發送的資料分成兩種:回應資料和 URC 資料。
7. 回應資料: AT Client 發送命令之後收到的 AT Server 回應狀態和資訊。
8. URC (Unsolicited Result Code))數據: AT Server 主動發送給 AT Client 的資料,一般出現在一些特殊的情況,比如 WIFI 連接斷開、TCP 接收資料等,這些情況往往需要使用者做出相應操作。


AT Client 資料收發方式
AT Client 主要功能是發送 AT 命令、接收資料並解析資料。下面是對 AT Client 資料接收和發送相關流程與函數介紹。相關結構體定義:
AT_2.png
AT_2.png (21.59 KiB) Viewed 2951 times


該結構體用於定義一個 AT 命令回應資料的控制塊,用於存放或者限制 AT 命令回應資料的資料格式。其中 buf 用於存放接收到的回應資料,注意的是 buf 中存放的資料並不是原始回應資料,而是原始回應資料去除結束符("\r\n")的資料,buf 中每行資料以 '\0' 分割,方便按行獲取資料。buf_size 為用戶自訂本次回應最大支援的接收資料的長度,由使用者根據自己命令返回值長度定義。line_num 為使用者自訂的本次回應資料需要接收的行數,如果沒有回應行數限定需求,可以置為 0。 line_counts 用於記錄本次回應資料總行數。timeout 為使用者自訂的本次回應資料最大回應時間。該結構體中 buf_size、line_num、timeout 三個參數為限制條件,在結構體創建時設置,其他參數為存放資料參數,用於後面資料解析。

範例1:串口配置資訊解析示例
AT_3.png
AT_3.png (4.72 KiB) Viewed 2951 times

範例2: IP 和 MAC 地址解析示例
AT_4.png
AT_4.png (5.85 KiB) Viewed 2956 times


透過以上的介紹,可以初步的掌握 AT Client 資料收發方式, 以上的功能都能夠在新唐NuMaker-IoT-M487 開發板上實現。

NuMaker-IoT-M487 開發板透過AT命令,可連接支援多種無線通訊模組,並整合常用元件,內建多軸感測器,提供相容 Arduino UNO 與 mikroBUS™ 介面,不論是 GPIO、UART、ADC、PWM、SPI 或 I2C 等等都能連接;外掛 SPI Flash 及提供 microSD 卡插槽。