ARM連接GPRS收不到數據

整了3天問題終於得到解決

1)項目需求:

ARMGPRS模塊(型號爲深圳市普衆通信技術有限公司SIM300-EVB_V2.02)通過串口連接,實現ARM來控制GPRS模塊,將數據發送至遠程聯網PC終端,即實現GPRS模塊上網功能。這個功能的實現,需要ARMGPRS模塊發送8AT指令,即:

1) 發送      AT+CPIN?                  // 查詢模塊是否有設置pin

收回響應      +CPIN: READY

              OK

   2)發送       AT+CSQ                    // 查詢天線信號質量

收回響應       +CSQ: 16,0

OK

   3)發送       AT+CGREG?                 // 查詢模塊是否有註冊網絡

收回響應       +CGREG: 0,1

OK

   4)發送       AT+CGATT?                 // 查詢模塊是否附着GPRS網絡

收回響應       +CGATT: 1

OK                        // 以上返回正常後在操作TCP/IP應用

   5)發送       AT+CSTT                   // 設置APN

  收回響應       OK

   6)發送       AT+CIICR                  // 激活移動場景

  收回響應       OK

   7)發送       AT+CIFSR                  // 獲得本地IP地址

  收回響應    10.29.125.44

   8)發送       AT+CIPSTART="TCP","113.89.205.35",1985     // 建立TCP/IP連接

  收回響應    OK

              CONNECT OK

 這樣就設置成功了,可以發送數據了,例如:AT+CIPSEND

> 123456

SEND OK

 這樣發送過去,遠程聯網PC上面的SOCKET服務器端,可以接受到數據123456

  9)最後,發送 AT+CIPSHUT

       收回響應 SHUT OK

2)問題分析:

1)將AT命令通過ARM板子串口發送給GPRS但是卻無法收到GPRS的正確迴應,即不能正確的接受到OK

2)將ARM板子的調試串口和上位機主機後面的COM1連接,板子另外的一個COM0串口(COM2)和上位機COM3(我使用USB轉換COM裝置轉出了一個COM3)連接,通過串口通信軟件SecurCRT來控制板子,運行我編寫的串口收發程序,可以發送AT命令給Windows系統的串口調試助手,串口調試助手可以顯示發送過來的字符串AT,也可以通過串口調試助手給我的Windows系統串口通信軟件SecurCRT發送字符串過來可以道道迴應。但是這些只是測試只是模擬,當GPRS模塊和ARM板子通過串口相連接時,串口通信軟件SecurCRT卻無法收到GPRS的迴應。

3)首先,檢查硬件(串口線或者usb轉串等),都沒有問題。

   其次,查找串口的參數配置或讀串口數據的函數,沒有問題。

  再次,直連線、交叉聯繫,ARMPC通訊都驗證,結論是隻要ARMGPRS

就收不到數據。

  最後,更換ARM開發板上的串口,問題終於得到結局。

3)解決方法:

ARM板子的調試串口和上位機主機後面的COM1連接,板子另外的一個COM1串口(COM3)和上位機COM3(我使用USB轉換COM裝置轉出了一個COM3)連接。問題就得到解決。(即更換ARM開發板上的串口問題就得到解決)

4)原因分析:

   COM0RS232/RS485(帶隔離) 3

    COM2RS232/RS485(帶隔離) 3

    COM1RS232 5

COM3RS232/TTL 3

COM0COM2帶有78485信號而不是流控信號(RTSCTS),故ARMGPRS連就收不到數據。

串口數據傳輸在大多數嵌入式設備中可使用最簡單的異步串口的連接方式:3線串口。

COM13線串口,故ARMGPRS連就收到數據。

COM35線串口,帶有7(RTS)8(CTS)兩個流控信號,故ARMGPRS連也能收到數

據。

 (5) 反省:

    以後在串口編程時,一定要知道每個DCE模塊的串口定義,配置好每個DCE模塊的串口和開發板DTE串口之間的定義。

 

 

發佈了18 篇原創文章 · 獲贊 5 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章