標(biāo)題: GPS北斗定位模塊相關(guān)STM32開發(fā)資料(源碼+配套軟件+手冊(cè)) [打印本頁]

作者: gongming    時(shí)間: 2018-3-6 09:34
標(biāo)題: GPS北斗定位模塊相關(guān)STM32開發(fā)資料(源碼+配套軟件+手冊(cè))
利用正點(diǎn)原子的探索者開發(fā)板做GPS定位


配套的軟件資料:

配套上位機(jī)及使用說明

封裝庫與電路原理圖:




實(shí)驗(yàn)器材:
    阿波羅STM32F429開發(fā)板
   
實(shí)驗(yàn)?zāi)康?
    學(xué)習(xí)ATK-S1216F8-BD模塊的使用,實(shí)現(xiàn)GPS/北斗定位
   
硬件資源:
    1,DS0(連接在PB1)
    2,串口1(波特率:115200,PA9/PA10連接在板載USB轉(zhuǎn)串口芯片CH340上面)
    3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模塊(通過FSMC驅(qū)動(dòng),FSMC_NE4接LCD片選/A18接RS),或者RGB接口的4.3/7寸液晶屏
    4,按鍵KEY0(PH3)
    5,串口3(波特率:38400,PB10/PB11連接ATK-S1216F8-BD模塊)
    6,ATK MODULE接口&ATK-S1216F8-BD模塊(模塊直接插ATK MODULE接口即可),連接關(guān)系如下:
    STM32開發(fā)板-->ATK-S1216F8-BD模塊
           PI11-->PPS
           PB10-->RXD
           PB11-->TXD
           GND-->GND
           5V-->VCC
   
實(shí)驗(yàn)現(xiàn)象:
    通過串口2連接ATK-S1216F8-BD模塊,然后通過液晶顯示GPS信息,包括精度、緯度、高度、速度、
    用于定位的衛(wèi)星數(shù)、可見衛(wèi)星數(shù)、UTC時(shí)間等信息。同時(shí),可以通過USMART工具,設(shè)置GPS模塊的刷
    新速率(最大支持20Hz刷新)和時(shí)鐘脈沖的配置。另外,通過KEY0按鍵,可以開啟或關(guān)閉NMEA數(shù)據(jù)的
    上傳(即輸出到串口1,方便開發(fā)調(diào)試)。
   
注意事項(xiàng):
    1,4.3寸和7寸屏需要比較大電流,USB供電可能不足,請(qǐng)用外部電源適配器(推薦外接12V 1A電源).
    2,本例程在LCD_Init函數(shù)里面(在ILI93xx.c),用到了printf,如果不初始化串口1,將導(dǎo)致液晶無法顯示!!  
    3,本例程不支持ALIENTEK CPLD方案的7寸電容觸摸屏(V1版本)的測(cè)試!!
    4,ATK-S1216F8-BD模塊的波特率默認(rèn)設(shè)置為38400(對(duì)應(yīng)開發(fā)板的串口3)。
    5,務(wù)必短接阿波羅STM32F429開發(fā)板P9的PB11(RX)和GBC_TX以及PB10(TX)和GBC_RX
    6,開發(fā)板的串口1(USB_232轉(zhuǎn)出來的串口)的波特率是115200。
    7,如有其他問題,請(qǐng)參考<ATK-S1216F8-BD模塊問題匯總.pdf>(暫時(shí)沒有這個(gè)文檔)。
    8,本例程詳細(xì)說明,見光盤:9,增值資料\1,ALIENTEK 產(chǎn)品資料\16,ATK-S1216F8-BD模塊\ATK-S1216F8-BD模塊使用說明_AN1605D.pdf


stm32單片機(jī)源程序如下:
  1. #include "sys.h"
  2. #include "delay.h"
  3. #include "usart.h"
  4. #include "led.h"
  5. #include "key.h"
  6. #include "sdram.h"
  7. #include "lcd.h"
  8. #include "usmart.h"
  9. #include "gps.h"
  10. /************************************************
  11. ALIENTEK 阿波羅STM32F429開發(fā)板擴(kuò)展實(shí)驗(yàn)16
  12. ATK-S1216F8 GPS/北斗模塊測(cè)試實(shí)驗(yàn)-HAL庫函數(shù)版
  13. ************************************************/
  14. u8 USART1_TX_BUF[USART3_MAX_RECV_LEN];                                         //串口1,發(fā)送緩存區(qū)
  15. nmea_msg gpsx;                                                                                         //GPS信息
  16. __align(4) u8 dtbuf[50];                                                                   //打印緩存器
  17. const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "};        //fix mode字符串
  18.           
  19. //顯示GPS定位信息
  20. void Gps_Msg_Show(void)
  21. {
  22.         float tp;                  
  23.         POINT_COLOR=BLUE;           
  24.         tp=gpsx.longitude;          
  25.         sprintf((char *)dtbuf,"Longitude:%.5f %1c   ",tp/=100000,gpsx.ewhemi);        //得到經(jīng)度字符串
  26.         LCD_ShowString(30,120,200,16,16,dtbuf);                   
  27.         tp=gpsx.latitude;          
  28.         sprintf((char *)dtbuf,"Latitude:%.5f %1c   ",tp/=100000,gpsx.nshemi);        //得到緯度字符串
  29.         LCD_ShowString(30,140,200,16,16,dtbuf);                  
  30.         tp=gpsx.altitude;          
  31.         sprintf((char *)dtbuf,"Altitude:%.1fm     ",tp/=10);                                    //得到高度字符串
  32.         LCD_ShowString(30,160,200,16,16,dtbuf);                                   
  33.         tp=gpsx.speed;          
  34.         sprintf((char *)dtbuf,"Speed:%.3fkm/h     ",tp/=1000);                                    //得到速度字符串         
  35.         LCD_ShowString(30,180,200,16,16,dtbuf);                                             
  36.         if(gpsx.fixmode<=3)                                                                                                                //定位狀態(tài)
  37.         {  
  38.                 sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);       
  39.           LCD_ShowString(30,200,200,16,16,dtbuf);                          
  40.         }                     
  41.         sprintf((char *)dtbuf,"GPS+BD Valid satellite:%02d",gpsx.posslnum);                         //用于定位的GPS衛(wèi)星數(shù)
  42.         LCD_ShowString(30,220,200,16,16,dtbuf);            
  43.         sprintf((char *)dtbuf,"GPS Visible satellite:%02d",gpsx.svnum%100);                         //可見GPS衛(wèi)星數(shù)
  44.         LCD_ShowString(30,240,200,16,16,dtbuf);
  45.        
  46.         sprintf((char *)dtbuf,"BD Visible satellite:%02d",gpsx.beidou_svnum%100);                         //可見北斗衛(wèi)星數(shù)
  47.         LCD_ShowString(30,260,200,16,16,dtbuf);
  48.        
  49.         sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d   ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date);        //顯示UTC日期
  50.         LCD_ShowString(30,280,200,16,16,dtbuf);                    
  51.         sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d   ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec);        //顯示UTC時(shí)間
  52.   LCD_ShowString(30,300,200,16,16,dtbuf);                  
  53. }   
  54. int main(void)
  55. {
  56.         u16 i,rxlen;
  57.         u16 lenx;
  58.         u8 key=0XFF;
  59.         u8 upload=0;
  60.         Stm32_Clock_Init(360,25,2,8);   //設(shè)置時(shí)鐘,180Mhz   
  61.   HAL_Init();                     //初始化HAL庫
  62.   delay_init(180);                //初始化延時(shí)函數(shù)
  63.   uart_init(115200);              //初始化USART1
  64.         usart3_init(38400);                                                  //初始化串口3波特率為38400
  65.         SDRAM_Init();                   //初始化SDRAM
  66.         LCD_Init();                     //LCD初始化
  67.         LED_Init();                     //初始化LED
  68.   KEY_Init();                     //初始化按鍵
  69.         usmart_dev.init(90);                                                //初始化usmart
  70.         POINT_COLOR=RED;
  71.         LCD_ShowString(30,20,200,16,16,"Apollo STM32F4/F7 ^_^");          
  72.         LCD_ShowString(30,40,200,16,16,"S1216F8-BD TEST");       
  73.         LCD_ShowString(30,60,200,16,16,"ATOM@ALIENTEK");
  74.         LCD_ShowString(30,80,200,16,16,"KEY0:Upload NMEA Data SW");                                                                                                         
  75.   LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
  76.         if(SkyTra_Cfg_Rate(5)!=0)        //設(shè)置定位信息更新速度為5Hz,順便判斷GPS模塊是否在位.
  77.         {
  78.            LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Setting...");
  79.                 do
  80.                 {
  81.                         usart3_init(9600);                        //初始化串口3波特率為9600
  82.                   SkyTra_Cfg_Prt(3);                        //重新設(shè)置模塊的波特率為38400
  83.                         usart3_init(38400);                        //初始化串口3波特率為38400
  84.       key=SkyTra_Cfg_Tp(100000);        //脈沖寬度為100ms
  85.                 }while(SkyTra_Cfg_Rate(5)!=0&&key!=0);//配置SkyTraF8-BD的更新速率為5Hz
  86.           LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Set Done!!");
  87.                 delay_ms(500);
  88.                 LCD_Fill(30,120,30+200,120+16,WHITE);//清除顯示
  89.         }
  90.         while(1)
  91.         {               
  92.                 delay_ms(1);
  93.                 if(USART3_RX_STA&0X8000)                //接收到一次數(shù)據(jù)了
  94.                 {
  95.                         rxlen=USART3_RX_STA&0X7FFF;        //得到數(shù)據(jù)長度
  96.                         for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART3_RX_BUF[i];          
  97.                         USART3_RX_STA=0;                           //啟動(dòng)下一次接收
  98.                         USART1_TX_BUF[i]=0;                        //自動(dòng)添加結(jié)束符
  99.                         GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
  100.                         Gps_Msg_Show();                                //顯示信息       
  101.                         if(upload)printf("\r\n%s\r\n",USART1_TX_BUF);//發(fā)送接收到的數(shù)據(jù)到串口1
  102.                 }
  103.                 key=KEY_Scan(0);
  104.                 if(key==KEY0_PRES)
  105.                 {
  106.                         upload=!upload;
  107.                         POINT_COLOR=RED;
  108.                         if(upload)LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:ON ");
  109.                         else LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
  110.                 }
  111.                 if((lenx%500)==0)
  112.                         LED0=!LED0;
  113.                 lenx++;       
  114.         }
  115. }
復(fù)制代碼


所有資料51hei提供下載:
16,ATK-S1216 GPS 北斗定位模塊.rar (13.25 MB, 下載次數(shù): 513)





作者: wlhuang    時(shí)間: 2018-3-8 15:44
感謝分享~
作者: jacky1223    時(shí)間: 2018-3-8 16:38
66666666666666
作者: 艾肯    時(shí)間: 2018-3-26 20:49
厲害厲害厲害
作者: zicren    時(shí)間: 2018-3-28 17:41
感謝分享!
作者: sqz    時(shí)間: 2018-4-14 09:28
請(qǐng)問不一樣的北斗模塊可以用這個(gè)程序嗎?是和芯星通um220-Ⅲ n 的,單片機(jī)是f407的可以嗎?
作者: 睡著的水    時(shí)間: 2018-4-16 15:20
很好很好
作者: 驍勇阿凱    時(shí)間: 2018-9-9 11:42
樓主很棒,請(qǐng)問具體的怎么把電子地圖做成底層數(shù)據(jù)呢?
作者: fyyy4030    時(shí)間: 2019-1-19 11:45
mark!!!!!!!!!!!!!!!!!!!!
作者: 0123456789z    時(shí)間: 2019-3-10 09:37
請(qǐng)問天宮測(cè)控的skg09a可以通用嗎

作者: heaven666    時(shí)間: 2019-3-25 08:50
請(qǐng)問樓主有北斗模塊接收到的數(shù)據(jù)在串口調(diào)試助手上顯示的代碼 嗎
作者: 貓の傲嬌    時(shí)間: 2019-5-15 09:01
非常感謝
作者: PO999999    時(shí)間: 2019-5-16 13:51
感謝分享
作者: pic114    時(shí)間: 2019-11-2 11:31
非常感謝..........
作者: 小白不懂店    時(shí)間: 2019-11-5 19:31
感謝大神
作者: zxg_751005    時(shí)間: 2019-12-27 10:17
支持國貨
作者: 643166069    時(shí)間: 2019-12-29 07:35
支持 以前用GPS多一些,準(zhǔn)備入手北斗試一下~
作者: baogang    時(shí)間: 2020-2-12 15:54
感謝分享,正在找這方面的資料。
作者: 盧拓拓    時(shí)間: 2020-3-13 12:52
感謝分享
作者: Patrick6277    時(shí)間: 2020-6-11 21:21
感謝分享
作者: 潛在學(xué)習(xí)    時(shí)間: 2020-7-20 10:38
我下載的文件里邊,打開沒有任何內(nèi)容?
作者: 1981818001    時(shí)間: 2020-11-19 14:11
潛在學(xué)習(xí) 發(fā)表于 2020-7-20 10:38
我下載的文件里邊,打開沒有任何內(nèi)容?

升級(jí)winrar
作者: myw1999    時(shí)間: 2021-3-8 16:42
我找到一個(gè)是正點(diǎn)原子ATK-NEO-6M的GPS模塊實(shí)驗(yàn),請(qǐng)問跟這一個(gè)S1216有什么區(qū)別嗎
作者: 菜菜zz    時(shí)間: 2022-4-24 19:53
北斗汽車導(dǎo)航定位 系統(tǒng)設(shè)計(jì)與研究。。?梢詤⒖歼@個(gè)嗎?
作者: huaishang    時(shí)間: 2024-6-22 14:50

感謝分享,正在找這方面的資料。




歡迎光臨 (http://www.torrancerestoration.com/bbs/) Powered by Discuz! X3.1