|
利用正點(diǎn)原子的探索者開(kāi)發(fā)板做GPS定位
0.png (48.28 KB, 下載次數(shù): 113)
下載附件
2018-3-6 18:06 上傳
配套的軟件資料:
0.png (6.7 KB, 下載次數(shù): 107)
下載附件
2018-3-6 18:07 上傳
配套上位機(jī)及使用說(shuō)明
封裝庫(kù)與電路原理圖:
0.jpg (44.56 KB, 下載次數(shù): 107)
下載附件
2018-3-6 18:08 上傳
0.png (68.43 KB, 下載次數(shù): 102)
下載附件
2018-3-6 18:09 上傳
實(shí)驗(yàn)器材:
阿波羅STM32F429開(kāi)發(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模塊(通過(guò)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開(kāi)發(fā)板-->ATK-S1216F8-BD模塊
PI11-->PPS
PB10-->RXD
PB11-->TXD
GND-->GND
5V-->VCC
實(shí)驗(yàn)現(xiàn)象:
通過(guò)串口2連接ATK-S1216F8-BD模塊,然后通過(guò)液晶顯示GPS信息,包括精度、緯度、高度、速度、
用于定位的衛(wèi)星數(shù)、可見(jiàn)衛(wèi)星數(shù)、UTC時(shí)間等信息。同時(shí),可以通過(guò)USMART工具,設(shè)置GPS模塊的刷
新速率(最大支持20Hz刷新)和時(shí)鐘脈沖的配置。另外,通過(guò)KEY0按鍵,可以開(kāi)啟或關(guān)閉NMEA數(shù)據(jù)的
上傳(即輸出到串口1,方便開(kāi)發(fā)調(diào)試)。
注意事項(xiàng):
1,4.3寸和7寸屏需要比較大電流,USB供電可能不足,請(qǐng)用外部電源適配器(推薦外接12V 1A電源).
2,本例程在LCD_Init函數(shù)里面(在ILI93xx.c),用到了printf,如果不初始化串口1,將導(dǎo)致液晶無(wú)法顯示!!
3,本例程不支持ALIENTEK CPLD方案的7寸電容觸摸屏(V1版本)的測(cè)試!!
4,ATK-S1216F8-BD模塊的波特率默認(rèn)設(shè)置為38400(對(duì)應(yīng)開(kāi)發(fā)板的串口3)。
5,務(wù)必短接阿波羅STM32F429開(kāi)發(fā)板P9的PB11(RX)和GBC_TX以及PB10(TX)和GBC_RX
6,開(kāi)發(fā)板的串口1(USB_232轉(zhuǎn)出來(lái)的串口)的波特率是115200。
7,如有其他問(wèn)題,請(qǐng)參考<ATK-S1216F8-BD模塊問(wèn)題匯總.pdf>(暫時(shí)沒(méi)有這個(gè)文檔)。
8,本例程詳細(xì)說(shuō)明,見(jiàn)光盤(pán):9,增值資料\1,ALIENTEK 產(chǎn)品資料\16,ATK-S1216F8-BD模塊\ATK-S1216F8-BD模塊使用說(shuō)明_AN1605D.pdf
stm32單片機(jī)源程序如下:
- #include "sys.h"
- #include "delay.h"
- #include "usart.h"
- #include "led.h"
- #include "key.h"
- #include "sdram.h"
- #include "lcd.h"
- #include "usmart.h"
- #include "gps.h"
- /************************************************
- ALIENTEK 阿波羅STM32F429開(kāi)發(fā)板擴(kuò)展實(shí)驗(yàn)16
- ATK-S1216F8 GPS/北斗模塊測(cè)試實(shí)驗(yàn)-HAL庫(kù)函數(shù)版
- ************************************************/
- u8 USART1_TX_BUF[USART3_MAX_RECV_LEN]; //串口1,發(fā)送緩存區(qū)
- nmea_msg gpsx; //GPS信息
- __align(4) u8 dtbuf[50]; //打印緩存器
- const u8*fixmode_tbl[4]={"Fail","Fail"," 2D "," 3D "}; //fix mode字符串
-
- //顯示GPS定位信息
- void Gps_Msg_Show(void)
- {
- float tp;
- POINT_COLOR=BLUE;
- tp=gpsx.longitude;
- sprintf((char *)dtbuf,"Longitude:%.5f %1c ",tp/=100000,gpsx.ewhemi); //得到經(jīng)度字符串
- LCD_ShowString(30,120,200,16,16,dtbuf);
- tp=gpsx.latitude;
- sprintf((char *)dtbuf,"Latitude:%.5f %1c ",tp/=100000,gpsx.nshemi); //得到緯度字符串
- LCD_ShowString(30,140,200,16,16,dtbuf);
- tp=gpsx.altitude;
- sprintf((char *)dtbuf,"Altitude:%.1fm ",tp/=10); //得到高度字符串
- LCD_ShowString(30,160,200,16,16,dtbuf);
- tp=gpsx.speed;
- sprintf((char *)dtbuf,"Speed:%.3fkm/h ",tp/=1000); //得到速度字符串
- LCD_ShowString(30,180,200,16,16,dtbuf);
- if(gpsx.fixmode<=3) //定位狀態(tài)
- {
- sprintf((char *)dtbuf,"Fix Mode:%s",fixmode_tbl[gpsx.fixmode]);
- LCD_ShowString(30,200,200,16,16,dtbuf);
- }
- sprintf((char *)dtbuf,"GPS+BD Valid satellite:%02d",gpsx.posslnum); //用于定位的GPS衛(wèi)星數(shù)
- LCD_ShowString(30,220,200,16,16,dtbuf);
- sprintf((char *)dtbuf,"GPS Visible satellite:%02d",gpsx.svnum%100); //可見(jiàn)GPS衛(wèi)星數(shù)
- LCD_ShowString(30,240,200,16,16,dtbuf);
-
- sprintf((char *)dtbuf,"BD Visible satellite:%02d",gpsx.beidou_svnum%100); //可見(jiàn)北斗衛(wèi)星數(shù)
- LCD_ShowString(30,260,200,16,16,dtbuf);
-
- sprintf((char *)dtbuf,"UTC Date:%04d/%02d/%02d ",gpsx.utc.year,gpsx.utc.month,gpsx.utc.date); //顯示UTC日期
- LCD_ShowString(30,280,200,16,16,dtbuf);
- sprintf((char *)dtbuf,"UTC Time:%02d:%02d:%02d ",gpsx.utc.hour,gpsx.utc.min,gpsx.utc.sec); //顯示UTC時(shí)間
- LCD_ShowString(30,300,200,16,16,dtbuf);
- }
- int main(void)
- {
- u16 i,rxlen;
- u16 lenx;
- u8 key=0XFF;
- u8 upload=0;
- Stm32_Clock_Init(360,25,2,8); //設(shè)置時(shí)鐘,180Mhz
- HAL_Init(); //初始化HAL庫(kù)
- delay_init(180); //初始化延時(shí)函數(shù)
- uart_init(115200); //初始化USART1
- usart3_init(38400); //初始化串口3波特率為38400
- SDRAM_Init(); //初始化SDRAM
- LCD_Init(); //LCD初始化
- LED_Init(); //初始化LED
- KEY_Init(); //初始化按鍵
- usmart_dev.init(90); //初始化usmart
- POINT_COLOR=RED;
- LCD_ShowString(30,20,200,16,16,"Apollo STM32F4/F7 ^_^");
- LCD_ShowString(30,40,200,16,16,"S1216F8-BD TEST");
- LCD_ShowString(30,60,200,16,16,"ATOM@ALIENTEK");
- LCD_ShowString(30,80,200,16,16,"KEY0:Upload NMEA Data SW");
- LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
- if(SkyTra_Cfg_Rate(5)!=0) //設(shè)置定位信息更新速度為5Hz,順便判斷GPS模塊是否在位.
- {
- LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Setting...");
- do
- {
- usart3_init(9600); //初始化串口3波特率為9600
- SkyTra_Cfg_Prt(3); //重新設(shè)置模塊的波特率為38400
- usart3_init(38400); //初始化串口3波特率為38400
- key=SkyTra_Cfg_Tp(100000); //脈沖寬度為100ms
- }while(SkyTra_Cfg_Rate(5)!=0&&key!=0);//配置SkyTraF8-BD的更新速率為5Hz
- LCD_ShowString(30,120,200,16,16,"SkyTraF8-BD Set Done!!");
- delay_ms(500);
- LCD_Fill(30,120,30+200,120+16,WHITE);//清除顯示
- }
- while(1)
- {
- delay_ms(1);
- if(USART3_RX_STA&0X8000) //接收到一次數(shù)據(jù)了
- {
- rxlen=USART3_RX_STA&0X7FFF; //得到數(shù)據(jù)長(zhǎng)度
- for(i=0;i<rxlen;i++)USART1_TX_BUF[i]=USART3_RX_BUF[i];
- USART3_RX_STA=0; //啟動(dòng)下一次接收
- USART1_TX_BUF[i]=0; //自動(dòng)添加結(jié)束符
- GPS_Analysis(&gpsx,(u8*)USART1_TX_BUF);//分析字符串
- Gps_Msg_Show(); //顯示信息
- if(upload)printf("\r\n%s\r\n",USART1_TX_BUF);//發(fā)送接收到的數(shù)據(jù)到串口1
- }
- key=KEY_Scan(0);
- if(key==KEY0_PRES)
- {
- upload=!upload;
- POINT_COLOR=RED;
- if(upload)LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:ON ");
- else LCD_ShowString(30,100,200,16,16,"NMEA Data Upload:OFF");
- }
- if((lenx%500)==0)
- LED0=!LED0;
- lenx++;
- }
- }
復(fù)制代碼
所有資料51hei提供下載:
16,ATK-S1216 GPS 北斗定位模塊.rar
(13.25 MB, 下載次數(shù): 513)
2018-3-6 09:33 上傳
點(diǎn)擊文件名下載附件
GPS定位 下載積分: 黑幣 -5
|
評(píng)分
-
查看全部評(píng)分
|