MSP430與ATK-NEO-6M GPS模塊


近短時間在網上買了一個GPS模塊,正好正在學習MSP430單片機,於是決心將GPS模塊與MSP430結合起來,同時將代碼貼出來,發現網上搜到好多資料都要注冊才能下載,有些還要錢。自己動腦,才能自娛自樂。

一、測試篇   

剛拿到ATK-NEO-6M這個型號的GPS模塊,有點不大相信,近100塊的東西居然只有3cm那么大一點。之前在網上下載了相關的資料,第一次快速測試肯定是借助電腦,正好msp430開發板上有max232模塊,直接將GPS模塊的TX接max232的TX,RX同樣。PC端安裝u-center,u-center 是由ublox 公司提供的GPS 評估軟件,功能十分強大,可以對我們的ATK-NEO-6M GPS 模塊進行全面的測試。安裝好后,點擊連接/斷開按鈕,選擇你的串口號,一般測試都是選擇自動配置按鈕,也就是那個魔法樣式的按鈕,單擊后會自己配置波特率,如果正常通訊的話,在最右下角的狀態欄會顯示黃色,當GPS模塊已經定位成功的話,會在界面上顯示當前的基本信息,如經度,緯度等。想查看接收到的原本信息,按F8鍵即可顯示。我測試后工作正常,在屋里基本能搜到9顆衛星信號。

 

二、開發篇

剛拿到GPS模塊,感覺要是開發起來會很麻煩,后來經過實驗,其實很簡單,因為賣家提供的資料已經足夠開發。句段的分析函數都已提供,我們只需將接口寫好即可。接下來先看看我的硬件環境。

硬件環境:MPS430開發板,FYD12864LCD顯示屏,USB轉串口線,ATK-NEO-6M GPS模塊

軟件環境:IAR集成開發環境,串口調試工具,Secure CRT

實現目標:MSP430通過串口2接收到GPS信息,顯示在LCD上,同時通過串口1發送接收到的數據到PC。

 

1. 先把msp430的句段分析部分調通。

思路:將廠商提過的GPS語句分析部分代碼移植過來,串口手動發送GPS數據,分析完后在LCD上顯示。

將廠商提供的GPS語句分析代碼貼出,(在此僅作為參考學習只用)

gps.h

gps.c

以上為GPS相關代碼,下面為MSP430相關代碼

uart..h
uart.c

該串口操作為配置串口1和串口2波特率都為9600(之前看了GPS模塊的應用手冊,發現默認的波特率為38400

image
,但我將430的波特率設為38400發現接收到的數據為亂碼,於是干脆直接將GPS的波特率設為9600,我直接將模塊上的R5電阻取了,終於接收到正常的數據.)

main.c

其中,有關LCD顯示部分在其他博文中會詳細說到.

將程序燒到430后,上電,打開串口調試工具,發送文本如下:

$GPGGA,023543.00,2308.28715,N,11322.09875,E,1,06,1.49,41.6,M,-5.3,M,,*7D

就會收到發回來的數據跟發送的一樣,同時LCD上顯示海拔為41.6m.

說明能對數據接受並進行正確處理了。

 

后面要做的便是將串口0的接收中斷代碼復制到串口1接收中斷代碼即可。

同樣上電,這時LCD可顯示信息,但顯示的數據都為0,說明GPS還沒有定位成功。等2~3分鍾左右,GPS模塊上的指示燈開始閃爍時,這時從LCD上可看到當前的經度、緯度、高度、UTC時間,同時用ScuetCRT連接,可看到430發回來接受到的原始數據。

下圖為實驗的結果,時間顯示稍微有點問題,因為沒有轉換還是其他。不過忙了幾天終於將GPS弄好了,下一步將編寫linux驅動。。。下面曬一下成果^-^.

IMG_20131121_225930

 

補充:

之前忙於工作,現在回頭看看,發現對收到的數據進行分析顯示后結果不對,很有可能是數據溢出導致,通過串口1發送到PC的數據可以看到,收到GPS模塊的數據是正確的。唯一可能的是在數據進行分析時出錯。果然,追蹤到gps.c中可以看到,對數據處理的數據超大,而msp430的int只為16位,最大值為65536,所以在對數據進行裝載時肯定會溢出。這也是今天上班偶爾看看才發現的。回去后將所用的int類型替換為long型,應該就正確了,期待回去后驗證。。。。

昨天回去修改一下代碼,將以前的uint類型替換為ulong,燒寫后結果顯示正確。同時在以前的基礎上修改顯示部分,按按鍵后顯示另外的信息。

修改后的main.cpp如下:

main.c

顯示的結果如下:(因為是在市內的窗口,信號不是很好)

C360_2013-11-25-21-18-53-971C360_2013-11-25-21-19-38-950C360_2013-11-25-21-19-57-439

PC串口接收到的數據如下:

gpsmsg.log



   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM