找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 21825|回复: 23
打印 上一主题 下一主题
收起左侧

GPS北斗定位模块相关STM32开发资料(源码+配套软件+手册)

  [复制链接]
跳转到指定楼层
楼主
利用正点原子的探索者开发板做GPS定位


配套的软件资料:

配套上位机及使用说明

封装库与电路原理图:




实验器材:
    阿波罗STM32F429开发板
   
实验目的:
    学习ATK-S1216F8-BD模块的使用,实现GPS/北斗定位
   
硬件资源:
    1,DS0(连接在PB1)
    2,串口1(波特率:115200,PA9/PA10连接在板载USB转串口芯片CH340上面)
    3,ALIENTEK 2.8/3.5/4.3/7寸TFTLCD模块(通过FSMC驱动,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接口即可),连接关系如下:
    STM32开发板-->ATK-S1216F8-BD模块
           PI11-->PPS
           PB10-->RXD
           PB11-->TXD
           GND-->GND
           5V-->VCC
   
实验现象:
    通过串口2连接ATK-S1216F8-BD模块,然后通过液晶显示GPS信息,包括精度、纬度、高度、速度、
    用于定位的卫星数、可见卫星数、UTC时间等信息。同时,可以通过USMART工具,设置GPS模块的刷
    新速率(最大支持20Hz刷新)和时钟脉冲的配置。另外,通过KEY0按键,可以开启或关闭NMEA数据的
    上传(即输出到串口1,方便开发调试)。
   
注意事项:
    1,4.3寸和7寸屏需要比较大电流,USB供电可能不足,请用外部电源适配器(推荐外接12V 1A电源).
    2,本例程在LCD_Init函数里面(在ILI93xx.c),用到了printf,如果不初始化串口1,将导致液晶无法显示!!  
    3,本例程不支持ALIENTEK CPLD方案的7寸电容触摸屏(V1版本)的测试!!
    4,ATK-S1216F8-BD模块的波特率默认设置为38400(对应开发板的串口3)。
    5,务必短接阿波罗STM32F429开发板P9的PB11(RX)和GBC_TX以及PB10(TX)和GBC_RX
    6,开发板的串口1(USB_232转出来的串口)的波特率是115200。
    7,如有其他问题,请参考<ATK-S1216F8-BD模块问题汇总.pdf>(暂时没有这个文档)。
    8,本例程详细说明,见光盘:9,增值资料\1,ALIENTEK 产品资料\16,ATK-S1216F8-BD模块\ATK-S1216F8-BD模块使用说明_AN1605D.pdf


stm32单片机源程序如下:
  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开发板扩展实验16
  12. ATK-S1216F8 GPS/北斗模块测试实验-HAL库函数版
  13. ************************************************/
  14. u8 USART1_TX_BUF[USART3_MAX_RECV_LEN];                                         //串口1,发送缓存区
  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);        //得到经度字符串
  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)                                                                                                                //定位状态
  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卫星数
  42.         LCD_ShowString(30,220,200,16,16,dtbuf);            
  43.         sprintf((char *)dtbuf,"GPS Visible satellite:%02d",gpsx.svnum%100);                         //可见GPS卫星数
  44.         LCD_ShowString(30,240,200,16,16,dtbuf);
  45.        
  46.         sprintf((char *)dtbuf,"BD Visible satellite:%02d",gpsx.beidou_svnum%100);                         //可见北斗卫星数
  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时间
  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);   //设置时钟,180Mhz   
  61.   HAL_Init();                     //初始化HAL库
  62.   delay_init(180);                //初始化延时函数
  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)        //设置定位信息更新速度为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);                        //重新设置模块的波特率为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)                //接收到一次数据了
  94.                 {
  95.                         rxlen=USART3_RX_STA&0X7FFF;        //得到数据长度
  96.                         for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART3_RX_BUF[i];          
  97.                         USART3_RX_STA=0;                           //启动下一次接收
  98.                         USART1_TX_BUF[i]=0;                        //自动添加结束符
  99.                         GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
  100.                         Gps_Msg_Show();                                //显示信息       
  101.                         if(upload)printf("\r\n%s\r\n",USART1_TX_BUF);//发送接收到的数据到串口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. }
复制代码


所有资料51hei提供下载:
16,ATK-S1216 GPS 北斗定位模块.rar (13.25 MB, 下载次数: 483)




评分

参与人数 1黑币 +9 收起 理由
hzd530 + 9 赞一个!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏28 分享淘帖 顶5 踩
回复

使用道具 举报

沙发
ID:289218 发表于 2018-3-8 15:44 | 只看该作者
感谢分享~
回复

使用道具 举报

板凳
ID:289276 发表于 2018-3-8 16:38 | 只看该作者
66666666666666
回复

使用道具 举报

地板
ID:297499 发表于 2018-3-26 20:49 | 只看该作者
厉害厉害厉害
回复

使用道具 举报

5#
ID:298446 发表于 2018-3-28 17:41 | 只看该作者
感谢分享!
回复

使用道具 举报

6#
ID:306441 发表于 2018-4-14 09:28 | 只看该作者
请问不一样的北斗模块可以用这个程序吗?是和芯星通um220-Ⅲ n 的,单片机是f407的可以吗?
回复

使用道具 举报

7#
ID:309258 发表于 2018-4-16 15:20 来自手机 | 只看该作者
很好很好
回复

使用道具 举报

8#
ID:322248 发表于 2018-9-9 11:42 | 只看该作者
楼主很棒,请问具体的怎么把电子地图做成底层数据呢?
回复

使用道具 举报

9#
ID:416404 发表于 2019-1-19 11:45 | 只看该作者
mark!!!!!!!!!!!!!!!!!!!!
回复

使用道具 举报

10#
ID:487733 发表于 2019-3-10 09:37 | 只看该作者
请问天宫测控的skg09a可以通用吗
回复

使用道具 举报

11#
ID:476348 发表于 2019-3-25 08:50 | 只看该作者
请问楼主有北斗模块接收到的数据在串口调试助手上显示的代码 吗
回复

使用道具 举报

12#
ID:538569 发表于 2019-5-15 09:01 | 只看该作者
非常感谢
回复

使用道具 举报

13#
ID:524764 发表于 2019-5-16 13:51 | 只看该作者
感谢分享
回复

使用道具 举报

14#
ID:634277 发表于 2019-11-2 11:31 | 只看该作者
非常感谢..........
回复

使用道具 举报

15#
ID:635041 发表于 2019-11-5 19:31 | 只看该作者
感谢大神
回复

使用道具 举报

16#
ID:631046 发表于 2019-12-27 10:17 | 只看该作者
支持国货
回复

使用道具 举报

17#
ID:90726 发表于 2019-12-29 07:35 | 只看该作者
支持 以前用GPS多一些,准备入手北斗试一下~
回复

使用道具 举报

18#
ID:601868 发表于 2020-2-12 15:54 | 只看该作者
感谢分享,正在找这方面的资料。
回复

使用道具 举报

19#
ID:655963 发表于 2020-3-13 12:52 | 只看该作者
感谢分享
回复

使用道具 举报

20#
ID:773086 发表于 2020-6-11 21:21 | 只看该作者
感谢分享
回复

使用道具 举报

21#
ID:567183 发表于 2020-7-20 10:38 | 只看该作者
我下载的文件里边,打开没有任何内容?
回复

使用道具 举报

22#
ID:87156 发表于 2020-11-19 14:11 | 只看该作者
潜在学习 发表于 2020-7-20 10:38
我下载的文件里边,打开没有任何内容?

升级winrar
回复

使用道具 举报

23#
ID:888678 发表于 2021-3-8 16:42 | 只看该作者
我找到一个是正点原子ATK-NEO-6M的GPS模块实验,请问跟这一个S1216有什么区别吗
回复

使用道具 举报

24#
ID:1021341 发表于 2022-4-24 19:53 | 只看该作者
北斗汽车导航定位 系统设计与研究。。。可以参考这个吗?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表