<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁 > 物聯網與傳感器 > 設計應用 > 物聯網從業者必須要會的AT指令介紹

          物聯網從業者必須要會的AT指令介紹

          作者:時間:2023-12-15來源:歐工玩轉嵌入式收藏

           對于大多數從業者來說,有兩樣東西是避免不了的,一個是單片機,一個是移動模塊?,F在主流的模塊都以4G模組和NB-IOT模組為主(由于運營商正在對2G進行退網,在新產品上繼續使用2G模組已經是個不明智的決定了)。無論是曾經的2G模組還是現在主流的4G和NB-IOT模組,都采用了AT指令的方式與外部控制器進行,AT指令因此成為從業者必須要掌握的知識。

          本文引用地址:http://www.ex-cimer.com/article/202312/453928.htm

          4G模組舉例

            AT是Attention的縮寫,最早是賀氏公司(Hayes)為了控制調制解調器而發明的協議。后來隨著網絡帶寬的升級,速度很低的撥號調制解調器基本退出一般使用市場,但是 AT 命令保留了下來,并且逐漸被標準化?,F在的移動通信模組(2G,4G,NB-IOT)皆采用AT指令作為其控制協議,AT 指令已經成為通信模組產品開發中的實際標準。

          某4G模塊應用示意圖

            AT指令只是AT客戶端(如)和AT服務器(如移動通信模組)之間的軟件接口,硬件上基本都采用串口作為接口。有一點需要注意,很多模塊的串口電平采用的是1.8V,而大多數的IO口電平是3.3V或5V,所以在硬件連接上需要依據具體情況考慮進行電平轉換。

          AT指令工作示意圖

            AT指令的大部分使用場景是這樣:主動發送AT指令給模組,然后等待模組返回數據,MCU再根據返回的數據做對應操作。每個AT指令都有一個超時時間,如果MCU發送出AT指令后在超時時間內沒有收到返回的數據則需要重試。AT指令中還有一種數據被成為URC數據,URC的全稱是Unsolicited Result Code,翻譯成中文就是“不請自來的結果碼”。顧名思義,它不是模塊對MCU所發送AT指令的返回,而是模塊主動上報的數據。比如模塊收到TCP數據包,或者模塊的網絡狀態發生改變,都會通過URC數據主動告知MCU。


            下面介紹下AT指令的格式。AT指令是基于字符串的通信協議,一般 AT 命令由三個部分組成,分別是:前綴、主體和結束符。其中前綴由字符“AT”構成;主體由命令、參數和可能用到的數據組成,結束符一般為 <CR><LF> (即回車換行,對應于ASCII碼中的“rn”)。AT指令可以分為以下幾種(<x>代表命令):


            上表中省略了結束符,在實際使用中,將<x>替換為要用的命令,并且整個命令需要以<CR><LF>結尾。如何知道模塊都支持哪些AT指令呢?關于具體的AT指令,其實不用刻意去記憶,因為每個模塊都會有配套的AT指令集手冊,要用的時候再去查詢手冊就行了。

          AT指令應用舉例(以下指令皆省略了回車換行):

          MCU發送:AT
          模組返回:OK
          命令說明:可以根據是否有OK返回判斷模塊是否可用。


          MCU發送:AT+CGSN
          模組返回:<IMEI>
               OK
          命令說明:用于查詢模組的IMEI。


          MCU發送:AT+CGACT=<state>,<cid>
          模組返回:OK
          命令說明:用于設置模塊PDP上下文激活狀態。


          MCU發送:AT+CGACT?
          模組返回:+CGACT: <cid>,<state>
               OK
          命令說明:用于查詢模塊PDP上下文激活狀態。




          關鍵詞: 物聯網 MCU 通信

          評論


          相關推薦

          技術專區

          關閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();