現(xiàn)在臺(tái)灣聯(lián)發(fā)科大力發(fā)展國(guó)內(nèi)的手機(jī)芯片,其價(jià)格低廉,性能穩(wěn)定為國(guó)內(nèi)手機(jī)制造商帶來(lái)了福音。因此國(guó)內(nèi)要大力發(fā)展MTK芯片,為國(guó)內(nèi)的手機(jī)制造商提供好的平臺(tái),而國(guó)外導(dǎo)航手機(jī)價(jià)格遠(yuǎn)遠(yuǎn)超出大多數(shù)國(guó)內(nèi)消費(fèi)者。這樣的背景導(dǎo)致國(guó)內(nèi)IT公司花大量的資金投入,此課題也是基于此。
1導(dǎo)航核心算法設(shè)計(jì)
在各種不同的GPS導(dǎo)航儀器中,NMEA類型協(xié)議是一種協(xié)議基準(zhǔn)。NMEA數(shù)據(jù)的獲取是通過GPS模塊來(lái)完成。課題MT6235芯片當(dāng)中通過BB(基帶)預(yù)留的相應(yīng)的UART口來(lái)與GPS模塊相連來(lái)獲取經(jīng)過GPS模塊加工處理過的NMEA數(shù)據(jù)。
在MT6235中,課題用函數(shù):
UART_Register(UART_PORT port,UartType_enum type,UartDriver_strcut* drv);
其中UartDriver_strcut是定義有關(guān)于串口的所有的集合。
(1)任務(wù)的建立
任務(wù)的建立顧名思義就是針對(duì)這款GPS模塊來(lái)建立相應(yīng)的接口函數(shù),并且對(duì)收據(jù)進(jìn)行接收與保存,通過下面的流程圖可以得出:
圖1NMEA數(shù)據(jù)獲取
其中所要做的就是對(duì)接口函數(shù)算法的研究與設(shè)計(jì)和對(duì)接收數(shù)據(jù)通過文件形式的保存。
首先要對(duì)接口進(jìn)行配置,如下算法:
void UART_SetDCBConfig(UART_PORT port, UARTD-CBStruct *UART_Config, module_type ownerid)
{
if (port == uart_port_1) return;
ASSERT(UartHandle[port].drv->SetDCBConfig);
UartHandle [port].drv->SetDCBConfig (port,UART_Config, ownerid);
}
此算法就是特定GPS模塊配置的接口,其中此函數(shù)設(shè)置了端口,并且最重要的就是要配置相應(yīng)GPS模塊的波特率,UARTDCBStruct這個(gè)就是GPS模塊LEA-5S配置相對(duì)應(yīng)的波特率,以利于接收數(shù)據(jù),LEA-5S模塊要求的波特率為9600波特/秒,因此設(shè)置的波特率為UART_BORT_9600。
(2)數(shù)據(jù)的加工
為了不丟失其中的數(shù)據(jù),課題定義了一個(gè)緩沖空間,BUFFER,定義此緩沖空間的目的是為了將先來(lái)的數(shù)據(jù)存儲(chǔ)在緩沖空間當(dāng)中,等待后續(xù)的數(shù)據(jù)。其中我們用UARTrx_buffer和UARTtx_buffer來(lái)對(duì)我們的接收(rx)和傳送(tx)數(shù)據(jù)進(jìn)行操作。循環(huán)表結(jié)構(gòu)如圖所示:
圖2NMEA數(shù)據(jù)處理
當(dāng)信息MSG_ID_UART_READY_TO_WRITE_IND傳送來(lái)以后,底層驅(qū)動(dòng)將把此信息保存在上述數(shù)組當(dāng)中,通過*start指針指向接送來(lái)的數(shù)組的首地址,然后通過*read指針對(duì)指向其實(shí)地址的數(shù)據(jù)進(jìn)行讀取,然后用*write指針將NMEA數(shù)據(jù)寫入U(xiǎn)ARTrx_buffer,并且當(dāng)判斷是一個(gè)完成的字節(jié)數(shù)據(jù)后,就表示完成。
(3)數(shù)據(jù)消息的發(fā)送
當(dāng)NMEA數(shù)據(jù)以文件的形式保存起來(lái)后,接著做的就是應(yīng)用界面,信息的發(fā)送是通過NMEA的傳遞,其中此消息中GPS時(shí)間核心函數(shù)為:
void gps_utc_to_gpstime(kal_uint32 year, // Year
kal_uint8 mon,// Month: 1 ~ 12
kal_uint8 day,// Day: 1 ~ 31
kal_uint8 hour, // Hour: 0 ~ 23
kal_uint8 min,// Min: 0 ~ 59
kal_uint8 sec,// Sec
kal_int32* wn,// GPS Week Number
double*tow)// GPS Time of Week
2手機(jī)真機(jī)測(cè)試
打開工具FlashTool,Download后,會(huì)彈出一個(gè)對(duì)話框,然后將bin文件拖入即可,如下面所示:
真機(jī)下載成功后,導(dǎo)航界面如下圖:
3總結(jié)
通過手機(jī)真機(jī)白盒測(cè)試,手機(jī)導(dǎo)航界面完全滿足市場(chǎng)上消費(fèi)者的需求,并且處理速度快,性能穩(wěn)定,必將在市場(chǎng)中占據(jù)一席之地。