基于TI MSPM0G3507多功能GPS測速儀系統(tǒng)開發(fā)設(shè)計(jì)
1 項(xiàng)目背景及構(gòu)想
本文引用地址:http://www.biyoush.com/article/202503/468220.htmGPS應(yīng)用無處不在,比如汽車導(dǎo)航應(yīng)用,應(yīng)急救災(zāi),各種app 的LBS(基于位置的服務(wù)),給我們生活帶來各種便利??梢哉f,沒有GPS,我們寸步難行,尤其是目前很火的自動(dòng)駕駛。結(jié)合自己工作主要也是和車聯(lián)網(wǎng)V2X 相關(guān),但是對(duì)GPS 的了解也只百度百科的認(rèn)識(shí)程度,一直想做一個(gè)小東西,來進(jìn)一步了解GPS 模塊的相關(guān)特點(diǎn)。另外在有時(shí)候騎共享單車時(shí)候,總會(huì)聽到有語音提示,想到如果自己實(shí)現(xiàn)的話,可以采用什么樣的方案呢?
所以就有了這個(gè)項(xiàng)目的構(gòu)想,即要結(jié)合GPS,又要有語音模塊,主要結(jié)合這兩方面來構(gòu)想產(chǎn)品的功能。
主要解決的問題是:通過解析GPS 數(shù)據(jù),獲取速度,及低成本的語音提示功能的實(shí)現(xiàn)。
項(xiàng)目的亮點(diǎn):就是TI 芯片低成本的語音提示功能的實(shí)現(xiàn)。
2 實(shí)現(xiàn)的主要功能
這個(gè)項(xiàng)目利用GPS 模塊開發(fā)一款多功能測速儀,主要實(shí)現(xiàn)以下功能:
(1)按鍵切換室內(nèi)模式和戶外模式
(2)戶外模式使用GPS 同步時(shí)間
(3)使用GPS 模塊輸出的經(jīng)緯度等信息計(jì)算速度
(4)使用地磁傳感器通過LCD顯示電子羅盤方向角
(5)室內(nèi)模式實(shí)現(xiàn)時(shí)鐘和定時(shí)器功能
(6)使用喇叭播放自定義報(bào)警音
3 系統(tǒng)架構(gòu)圖和流程圖
流程圖:
4 硬件選型
MCU
LP-MSPM0G3507 LaunchPad? 開發(fā)套件是基于MSPM0G3507 的易用型評(píng)估模塊(EVM),具有128 KB閃存、32 KB SRAM、2 個(gè)12 位4 Msps ADC、DAC、3 個(gè)COMP、3 個(gè)運(yùn)算放大器、CAN-FD、MATHACL 的80MHz Arm M0 + MCU。
該板包含三個(gè)按鈕、兩個(gè)LED(其中一個(gè)是RGBLED)以及模擬溫度傳感器和光傳感器,還具有一個(gè)外部緩沖器,用于顯示4 MSPS 時(shí)的高速ADC 性能。
特性
外部環(huán)境光傳感器
RGB 顯示PWM 控制
用于顯示4 MHz 高速ADC 的外部緩沖器
外部溫度傳感器
一個(gè)詞形容:就是精美!
GPS 模塊
GPS 北斗雙模導(dǎo)航定位模塊ATGM336HATGM336H-5N 系列模塊是9.7×10.1 尺寸的高性能BDS/GNSS 全星座定位導(dǎo)航模塊系列的總稱,該系列模塊都是基于中科微第四代采用完全自主知識(shí)產(chǎn)權(quán)的低功耗GNSS SOC 芯片一AT6558,支持多種衛(wèi)星導(dǎo)航系統(tǒng),包括中國的BDS(北斗衛(wèi)星導(dǎo)航系統(tǒng)),美國的GPS,俄羅斯的GLONASS,歐盟的GALILEO, 日本的QZSS 以及衛(wèi)星增強(qiáng)系統(tǒng)SBAS(WAAS, EGNOS,GAGANMSAS)。ATGM336H 是一款真正意義的六合一多模衛(wèi)星導(dǎo)航模塊,包含32 個(gè)跟蹤通道可以同時(shí)接收六個(gè)衛(wèi)星導(dǎo)航系統(tǒng)的GNSS 信號(hào),并且實(shí)現(xiàn)聯(lián)合定位、導(dǎo)航與授時(shí)。具有高靈敏度、低功耗、低成本等優(yōu)勢,適用于車載定位與導(dǎo)航和手持或可穿藏設(shè)備,可以直接替換U-bloxMAX 系列模塊。
LCD
矽創(chuàng)電子Sitronix TFT(Thin Film Transistor)即薄膜場效應(yīng)晶體管屬于有源矩陣液晶顯示器中的一種。TFT 液晶顯示屏的特點(diǎn)是亮度好、對(duì)比度高、層次感強(qiáng)、顏色鮮艷,但也存在著比較耗電和成本較高的不足SPI 接口。
喇叭
5 硬件資源占用及引腳分配
6 整體硬件連接圖
7 軟件模塊開發(fā)
LCD模塊
ST7735S LCD模塊使用的是SPI驅(qū)動(dòng),主要通過選擇命令引腳還是數(shù)據(jù)引腳,來進(jìn)行控制電以后初始化進(jìn)行屏幕相關(guān)的配置,顯示字符數(shù)字就是在指定的位置進(jìn)行填充來實(shí)現(xiàn)。
軟件配置:
軟件處理
最核心的就是畫點(diǎn),這里為什么寫入是16 位的數(shù)據(jù)?涉及到顏色的編碼,像素。RGB 565 16 bit/Pixel 。主要注意的地方:時(shí)序??梢酝ㄟ^邏輯分析儀查看發(fā)送的數(shù)據(jù)的時(shí)序。
LCD實(shí)測效果:
GPS模塊
主要功能:
MCU主通過串口中斷接收GPS 模塊發(fā)過來的NMEA協(xié)議數(shù)據(jù),進(jìn)行解析,獲取經(jīng)緯度及速度數(shù)據(jù),時(shí)間數(shù)據(jù)。波特率為9600。
NMEA協(xié)議簡介
NMEA協(xié)議是為了在不同的GPS(全球定位系統(tǒng))導(dǎo)航設(shè)備中建立統(tǒng)一的BTCM(海事無線電技術(shù)委員會(huì))標(biāo)準(zhǔn),由美國國家海洋電子協(xié)會(huì)(NMEA-The National Marine Electronics Associa-tion)制定的一套通訊協(xié)議。
GPS接收機(jī)根據(jù)NMEA-0183 協(xié)議的標(biāo)準(zhǔn)規(guī)范,將位置、速度等信息通過串口傳送到PC 機(jī)、PDA等設(shè)備。
NMEA-0183協(xié)議是GPS接收機(jī)應(yīng)當(dāng)遵守的標(biāo)準(zhǔn)協(xié)議,也是目前GPS 接收機(jī)上使用最廣泛的協(xié)議,大多數(shù)常見的GPS接收機(jī)、GPS數(shù)據(jù)處理軟件、導(dǎo)航軟件都遵守或者至少兼容這個(gè)協(xié)議。
NMEA-0183協(xié)議定義的語句非常多,但是常用的或者說兼容性最廣的語句只有$GPGGA、$GPGSA、$GPGSV、$GPRMC、$GPVTG、$GPGLL 等。
Global Positioning System Fix Data(GGA)GPS 定位信息GPS DOP and Active Satellites(GSA)當(dāng)前衛(wèi)星信息
GPS Satellites in View(GSV)可見衛(wèi)星信息
Recommended Minimum Specific GPS/TRANSITData(RMC)推薦定位信息
下面給出這些常用NMEA-0183 語句的字段定義解釋。
數(shù)據(jù)格式如下:
$GPRMC,014600.00,A,2237.496474,N,11356.089515,
E,0.0,225.5,310518,2.3,W,A*23
fi eld 0:$GPRMC,格式ID,表示該格式為建議的最低特定GPS/TRANSIT 數(shù)據(jù)(RMC)推薦最低定位信息
fi eld 1:UTC 時(shí)間,格式hhmmss.ssss,代表時(shí)分秒. 毫秒
fi eld 2:狀態(tài)A:代表定位成功 V:代表定位失敗
fi eld 3:緯度ddmm.mmmmmm 度格式(如果前導(dǎo)位數(shù)不足,則用0 填充)
fi eld 4:緯度N(北緯) S(南緯)
fi eld 5:經(jīng)度dddmm.mmmmmm 度格式(如果前導(dǎo)位數(shù)不足,則用0 填充)
fi eld 6:經(jīng)度E(東經(jīng)) W(西經(jīng))
fi eld 7:速度(也為1.852 km / h)
fi eld 8:方位角,度(二維方向,等效于二維羅盤)
fi eld 9:UTC 日期DDMMYY 天月年
fi eld 10:磁偏角(000 -180)度,如果前導(dǎo)位數(shù)不足,則用0 填充)
fi eld 11:磁偏角方向E = 東 W = 西
fi eld 12: 模式,A = 自動(dòng),D = 差分,E = 估計(jì),
AND = 無效數(shù)據(jù)(3.0 協(xié)議內(nèi)容)
fi eld 13:校驗(yàn)和
UART軟件配置
軟件處理
主要是在中斷中處理識(shí)別關(guān)鍵字符, 然后進(jìn)行字符串,解析處理。
GPS實(shí)測效果
地磁模塊
地磁傳感器HMC5883L通過I2C接口訪問,初始化通過配置寄存器,然后讀取X Y Z,三個(gè)坐標(biāo)軸,進(jìn)行后續(xù)的換算顯示。
I2C時(shí)序
軟件配置:
注:配置速率100 KHz
軟件處理:
注:主要是讀6 個(gè)寄存器數(shù)據(jù),而提供的api非常簡單易用
地磁傳感器實(shí)測效果
語音模塊
一般的話,用蜂鳴器滴滴兩聲就達(dá)到效果,這里我們要實(shí)現(xiàn)自定義語音播放,所以用到DAC 模塊。
原理是:將準(zhǔn)備的wav 語音數(shù)據(jù),使用GoldWave語音剪輯軟件將數(shù)據(jù)盡量壓縮成單聲道采樣率8 K,8 bit 數(shù)據(jù),這樣可以保證1 s 音頻數(shù)據(jù)占用8 K 存儲(chǔ)空間,以節(jié)省空間。
播放的話,直接使用DAC,按8 K 的頻率讀取數(shù)據(jù)放到DAC 輸出就可以。
軟件配置
注:使能DMA,設(shè)置分辨率為8 位,采樣率為8 kSPS軟件處理
這里其實(shí)首先需要將WAV 格式的音頻數(shù)據(jù),提取出來生成const 的數(shù)組,這樣就會(huì)存儲(chǔ)在fl ash,不占用ram 空間。這部分處理,采用python 做個(gè)小工具,方便后續(xù)可以直接方便使用。
直接使用DMA設(shè)置源數(shù)據(jù)地址,及目的地址DAC輸出。非常簡單實(shí)現(xiàn)自定義音頻數(shù)據(jù)播放
8 總結(jié)
1.TI 芯片如何幫助我快速完成這個(gè)項(xiàng)目?
其實(shí)項(xiàng)目的功能總體并不復(fù)雜,遇到的第一個(gè)困難主要就是常用外設(shè)驅(qū)動(dòng)的再熟悉,項(xiàng)目主要就是一些常用外設(shè)的使用,由于TI 的資料例子文檔很豐富,上手非常的快,方便快速驗(yàn)證功能,而不是花費(fèi)時(shí)間在熟悉芯片寄存器等芯片問題上。沒有讓芯片成為項(xiàng)目的一個(gè)卡點(diǎn)一個(gè)問題點(diǎn),一句話,就是沒有在芯片上踩坑,節(jié)省了時(shí)間。
尤其是syscfg 驅(qū)動(dòng)配置工具的使用,就是一個(gè)神器,只要配置好相關(guān)功能,就再也不發(fā)愁驅(qū)動(dòng)的編寫和測試,極大方便應(yīng)用程序的開發(fā)。
還有一個(gè)困難就是語音模塊實(shí)現(xiàn)方案,原來只是有個(gè)思考,但具體實(shí)現(xiàn)一直不成功,喇叭一直沒有聲音,在這里,幫助最大的是TI 文檔中心里面的一篇:《基于MSPM0 的醫(yī)用警報(bào)設(shè)計(jì)》,參考這個(gè)然后實(shí)現(xiàn)了低成本語音模塊。
2.對(duì)新手建議
新手入門TI M0 芯片最快的方式還是跑官方提供的例子,使用配套IDE,Code ComposerStudio 熟悉配置,申請(qǐng)使用官方的評(píng)估版來快速入門外設(shè)驅(qū)動(dòng)。
還有就是加入官方的微信群有問題及時(shí)和網(wǎng)友交流,會(huì)有TI 的FAE 及熱心網(wǎng)友出謀劃策,方便問題的解決。
(本文來源于《EEPW》202503)
評(píng)論