找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3634|回復(fù): 0
收起左側(cè)

嵌入式運動驅(qū)動5.1.1中文教程 全文

[復(fù)制鏈接]
ID:390715 發(fā)表于 2018-8-28 11:30 | 顯示全部樓層 |閱讀模式
嵌入式運動驅(qū)動5.1.1教程

InvenSense提供的這一信息被認(rèn)為是準(zhǔn)確和可靠的。然而,InvenSense公司不對其使用或因其使用而造成的對第三方專利或其他權(quán)利的任何侵犯承擔(dān)任何責(zé)任。規(guī)格如有更改,恕不另行通知。InvenSense保留對本產(chǎn)品進(jìn)行更改的權(quán)利,包括其電路和軟件,以改進(jìn)其設(shè)計和/或性能,無需事先通知。InvenSense不對本文件所載信息和規(guī)格作出任何保證,無論是明示的還是默示的。InvenSense不對因本文件所載信息或因使用本文件所述產(chǎn)品和服務(wù)而引起的任何索賠或損害承擔(dān)任何責(zé)任。這包括但不限于基于侵犯專利、版權(quán)、面具作品和/或其他知識產(chǎn)權(quán)的索賠或損害賠償。

2.用途

運動驅(qū)動程序是一種傳感器驅(qū)動層,它可以方便地配置和利用InvenSense的運動跟蹤設(shè)備的車載數(shù)字運動處理器(DMP)功能。運動驅(qū)動程序是嵌入式MotionApps軟件的一個子集,可以更容易地移植到多個MCU架構(gòu)。本文檔說明了運動驅(qū)動程序庫的實際使用。包含的教程是為了與TI公司的MSP 430嵌入式微控制器兼容而編寫的,因此,本文推薦了MSP 430體系結(jié)構(gòu)的一些知識。MSP 430僅用作示例平臺。運動驅(qū)動可以很容易地移植到任何單片機(jī)。

4.運動驅(qū)動程序簡介

運動驅(qū)動程序由一組用ANSI兼容C編寫的API組成,用于使用和配置InvenSense運動跟蹤設(shè)備的不同功能,包括DMP操作。本教程提供了一個示例項目,它將從加速度計和陀螺儀(6軸四元數(shù))的融合四元數(shù)據(jù)發(fā)送到PC的串口,由用python編寫的客戶端處理,以便在屏幕上顯示和旋轉(zhuǎn)一個三維立方體。此驅(qū)動程序支持6軸和9軸InvenSense設(shè)備。

在本運動驅(qū)動程序教程中討論了以下內(nèi)容:

-如何加載、配置和利用DMP函數(shù)。

-MSP 430的I2C驅(qū)動程序示例。

-陀螺儀和加速度計自測試功能調(diào)用的I2C驅(qū)動示例基于硬件自測試文檔。(請參閱產(chǎn)品寄存器映像文件以獲得完整的自我測試描述)。

-硬件寄存器內(nèi)的加速度計校準(zhǔn)和更新參數(shù)。

-陀螺儀校準(zhǔn)

-配置低功率加速度計運動中斷的能力

-改變陀螺儀和加速度計的傳感器輸出數(shù)據(jù)速率(ODR)的能力。

-選擇在FIFO中填充哪些數(shù)據(jù)的能力。

5. 在CodeComposerStudio中打開運動驅(qū)動程序項目

1.在“文件”菜單下選擇“導(dǎo)入”。

2.選擇現(xiàn)有的CCS Eclipse項目。

3.單擊“瀏覽”按鈕選擇“運動驅(qū)動程序”文件夾

圖為打開運動驅(qū)動程序項目的步驟1至3。

4.單擊Finish打開運動驅(qū)動程序項目

顯示步驟4和帶有運動驅(qū)動程序的最終IDE的圖

5.在SIMPLE_APPS文件夾下打開文件motiondrivertest.c。該文件將被稱為“主要”文件貫穿本教程。主文件包括關(guān)于如何配置Motion驅(qū)動程序的示例,并包含源代碼中的文檔,以幫助用戶閱讀每一行代碼。

6.更詳細(xì)地解釋運動驅(qū)動程序和功能規(guī)范

6.1 DMP

  • DMP和DMP特性:DMP是InvenSense MPU設(shè)備的一個獨特的硬件特性,它能夠計算傳感器讀數(shù)、執(zhí)行設(shè)備校準(zhǔn)的四元數(shù)據(jù),還包括踏板計步器等特定應(yīng)用的功能。dmp映像(固件)保存在mpu上的易失性內(nèi)存中,需要更新為

DMP每次芯片供電時都會利用這一功能。運動驅(qū)動程序DMP圖像支持的功能包括:

  • DMP_FEATURE_LP_QUAT:這是一個低功率(陀螺角度)三軸四元數(shù),由DMP內(nèi)200 Hz的陀螺儀數(shù)據(jù)計算。
  • DMP_ FEATURE_6X_LP_QUAT:這是從DMP內(nèi)200 Hz的陀螺儀和加速度計數(shù)據(jù)中計算出的低功耗六軸傳感器融合輸出。
  • DMP_FREVENT_TAP:這是一個“點擊”手勢特征,它可以檢測到一個點擊事件,并感覺到一些基本的特征,比如單點擊/雙擊,或者點擊的方向。
  • DMP_FEATURE_ANDROID_ORIENT的方向:此特性是與GoogleMotion_Driver設(shè)備兼容的顯示方向的實現(xiàn)。此功能包括計算顯示方向的狀態(tài)機(jī)。
  • DMP_PEDOMETER:這是一個步驟計數(shù)功能,在MPU供電時,它總是在DMP上運行。運動驅(qū)動程序庫可以重置計步器步數(shù)值,查詢行走時間,并返回步數(shù)。在更新步數(shù)和行走時間之前,有7個步驟的延遲,以提高準(zhǔn)確性和最小化錯誤檢測。只要啟用了DMP,就始終啟用此功能。
  • DMP_FEATURE_GYRO_CAL:當(dāng)設(shè)備處于無運動狀態(tài)超過8秒時,此功能將校準(zhǔn)陀螺儀偏置。
  • DMP_FRATURE_SEND_RAW_ACCEL:將原始加速度計數(shù)據(jù)添加到FIFO中,加速度計數(shù)據(jù)位于芯片坐標(biāo)
  • DMP_FRATURE_SEND_RAW_GYRO:向FIFO中添加原始陀螺數(shù)據(jù)。陀螺儀坐標(biāo)位于芯片坐標(biāo)中。
  • DMP_FEATENT_SEND_CAL_GYRO:在FIFO中添加校準(zhǔn)后的陀螺數(shù)據(jù)。不能與DMP_FeatureSend_RAW_陀螺儀結(jié)合使用。所述輸出位于所述裝置幀或所述本體幀中,而不是所述芯片幀中。

6.2 I2C驅(qū)動程序與InvenSense IC接口

1.本文為MSP430F5528平臺實現(xiàn)了I2C驅(qū)動程序,并給出了相應(yīng)的源程序,使其可以方便地移植到任何MCU平臺上,msp 430_i2c_寫和msp430_i2c_c_read函數(shù)為MSP430F5528提供了讀寫數(shù)據(jù)的主要功能,而msp 430_i2c_Enable和msp 430_i2c_禁用是為MSP430F5528提供的啟用和禁用I2C通信的功能。這些函數(shù)要求讀取和寫入從地址、寄存器地址、長度和數(shù)據(jù)。有關(guān)實現(xiàn)的更多細(xì)節(jié),請查看文件mps430_i2c.c。

6.3陀螺儀和加速度計自檢功能調(diào)用

MPU的陀螺儀和加速度計自檢功能允許用戶測試陀螺儀和加速度計的機(jī)械和電氣部分。當(dāng)自我測試啟動時,車載電子設(shè)備將啟動相應(yīng)的傳感器.這種驅(qū)動將陀螺儀的驗證質(zhì)量移動到相當(dāng)于預(yù)定義的科里奧利力的距離上,模擬加速度計上的外力。這將導(dǎo)致傳感器輸出的變化,這反映在輸出信號中。輸出信號與自測試寄存器相結(jié)合,用于觀察自測試響應(yīng).自測試響應(yīng)(STR)定義如下:

此自測試響應(yīng)用于通過從自測試響應(yīng)的工廠剪裁中查找更改來確定該部件是否通過了自我測試:

INTMPU_RUN_SEL_TEST(Long*gyro,Long*Accel)API由運動驅(qū)動程序提供,用于對陀螺儀和加速度計進(jìn)行自我測試。如果成功執(zhí)行自測試,則返回0。從MPU_RUN_Self_test獲得的陀螺儀值應(yīng)縮放到當(dāng)前的陀螺儀靈敏度設(shè)置。通過調(diào)用mpu_get_gyro_sens(Float*sens),可以獲得陀螺的靈敏度參數(shù)?s小陀螺儀和加速度計的Q16格式化值,以存儲新獲得的陀螺偏置值。

執(zhí)行加速度計自測試是為了確保加速度計正常工作,并與函數(shù)MPU_run_Self_test()一起完成,該函數(shù)依次調(diào)用另一個函數(shù)Accel_Self_test(Accel,Accel_st)。Accel_st參數(shù)是指通過調(diào)用get_st_biases從MPU寄存器獲得的標(biāo)準(zhǔn)加速度計偏置值。

有關(guān)更多詳細(xì)信息,請參閱Motion_Driver_test.c中的Run_Self_test函數(shù)作為示例。有關(guān)更多信息,請參閱下列函數(shù):

·mpu_run_Self_test

·get_st_biases

·Accel_S

6.4加速度計校準(zhǔn)

如果必要的話,加速度計校準(zhǔn)可以更新偏置值,并且可以通過在平面上放置板來比較零運動期間的當(dāng)前加速度值來完成。加速度計校準(zhǔn)采用Accel_Self_test函數(shù)(Accel,Accel_st),它包含在inv_mpu.c中。此函數(shù)從MPU寄存器中檢索加速度計的標(biāo)準(zhǔn)偏差(函數(shù)調(diào)用get_st_biases返回標(biāo)準(zhǔn)偏差) 和電流加速度計讀數(shù),然后計算兩者的位移方差。2將其與分配給實例的最大值和最小g值進(jìn)行比較。test_s結(jié)構(gòu),即在inv_mpu.c中

若要更新存儲在MPU硬件寄存器中的加速度計偏置值,請調(diào)用MPU_SET_Accel_偏差。注意,陀螺儀偏差在DMP存儲器中被更新,而加速度計偏差被存儲在硬件寄存器中。有關(guān)更多詳細(xì)信息,請參閱實現(xiàn)MPU_SET_Accel_偏差。

6.5陀螺儀校準(zhǔn)

DMP提供了一種基于設(shè)備的無運動狀態(tài)來校準(zhǔn)陀螺儀偏置的方法?梢酝ㄟ^在DMP特性中選擇DMP_FeatureGyro_CAL來啟用此特性。一旦啟用了這一功能,如果板在8秒內(nèi)沒有移動,陀螺儀將被自動校準(zhǔn)。

6.6低功率加速度計運動中斷

這一段解釋了驅(qū)動程序中幫助實現(xiàn)低功耗(LP)加速度計中斷模式的部分,該模式可用于在沒有運動的情況下睡眠主機(jī)處理器,直到檢測到運動為止。函數(shù)INT MPU_LP_MORY_INTERCT(無符號短閾值、無符號字符時間、無符號字符lpa_freq)使用三個參數(shù)(在嵌入式運動驅(qū)動程序API規(guī)范文檔中進(jìn)一步描述)配置LP加速度計中斷模式,包括閾值、時間和LPA頻率。

6.7改變陀螺儀和加速度計傳感器ODR的能力

InvenSense MPU為陀螺儀和加速度計提供了可編程的輸出數(shù)據(jù)速率范圍。它可以通過向SMPLRT_DIV寫入一個值來配置,陀螺儀輸出數(shù)據(jù)速率可以給出如下:

運動驅(qū)動程序提供了一種使用MPU_SET_SAMPLE_Rate函數(shù)配置陀螺儀ODR的簡單方法。但是,當(dāng)DMP被打開時,陀螺儀被預(yù)設(shè)為200 Hz的采樣率,并且不應(yīng)該使用MPU_SET_SAMPLE_Rate。當(dāng)關(guān)閉DMP時,最大值可以配置為8khz,這取決于MPU設(shè)備規(guī)范。當(dāng)DLPF被禁用時(DLPF_CFG=0或7),則最大陀螺輸出速率為8 kHz,當(dāng)啟用DLPF時為1 kHz。最大加速度計輸出速率為1 kHz。對于大于1 kHz的采樣率,相同的加速度計采樣可以輸出到FIFO、DMP和傳感器寄存器超過一次。

  • 連接USB并指向.inf文件(core\Driver\msp 430\USB_empl\*.inf)來安裝SDK的USBCDC驅(qū)動程序。
  • 如果您的PC上還沒有安裝python,請參考附錄A。
  • 獲取SDK連接到的COM端口號。如果您需要幫助查找COM端口號,請參閱附錄B。
  • 打開命令提示符并更改運動驅(qū)動程序-client.py所在的目錄,例如C:\MotionDriver\embedded_motiondriver-Rel-TI_MSP430F5528-MPU6050-V5_1_1-2012-12-14\simple_apps\msp430\motion-driver-client.現(xiàn)在,通過在命令提示符上鍵入以下文本,然后是端口號.python、motion-driver-client.py 32,運行motiondriver-client.py,其中32是我們在步驟4中獲得的COM端口號,將其更改為步驟4中收到的任何COM端口號。(見附錄B)
  • 應(yīng)用程序應(yīng)成功運行,并應(yīng)出現(xiàn)以下窗口。
  • 運動驅(qū)動程序提供了一組命令,這些命令可以從PC機(jī)發(fā)送來執(zhí)行各種任務(wù),如自我測試等。下面是命令列表,關(guān)鍵字“inv”在發(fā)送到PC時在關(guān)鍵字“inv”前面加上每個命令,例如,命令“a”應(yīng)該通過鍵入文本“inva”發(fā)送,而聚焦窗口應(yīng)該旋轉(zhuǎn)多維數(shù)據(jù)集。
  • a:切換控制臺上打印加速度計值的狀態(tài)。
  • g:切換控制臺上打印陀螺儀值的狀態(tài)。
  • q:切換控制臺上打印四元數(shù)值的狀態(tài)。
  • t:運行自測試。
  • f:切換DMP.
  • p:讀取電流計步器計數(shù)。
  • x:重置系統(tǒng)。
  • v:切換Lp四元數(shù)。
  • m:測試運動中斷。
  • f:切換DMP。
  • p:讀取電流計步器計數(shù)。
  • x:重置系統(tǒng)。
  • v:切換LP四元數(shù)。
  • m:測試運動中斷。
  • 1:如果DMP是打開的,那么它將把DMP FIFO速率設(shè)置為10 Hz。如果DMP關(guān)閉,則將陀螺采樣率設(shè)置為10 Hz
  • 2:如果DMP啟動,則DMP FIFO速率為20 Hz,如果DMP關(guān)閉,則陀螺儀采樣率分別為20 Hz
  • 3:40 Hz
  • 4:50 Hz。
  • 5:100 Hz,分別
  • 6:200 Hz
  • 7:復(fù)位計步器計數(shù),步行時間為零
  • 8:只有當(dāng)DMP不打開時,才能切換加速度計傳感器
  • 9:只有當(dāng)DMP不打開時
  • ,才設(shè)置硬件中斷手勢事件。此功能對于保持MCU休眠非常有用,直到DMP檢測到抽頭或定位事件。
  • :設(shè)置硬件以定期中斷。

8

如果使用帶有集成羅盤的InvenSense MPU-9150或連接到二級I2C總線的輔助羅盤的6軸MPU,則運動驅(qū)動器具有從指南針中提取原始數(shù)據(jù)的能力。通過使用INV_XYZ_COMPASS傳感器掩碼,運動驅(qū)動函數(shù)MPU_SET_Sensors()也用于配置指南針。配置完后,函數(shù)MPU_SET_COMPAST_SAMATE_Rate()將以最大為100 Hz.mpu_get_羅經(jīng)_reg()函數(shù)設(shè)置羅盤采樣率,以允許在芯片幀中獲取羅盤數(shù)據(jù)。

9.羅盤集成與校準(zhǔn)

本節(jié)提供關(guān)于如何集成和校準(zhǔn)指南針以實現(xiàn)9軸傳感器融合的一般指南和參考。運動驅(qū)動源不涵蓋或支持任何指南針校準(zhǔn)或9軸傳感器融合參考指出在本節(jié)。本節(jié)主要介紹指南針的校準(zhǔn)和集成,并指出TI和MEMSense的參考文獻(xiàn),其中提供了應(yīng)用說明和來源。

磁強(qiáng)計的測量受地球磁場的存在和局部鐵磁材料的影響。考慮到理想情況,沿三軸磁強(qiáng)計的磁場分量應(yīng)形成一個原點為(0,0,0)的球體。但是,由于外部影響的存在,情況并非如此。如果這些外部效應(yīng)來自固定的磁場,或“硬鐵”,那么它將引起(∆x,∆y,∆z)對球體原點的偏移,并且可以很容易地根據(jù)類似偏置偏移校正的地球場數(shù)據(jù)進(jìn)行校準(zhǔn)!败涜F”效應(yīng)是材料彎曲和扭曲局部磁場的結(jié)果,從而導(dǎo)致角度精度誤差。軟鐵效果也應(yīng)該消除,以獲得正確的指南針值。

下面的鏈接解釋并給出了進(jìn)行指南針校準(zhǔn)和指南針集成的源代碼。應(yīng)用程序說明將更詳細(xì)地解釋如何使用硬件。

  • http://www.memsense.com/docs/MTD-0802_1.2_Magnetometer_Calibration.pdf
  • http://www.ti.com/general/docs/lit/getliterature.tsp?literatureNumber=slaa518a&fileType=pdf

10.SPI驅(qū)動程序?qū)崿F(xiàn)

根據(jù)產(chǎn)品規(guī)格,InvenSense MPU通過I2C和/或SPI接口與MCU平臺通信。本教程的參考MCU MSP430F5528包含一個USCI系統(tǒng),它提供了與SPI一起使用的四個模塊。默認(rèn)情況下,MotionFit板沒有連接到MSP 430的SPI行,因此使用一個單獨的項目來測試SPI接口,如果需要,用戶需要一個開發(fā)板來測試SPI驅(qū)動程序。

開發(fā)板使用UCSIB1模塊作為SPI接口,因此目前SPI驅(qū)動程序被配置為與該UCSIB1模塊一起使用。SPI驅(qū)動程序?qū)崿F(xiàn)不是運動驅(qū)動程序最終發(fā)布的一部分,而是作為一個單獨的模塊來提供,以說明MPU和MSP 430之間的SPI通信接口。有關(guān)更多細(xì)節(jié),請參閱msp430sp.c和msp430_sp.h。

總之,SPI驅(qū)動程序?qū)崿F(xiàn)中有四個主要的功能,即

  • INT msp 430_SPI_Enable(Void):此函數(shù)用于啟用MSP 430與MPU之間的SPI通信接口。
  • int msp 430_SPI_WRIT(無符號char sel,無符號char reg_addr,無符號char長度,無符號char const*data):此函數(shù)對MPU寄存器執(zhí)行寫入操作,條件是啟用SPI。
  • int msp 430_SPI_read(未簽名字符,未簽名char,未簽名chag_addr,未簽名char長度,無符號字符*數(shù)據(jù)):此函數(shù)執(zhí)行以下操作:此函數(shù)執(zhí)行對MPU寄存器的寫入操作。MPU寄存器上的讀取操作是啟用SPI的。
  • intmsp430_spi_disk():此函數(shù)將禁用MPU與MSP 430之間的SPI通信接口。
  • 注意:在msp 430_spi_read和msp 430_spi_write中提供的“sel”參數(shù)是不必要的,只用于復(fù)制I2C讀寫函數(shù)的原型,以便可以互換使用。如果連接了多個SPI設(shè)備,“Sel”可用于芯片選擇指針。
  • 有關(guān)詳細(xì)信息,請參閱msp430_spi.cmsp430_spi.h以及包含的SPI測試項目哪個不是運動驅(qū)動程序的一部分,而是單獨列在一個項目spi_example_invensense.zip

11.附錄

11.1附錄A

移動驅(qū)動程序客戶端控制臺應(yīng)用程序作為移動驅(qū)動程序的客戶端提供。此應(yīng)用程序作為Python源代碼提供。它具有以下功能:

提供一個簡單的多維數(shù)據(jù)集演示,用于可視化傳感器融合輸出。2.由于運動驅(qū)動程序客戶端是作為Python源代碼提供的,因此用戶需要安裝以下組件才能運行Python環(huán)境:

  • Python2.5.4:在WindowsXP和Windows 7上使用Python2.5.4測試了運動驅(qū)動程序客戶端。從http://www.python.org/download/releases/2.5.4/下載Windows安裝程序(python-2.5.4.msi)
  • PySeries 2.5:運動驅(qū)動程序客戶端要求pySeries在串口上進(jìn)行通信。

下載Python2.x Windows安裝程序(pyserial-2.5.win32.exe)

  • PyGames 1.9.1:運動驅(qū)動程序客戶端使用pyGames庫來呈現(xiàn)多維數(shù)據(jù)集演示。從

以下網(wǎng)站下載Windows/Python2.5版本(pygame-1.9.1 Relase.win32-py2.5.exe)

您必須先安裝Python,然后才能安裝pySeries和pyGames庫。安裝python之后,使用命令提示符來安裝pySeries。在命令提示符中輸入“python installpyerial.py”。

為了方便起見,您可能需要將Python添加到您的路徑中。在Windows中,右鍵單擊“我的計算機(jī)”,選擇“屬性”,然后在“高級”選項卡中選擇“環(huán)境變量”。在用戶變量(頂部部分)中,選擇PATH,單擊Edit,然后將目錄C:\Python 25添加到列表的末尾。

一旦有了工作的Python環(huán)境,就可以使用命令從命令行運行MotionDriverClient應(yīng)用程序。要接受數(shù)據(jù),必須給python定位python多維數(shù)據(jù)集的位置。運動驅(qū)動程序-client.py<comport>其中<comport>在安裝USB驅(qū)動程序時檢測到COM#。

11.2附錄B

按&#983265;+R鍵打開Run對話框。鍵入devmgmt.msc并按Enter鍵打開設(shè)備管理器。

設(shè)備管理器對話框?qū)⒈淮蜷_。通過單擊箭頭展開端口部分,并查找嵌入式運動應(yīng)用程序(CDC),端口標(biāo)題旁邊應(yīng)該有一個com號。這是移動驅(qū)動程序客戶端應(yīng)該使用的端口號i.e.

12.參考文獻(xiàn)


完整的Word格式文檔51黑下載地址:

mpu6050翻譯成中文資料.docx (395.85 KB, 下載次數(shù): 8)



評分

參與人數(shù) 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表