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