U8300W模塊內置協議棧的開發筆記

本文主要記錄如何通過UART接口發送AT指令進行GPRS網絡連接。

前言

U8300W是LTE制式的4G網絡模塊,支持移動和聯通4G網絡。
類似的模塊的還有U8300C、U7500、C5300。
U8300C是支持電信4G的全網通模塊。
U7500是隻支持聯通3G模塊。
C5300是隻支持電信3G模塊。

這幾個模塊的開發方式是一樣的,支持的AT命令也都差不多。

 

硬件

硬件上使用一路UART接口與模塊通信,UART接口默認使用115200波特率。
模塊上電就會啓動,可以通過拉低RESET管腳對模塊進行復位操作。
 

軟件

AT命令的格式:
發送方是以AT開頭0x0D結尾的字符串,格式比較統一。
模塊響應是以0x0D,0x0A結尾,但開頭字符是沒有統一的格式,有的指令響應是以+開頭,有的又沒有。

 

AT指令軟件初始化流程僅供參考:

第1步:等待模塊就緒
由於模塊上電就會啓動,但啓動時模塊的UART接口會打印模塊的啓動日誌,大約持續30秒。
所以主機最好延時30秒再循環發送AT,等待模塊響應OK,表示模塊通信就緒了。
如果發送了多次都沒有響應,則可以給模塊來一個復位信號。
再重複上面的操作。

第2步:基本參數設置
2.1 發送ATE0,關閉指令回顯。
如果不關閉回顯,主機發什麼,模塊就會原樣回覆,適合於在終端軟件里人工發送命令,可以看到輸入指令。
但是我們做產品是用程序去發指令,指令回顯不利於寫代碼解析響應數據,所以關掉爲好。
2.2 發送AT+CREG=0,取消註冊狀態主動上報
註冊狀態通過AT+CREG?查詢就行了,可以不用主動上報。
2.3 發送AT+CMEE=2,設置錯誤反饋方式
設置爲0所有的錯誤都會返回ERROR.
設置爲2某些指令錯誤會返回+CME ERROR:給出詳細的錯誤信息
2.4 發送AT+MODODR=2,設置模塊搜網模式
U8300可以通過這個指令設置鎖定4G或2G網絡。

第3步:模塊識別
主機發送AT+GMM,可以得到模塊型號。
但是這條指令的響應內容就是模塊型號字符串,沒有固定的頭和尾,解析比較困難,
如果發這條指令之後,模塊突然主動上報一些其它內容,不要把干擾數據當成模塊型號了!
發送ATI也可以得到模塊型號,還可以獲取模塊固件版本號信息。

第4步:檢測SIM卡
主機發送AT+CPIN?,可以得到SIM卡狀態。
這條指令很好解析,響應是格式是+CPIN: <code>
檢測到接收的內容是+CPIN開頭,就可以確定這是指令應答,而不是模塊主動上報的干擾數據。
當<code>爲READY時表示SIM卡也就緒了,可以進行下一步操作了。
當<code>爲其它狀態時,看手冊吧,反正是不正常的狀態。
發送AT+CIMI可以得到IMSI信息,從號碼的前5位可以判斷這張卡是哪家運營商,
比如46000是中國移動,46001是中國聯通。

第5步:等待註冊網絡
主機發送AT+CREG?
模塊響應+CREG:<n>,<stat>
當stat的值爲1或者5時,表示註冊成功。
可以發送AT+COPS?查詢當前註冊的是哪家運營商
可以發送AT+CSQ查詢信號強度1-31,31表示信號最強

第6步:激活GPRS數據連接
主機發送AT+MIPPROFILE=1,<apn>,<user>,<pass>設置APN接入點。
模塊響應:OK
主機發送AT+MIPCALL=1激活GPRS數據連接。
模塊響應:+MIPCALL:<IP>
模塊響應:OK

第7步:數據連接相關的參數設置
發送AT+MIPHEX=1,設置數據格式
內嵌TCP/IP協議棧發送數據時採用16進制字符串的格式,而不使用原始二進制數據。

至此模塊的網絡初始化完成了。
可以進行網絡通信了。

第8步:連接遠程服務器
發送AT+MIPOPEN=<id>,0,<host>,<port>,0
<id>是通道號碼,模塊支持1-4通道,可以理解爲socket句柄。
<host>可以是域名也可以是IP地址。
<port>是服務器端口。
模塊響應:+MIPOPEN:<id>,<sta>
模塊響應:OK
響應的<sta>是連接狀態,1表示連接成功,0表示連接失敗。

第9步:發送數據
發送AT+MIPSEND=<id>,<data>
<id>是通道號碼
<data>是數據內容,用雙引號包含的HEX編碼。
發完這條命令是把數據放到模塊緩衝區,緩衝區最大1372字節。
還要再發送:AT+MIPPUSH=<id>纔會把數據發送到遠程服務器。
模塊響應:OK

第10步:接收數據
當模塊收到遠程服務器發送的數據時會主動上報。
+MIPRTCP:<id>,<len>,<data><\r\n>
<id>是通道號碼
<len>是數據長度
<data>是接收數據以HEX編碼

第11步:關閉連接
如果是服務器發起的關閉連接,模塊會主動上報:
+MIPSTATUS: TCP <id> DISCONNECT
如果是模塊發起關閉連接,要向模塊發送:AT+MIPCLOSE=<id>
模塊響應:+MIPCLOSE:<id>,0,0,0
模塊響應:OK
 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章