欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

STM32通過GSM模塊獲取網絡時間并設置到單片機內部RTC中實現上電自動校準時間

查看數: 12190 | 評論數: 7 | 收藏 7
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2019-6-20 23:52

正文摘要:

        先簡單說一下實驗目的吧。平時做項目或做一些小作品的時候需要用到時間,時間用的是STM32內部的RTC,在精度要求不是特別高時這樣省去接外設時鐘模塊,省時省力。但我們都知道 ...

回復

ID:435174 發表于 2020-2-5 20:59
本帖最后由 Linux— 于 2020-2-5 21:41 編輯

各位,我又找到了一種方法,數據手冊上提到的。封裝成函數就是這樣的,親測可用:
函數如下:
  1. u8 Synchro_NTP_Time(void)//同步時間
  2. {   
  3.     printf("\r\n正在同步網絡\r\n");
  4.         if(sim900a_send_cmd("AT+SAPBR=3,1,\"CONTYPE\",\"GPRS\"\r\n","OK",100))   //設置網絡參數
  5.         {
  6.             printf("設置網絡參數失敗\r\n");
  7.             return 1;
  8.         }

  9.       if(sim900a_send_cmd("AT+SAPBR=3,1,\"APN\",\"UNIWAP\"\r\n","OK",500))  //設置APN
  10.       {
  11.           printf("設置APN失敗\r\n");
  12.           return 2;
  13.       }
  14.        if( sim900a_send_cmd("AT+SAPBR=1,1\r\n","OK",200))//激活網絡場景
  15.        {
  16.             printf("激活網絡場景失敗\r\n");
  17. //           sim900a_send_cmd("AT+CGATT=1\r\n","OK",200);
  18.            return 3;
  19.        }

  20.         if(sim900a_send_cmd("AT+SAPBR=2,1\r\n","OK",600))   //獲取分配的ip地址
  21.         {
  22.             printf("獲取分配的IP地址失敗\r\n");
  23.             return 4;
  24.         }

  25.         if(sim900a_send_cmd("AT+CNTP=\"ntp1.aliyun.com\",32\r\n","OK",200)) //設置NTP服務地址和時區(阿里云的NTP)
  26.         {
  27.             printf("設置NTP服務地址和時區失敗\r\n");
  28.             return 5;      
  29.         }

  30.         if(sim900a_send_cmd("AT+CNTP\r\n","CNTP: 1",500))  //開啟網絡同步
  31.         {
  32.             printf("開啟網絡同步失敗\r\n");
  33.             return 6;     
  34.         }  
  35.         printf("\r\n網絡同步成功!\r\n");
  36.         Get_GSM_RTCtime();
  37.         
  38.         return 0;
  39. }


復制代碼

只要模塊注冊到了網絡,一下子就同步到網絡了,GSM模塊內部時間也自動對齊網絡時間了。模塊有信號能注冊到網絡的話一秒鐘就搞定了,還是很快的。調用的時候可以讓它循環執行,若是不成功,設置失敗次數達到10次就跳出就好了。若是失敗的話估計就是在關閉網絡場景那一步,其他的沒啥問題。下面是我在串口調試助手顯示的內容:
  1. AT
  2. OK
  3. AT+CPIN?
  4. READY
  5. GSM模塊自檢成功
  6. AT+CCLK?
  7. CCLK: "04/01/01,00:00:05+0
  8. 獲取SIM900A內部時間日期中...
  9. AT+CCLK?
  10. CCLK?

  11. +CCLK: "04/01/01,00:00:05+0
  12. 模塊返回時間數據:CCLK?

  13. +CCLK: "04/01/01,00:00:05+08"

  14. OK

  15. SMS Ready
  16. AT+CCLK?

  17. +CCLK: "04/01/01,00:00:05+08"

  18. OK

  19. 數據轉換成功

  20. GSM內部時間:2004年01月01日00時00分05秒
  21. 系統初始化完畢!

  22. 進入同步網絡模式

  23. 正在同步網絡
  24. AT+SAPBR=3,1,"CONTYPE","GPRS"
  25. OK
  26. AT+SAPBR=3,1,"APN","UNIWAP"
  27. OK
  28. AT+SAPBR=1,1
  29. OK
  30. AT+SAPBR=2,1
  31. OK
  32. AT+CNTP="ntp1.aliyun.com",32
  33. OK
  34. AT+CNTP
  35. CNTP: 1

  36. 網絡同步成功!
  37. AT+CCLK?
  38. CCLK: "20/02/05,20
  39. 獲取SIM900A內部時間日期中...
  40. AT+CCLK?
  41. CCLK?

  42. +CCLK: "20/02/05,20
  43. 模塊返回時間數據:CCLK?

  44. +CCLK: "20/02/05,20:33:05+08"

  45. OK
  46. AT+CCLK?

  47. +CCLK: "20/02/05,20:33:05+08"

  48. OK

  49. 數據轉換成功

  50. GSM內部時間:2020年02月05日20時33分05秒
復制代碼


可以看到模塊剛開機初始化完成時內部時間是2004年01月01日00時00分05秒,同步網絡后時間自動更新到當前時間:2020年02月05日20時33分05秒 了。有興趣的各位不妨試試。相關的截圖和NTP同步的手冊截圖請看博客https://blog.csdn.net/qq_36112455/article/details/92798026。因為這里的我不懂怎么在評論添加圖片。
ID:435174 發表于 2020-1-23 23:40
Linux— 發表于 2020-1-3 00:18
從SIM卡獲取妥妥的,服務器不穩。 AT指令集你去查一下  AT+CCLK?

現在回頭看了下,其實用服務器那種方式還是很穩的,只需要小小改動一下,在void Get_Sever_Time(void)函數下把所有USART2_RX_BUF改成AT_RecvBuffer就好了,克服了上文說的那些缺點,今晚測試過好多次了,沒有失敗過,每次都成功。而且連接服務器的速度其實是跟信號有關的,之前那個地方信號太弱了,導致連接速度比較慢,在信號好的地方一下子就連上了。還有,AT+CCLK?只是獲取模塊的內部時間,斷電重新上電后還是要從網絡獲取時間同步進去的,不然也是不準的。此外,獲取網絡時間和日期也可以用GPRS基站定位,從返回的字符串中把時間數據解析出來就行了。這個方法我也測過了,是能用的,但對信號強度要求更高,不然網絡沒配置好的話也是定位不到進而獲取不了數據的。

評分

參與人數 1黑幣 +30 收起 理由
admin + 30 回帖助人的獎勵!

查看全部評分

ID:435174 發表于 2020-1-23 23:30
lis。ss 發表于 2019-10-27 17:54
"TCP","time.nist.gov","13"  發完后回來數據是   IIII  這樣的,怎么回事?,之前成功過

現在回頭看了下,你這個問題是串口2中斷接收沒處理好造成的。如果不想改中斷服務函數的話就在void Get_Sever_Time(void)函數下把所有USART2_RX_BUF改成AT_RecvBuffer可以解決此問題,而且再也不會出現上文提到的那些確定,我今晚用SIM800C測過好幾遍了,沒問題,很好用。你可以試下。
ID:435174 發表于 2020-1-3 00:18
qq1182560902 發表于 2019-12-30 13:34
獲取時間不穩定嗎??SIM卡或者時間是怎么做的?

從SIM卡獲取妥妥的,服務器不穩。 AT指令集你去查一下  AT+CCLK?
ID:613800 發表于 2019-12-30 13:34
獲取時間不穩定嗎??SIM卡或者時間是怎么做的?
ID:435174 發表于 2019-10-31 21:09
lis。ss 發表于 2019-10-27 17:54
"TCP","time.nist.gov","13"  發完后回來數據是   IIII  這樣的,怎么回事?,之前成功過

別用服務器的方式獲取了,不穩定不可靠,老是莫名其妙出現奇奇怪怪的問題。用我說的第二種方法直接從SIM卡獲取時間吧
ID:355468 發表于 2019-10-27 17:54
"TCP","time.nist.gov","13"  發完后回來數據是   IIII  這樣的,怎么回事?,之前成功過

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表