1. 程式人生 > 其它 >at_device sim7670驅動支援gps資訊獲取、基站定位、低功耗

at_device sim7670驅動支援gps資訊獲取、基站定位、低功耗

AT Device神器簡介

AT device 軟體包是由 RT-Thread AT 元件針對不同 AT 裝置的移植檔案和示例程式碼組成,目前支援的 AT 裝置有:ESP8266、ESP32、M26、MC20、RW007、MW31、SIM800C、W60X 、SIM76XX、A9/A9G、BC26 、AIR720、ME3616、M6315、BC28、EC200X、M5311、L610系列裝置等,目前上述裝置都完成對 AT socket 功能的移植,及裝置通過 AT 命令實現標準 socket 程式設計介面,完成 socket 通訊的功能。

開發之前推薦先閱讀官方AT命令部分的官方文件,對整體概念和開發方法有個整體的瞭解。

https://www.rt-thread.org/document/site/#/rt-thread-version/rt-thread-standard/programming-manual/at/at.md

AT Device開啟步驟

AT Device軟體包自帶SIM76XX的支援,開啟方法如下:

1、在scons --dist命令生成的dist目錄中執行menuconfig,選中軟體包。

建議不選擇Enable sample,sample檔名為at_sample_sim76xx.c,隨後可以自己開啟參考。後續我們會在port目錄下建立port_sim76xx.c用於向at系統註冊裝置,採用我們自定義的名稱和引腳。

2、執行pkgs --update自動下載軟體包

3、執行scons --target=mdk5生成工程

4、參考軟體保重sim76xx的例子,添加註冊程式碼,並加入工程。

針對官方驅動,我們做了哪些修改

1、修改了電源管理引腳的定義。

官方手冊上這樣定義上電時序,對於低功耗應用通常我們會控制VBAT,因此就是三個控制引腳。VBAT、PWRKEY、STATUS。因此我們修改struct at_device_sim76xx結構的控制引腳為三個,並修改上下此電時序以滿足手冊要求。

同時支援不配置電源引腳,不配置status引腳的情況。

2、sim76xx_netdev_set_info函式中獲取IP地址時增加重試,避免網路條件不好的時候獲取IP地址慢導致整體失敗

3、修改sim76xx_init_thread_entry註釋掉AT+CREG?過程,直接使用AT+CGREG?檢測網路狀態,電信卡來說AT+CREG總是失敗

4、修改sim76xx_init_thread_entry把設定PDP context放在檢查網路狀態之前

5、增加控制GPS電源開關和獲取GPS座標的程式碼

GPS採用模組內部控制的方式,這樣才能利用模組內部的GPS熱啟動、AGPS等功能。

新增GPS上下電的命令字。

實現GPS上電程式碼

實現GPS斷電程式碼

如果GPS已經開啟,優先從GPS獲取座標,不成功或沒有開啟則採用基站定位。