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