找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3073|回复: 0
打印 上一主题 下一主题
收起左侧

嵌入式运动驱动5.1.1中文教程 全文

[复制链接]
跳转到指定楼层
楼主
ID:390715 发表于 2018-8-28 11:30 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
嵌入式运动驱动5.1.1教程

InvenSense提供的这一信息被认为是准确和可靠的。然而,InvenSense公司不对其使用或因其使用而造成的对第三方专利或其他权利的任何侵犯承担任何责任。规格如有更改,恕不另行通知。InvenSense保留对本产品进行更改的权利,包括其电路和软件,以改进其设计和/或性能,无需事先通知。InvenSense不对本文件所载信息和规格作出任何保证,无论是明示的还是默示的。InvenSense不对因本文件所载信息或因使用本文件所述产品和服务而引起的任何索赔或损害承担任何责任。这包括但不限于基于侵犯专利、版权、面具作品和/或其他知识产权的索赔或损害赔偿。

2.用途

运动驱动程序是一种传感器驱动层,它可以方便地配置和利用InvenSense的运动跟踪设备的车载数字运动处理器(DMP)功能。运动驱动程序是嵌入式MotionApps软件的一个子集,可以更容易地移植到多个MCU架构。本文档说明了运动驱动程序库的实际使用。包含的教程是为了与TI公司的MSP 430嵌入式微控制器兼容而编写的,因此,本文推荐了MSP 430体系结构的一些知识。MSP 430仅用作示例平台。运动驱动可以很容易地移植到任何单片机。

4.运动驱动程序简介

运动驱动程序由一组用ANSI兼容C编写的API组成,用于使用和配置InvenSense运动跟踪设备的不同功能,包括DMP操作。本教程提供了一个示例项目,它将从加速度计和陀螺仪(6轴四元数)的融合四元数据发送到PC的串口,由用python编写的客户端处理,以便在屏幕上显示和旋转一个三维立方体。此驱动程序支持6轴和9轴InvenSense设备。

在本运动驱动程序教程中讨论了以下内容:

-如何加载、配置和利用DMP函数。

-MSP 430的I2C驱动程序示例。

-陀螺仪和加速度计自测试功能调用的I2C驱动示例基于硬件自测试文档。(请参阅产品寄存器映像文件以获得完整的自我测试描述)。

-硬件寄存器内的加速度计校准和更新参数。

-陀螺仪校准

-配置低功率加速度计运动中断的能力

-改变陀螺仪和加速度计的传感器输出数据速率(ODR)的能力。

-选择在FIFO中填充哪些数据的能力。

5. 在CodeComposerStudio中打开运动驱动程序项目

1.在“文件”菜单下选择“导入”。

2.选择现有的CCS Eclipse项目。

3.单击“浏览”按钮选择“运动驱动程序”文件夹

图为打开运动驱动程序项目的步骤1至3。

4.单击Finish打开运动驱动程序项目

显示步骤4和带有运动驱动程序的最终IDE的图

5.在SIMPLE_APPS文件夹下打开文件motiondrivertest.c。该文件将被称为“主要”文件贯穿本教程。主文件包括关于如何配置Motion驱动程序的示例,并包含源代码中的文档,以帮助用户阅读每一行代码。

6.更详细地解释运动驱动程序和功能规范

6.1 DMP

  • DMP和DMP特性:DMP是InvenSense MPU设备的一个独特的硬件特性,它能够计算传感器读数、执行设备校准的四元数据,还包括踏板计步器等特定应用的功能。dmp映像(固件)保存在mpu上的易失性内存中,需要更新为

DMP每次芯片供电时都会利用这一功能。运动驱动程序DMP图像支持的功能包括:

  • DMP_FEATURE_LP_QUAT:这是一个低功率(陀螺角度)三轴四元数,由DMP内200 Hz的陀螺仪数据计算。
  • DMP_ FEATURE_6X_LP_QUAT:这是从DMP内200 Hz的陀螺仪和加速度计数据中计算出的低功耗六轴传感器融合输出。
  • DMP_FREVENT_TAP:这是一个“点击”手势特征,它可以检测到一个点击事件,并感觉到一些基本的特征,比如单点击/双击,或者点击的方向。
  • DMP_FEATURE_ANDROID_ORIENT的方向:此特性是与GoogleMotion_Driver设备兼容的显示方向的实现。此功能包括计算显示方向的状态机。
  • DMP_PEDOMETER:这是一个步骤计数功能,在MPU供电时,它总是在DMP上运行。运动驱动程序库可以重置计步器步数值,查询行走时间,并返回步数。在更新步数和行走时间之前,有7个步骤的延迟,以提高准确性和最小化错误检测。只要启用了DMP,就始终启用此功能。
  • DMP_FEATURE_GYRO_CAL:当设备处于无运动状态超过8秒时,此功能将校准陀螺仪偏置。
  • DMP_FRATURE_SEND_RAW_ACCEL:将原始加速度计数据添加到FIFO中,加速度计数据位于芯片坐标
  • DMP_FRATURE_SEND_RAW_GYRO:向FIFO中添加原始陀螺数据。陀螺仪坐标位于芯片坐标中。
  • DMP_FEATENT_SEND_CAL_GYRO:在FIFO中添加校准后的陀螺数据。不能与DMP_FeatureSend_RAW_陀螺仪结合使用。所述输出位于所述装置帧或所述本体帧中,而不是所述芯片帧中。

6.2 I2C驱动程序与InvenSense IC接口

1.本文为MSP430F5528平台实现了I2C驱动程序,并给出了相应的源程序,使其可以方便地移植到任何MCU平台上,msp 430_i2c_写和msp430_i2c_c_read函数为MSP430F5528提供了读写数据的主要功能,而msp 430_i2c_Enable和msp 430_i2c_禁用是为MSP430F5528提供的启用和禁用I2C通信的功能。这些函数要求读取和写入从地址、寄存器地址、长度和数据。有关实现的更多细节,请查看文件mps430_i2c.c。

6.3陀螺仪和加速度计自检功能调用

MPU的陀螺仪和加速度计自检功能允许用户测试陀螺仪和加速度计的机械和电气部分。当自我测试启动时,车载电子设备将启动相应的传感器.这种驱动将陀螺仪的验证质量移动到相当于预定义的科里奥利力的距离上,模拟加速度计上的外力。这将导致传感器输出的变化,这反映在输出信号中。输出信号与自测试寄存器相结合,用于观察自测试响应.自测试响应(STR)定义如下:

此自测试响应用于通过从自测试响应的工厂剪裁中查找更改来确定该部件是否通过了自我测试:

INTMPU_RUN_SEL_TEST(Long*gyro,Long*Accel)API由运动驱动程序提供,用于对陀螺仪和加速度计进行自我测试。如果成功执行自测试,则返回0。从MPU_RUN_Self_test获得的陀螺仪值应缩放到当前的陀螺仪灵敏度设置。通过调用mpu_get_gyro_sens(Float*sens),可以获得陀螺的灵敏度参数。缩小陀螺仪和加速度计的Q16格式化值,以存储新获得的陀螺偏置值。

执行加速度计自测试是为了确保加速度计正常工作,并与函数MPU_run_Self_test()一起完成,该函数依次调用另一个函数Accel_Self_test(Accel,Accel_st)。Accel_st参数是指通过调用get_st_biases从MPU寄存器获得的标准加速度计偏置值。

有关更多详细信息,请参阅Motion_Driver_test.c中的Run_Self_test函数作为示例。有关更多信息,请参阅下列函数:

·mpu_run_Self_test

·get_st_biases

·Accel_S

6.4加速度计校准

如果必要的话,加速度计校准可以更新偏置值,并且可以通过在平面上放置板来比较零运动期间的当前加速度值来完成。加速度计校准采用Accel_Self_test函数(Accel,Accel_st),它包含在inv_mpu.c中。此函数从MPU寄存器中检索加速度计的标准偏差(函数调用get_st_biases返回标准偏差) 和电流加速度计读数,然后计算两者的位移方差。2将其与分配给实例的最大值和最小g值进行比较。test_s结构,即在inv_mpu.c中

若要更新存储在MPU硬件寄存器中的加速度计偏置值,请调用MPU_SET_Accel_偏差。注意,陀螺仪偏差在DMP存储器中被更新,而加速度计偏差被存储在硬件寄存器中。有关更多详细信息,请参阅实现MPU_SET_Accel_偏差。

6.5陀螺仪校准

DMP提供了一种基于设备的无运动状态来校准陀螺仪偏置的方法。可以通过在DMP特性中选择DMP_FeatureGyro_CAL来启用此特性。一旦启用了这一功能,如果板在8秒内没有移动,陀螺仪将被自动校准。

6.6低功率加速度计运动中断

这一段解释了驱动程序中帮助实现低功耗(LP)加速度计中断模式的部分,该模式可用于在没有运动的情况下睡眠主机处理器,直到检测到运动为止。函数INT MPU_LP_MORY_INTERCT(无符号短阈值、无符号字符时间、无符号字符lpa_freq)使用三个参数(在嵌入式运动驱动程序API规范文档中进一步描述)配置LP加速度计中断模式,包括阈值、时间和LPA频率。

6.7改变陀螺仪和加速度计传感器ODR的能力

InvenSense MPU为陀螺仪和加速度计提供了可编程的输出数据速率范围。它可以通过向SMPLRT_DIV写入一个值来配置,陀螺仪输出数据速率可以给出如下:

运动驱动程序提供了一种使用MPU_SET_SAMPLE_Rate函数配置陀螺仪ODR的简单方法。但是,当DMP被打开时,陀螺仪被预设为200 Hz的采样率,并且不应该使用MPU_SET_SAMPLE_Rate。当关闭DMP时,最大值可以配置为8khz,这取决于MPU设备规范。当DLPF被禁用时(DLPF_CFG=0或7),则最大陀螺输出速率为8 kHz,当启用DLPF时为1 kHz。最大加速度计输出速率为1 kHz。对于大于1 kHz的采样率,相同的加速度计采样可以输出到FIFO、DMP和传感器寄存器超过一次。

  • 连接USB并指向.inf文件(core\Driver\msp 430\USB_empl\*.inf)来安装SDK的USBCDC驱动程序。
  • 如果您的PC上还没有安装python,请参考附录A。
  • 获取SDK连接到的COM端口号。如果您需要帮助查找COM端口号,请参阅附录B。
  • 打开命令提示符并更改运动驱动程序-client.py所在的目录,例如C:\MotionDriver\embedded_motiondriver-Rel-TI_MSP430F5528-MPU6050-V5_1_1-2012-12-14\simple_apps\msp430\motion-driver-client.现在,通过在命令提示符上键入以下文本,然后是端口号.python、motion-driver-client.py 32,运行motiondriver-client.py,其中32是我们在步骤4中获得的COM端口号,将其更改为步骤4中收到的任何COM端口号。(见附录B)
  • 应用程序应成功运行,并应出现以下窗口。
  • 运动驱动程序提供了一组命令,这些命令可以从PC机发送来执行各种任务,如自我测试等。下面是命令列表,关键字“inv”在发送到PC时在关键字“inv”前面加上每个命令,例如,命令“a”应该通过键入文本“inva”发送,而聚焦窗口应该旋转多维数据集。
  • a:切换控制台上打印加速度计值的状态。
  • g:切换控制台上打印陀螺仪值的状态。
  • q:切换控制台上打印四元数值的状态。
  • t:运行自测试。
  • f:切换DMP.
  • p:读取电流计步器计数。
  • x:重置系统。
  • v:切换Lp四元数。
  • m:测试运动中断。
  • f:切换DMP。
  • p:读取电流计步器计数。
  • x:重置系统。
  • v:切换LP四元数。
  • m:测试运动中断。
  • 1:如果DMP是打开的,那么它将把DMP FIFO速率设置为10 Hz。如果DMP关闭,则将陀螺采样率设置为10 Hz
  • 2:如果DMP启动,则DMP FIFO速率为20 Hz,如果DMP关闭,则陀螺仪采样率分别为20 Hz
  • 3:40 Hz
  • 4:50 Hz。
  • 5:100 Hz,分别
  • 6:200 Hz
  • 7:复位计步器计数,步行时间为零
  • 8:只有当DMP不打开时,才能切换加速度计传感器
  • 9:只有当DMP不打开时
  • 才设置硬件中断手势事件。此功能对于保持MCU休眠非常有用,直到DMP检测到抽头或定位事件。
  • :设置硬件以定期中断。

8

如果使用带有集成罗盘的InvenSense MPU-9150或连接到二级I2C总线的辅助罗盘的6轴MPU,则运动驱动器具有从指南针中提取原始数据的能力。通过使用INV_XYZ_COMPASS传感器掩码,运动驱动函数MPU_SET_Sensors()也用于配置指南针。配置完后,函数MPU_SET_COMPAST_SAMATE_Rate()将以最大为100 Hz.mpu_get_罗经_reg()函数设置罗盘采样率,以允许在芯片帧中获取罗盘数据。

9.罗盘集成与校准

本节提供关于如何集成和校准指南针以实现9轴传感器融合的一般指南和参考。运动驱动源不涵盖或支持任何指南针校准或9轴传感器融合参考指出在本节。本节主要介绍指南针的校准和集成,并指出TI和MEMSense的参考文献,其中提供了应用说明和来源。

磁强计的测量受地球磁场的存在和局部铁磁材料的影响。考虑到理想情况,沿三轴磁强计的磁场分量应形成一个原点为(0,0,0)的球体。但是,由于外部影响的存在,情况并非如此。如果这些外部效应来自固定的磁场,或“硬铁”,那么它将引起(∆x,∆y,∆z)对球体原点的偏移,并且可以很容易地根据类似偏置偏移校正的地球场数据进行校准。“软铁”效应是材料弯曲和扭曲局部磁场的结果,从而导致角度精度误差。软铁效果也应该消除,以获得正确的指南针值。

下面的链接解释并给出了进行指南针校准和指南针集成的源代码。应用程序说明将更详细地解释如何使用硬件。

  • 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驱动程序实现

根据产品规格,InvenSense MPU通过I2C和/或SPI接口与MCU平台通信。本教程的参考MCU MSP430F5528包含一个USCI系统,它提供了与SPI一起使用的四个模块。默认情况下,MotionFit板没有连接到MSP 430的SPI行,因此使用一个单独的项目来测试SPI接口,如果需要,用户需要一个开发板来测试SPI驱动程序。

开发板使用UCSIB1模块作为SPI接口,因此目前SPI驱动程序被配置为与该UCSIB1模块一起使用。SPI驱动程序实现不是运动驱动程序最终发布的一部分,而是作为一个单独的模块来提供,以说明MPU和MSP 430之间的SPI通信接口。有关更多细节,请参阅msp430sp.c和msp430_sp.h。

总之,SPI驱动程序实现中有四个主要的功能,即

  • INT msp 430_SPI_Enable(Void):此函数用于启用MSP 430与MPU之间的SPI通信接口。
  • int msp 430_SPI_WRIT(无符号char sel,无符号char reg_addr,无符号char长度,无符号char const*data):此函数对MPU寄存器执行写入操作,条件是启用SPI
  • int msp 430_SPI_read(未签名字符,未签名char,未签名chag_addr,未签名char长度,无符号字符*数据):此函数执行以下操作:此函数执行对MPU寄存器的写入操作。MPU寄存器上的读取操作是启用SPI的。
  • intmsp430_spi_disk():此函数将禁用MPU与MSP 430之间的SPI通信接口。
  • 注意:在msp 430_spi_read和msp 430_spi_write中提供的“sel”参数是不必要的,只用于复制I2C读写函数的原型,以便可以互换使用。如果连接了多个SPI设备,“Sel”可用于芯片选择指针。
  • 有关详细信息,请参阅msp430_spi.cmsp430_spi.h以及包含的SPI测试项目哪个不是运动驱动程序的一部分,而是单独列在一个项目spi_example_invensense.zip

11.附录

11.1附录A

移动驱动程序客户端控制台应用程序作为移动驱动程序的客户端提供。此应用程序作为Python源代码提供。它具有以下功能:

提供一个简单的多维数据集演示,用于可视化传感器融合输出。2.由于运动驱动程序客户端是作为Python源代码提供的,因此用户需要安装以下组件才能运行Python环境:

  • Python2.5.4:在WindowsXP和Windows 7上使用Python2.5.4测试了运动驱动程序客户端。从http://www.python.org/download/releases/2.5.4/下载Windows安装程序(python-2.5.4.msi)
  • PySeries 2.5:运动驱动程序客户端要求pySeries在串口上进行通信。

下载Python2.x Windows安装程序(pyserial-2.5.win32.exe)

  • PyGames 1.9.1:运动驱动程序客户端使用pyGames库来呈现多维数据集演示。从

以下网站下载Windows/Python2.5版本(pygame-1.9.1 Relase.win32-py2.5.exe)

您必须先安装Python,然后才能安装pySeries和pyGames库。安装python之后,使用命令提示符来安装pySeries。在命令提示符中输入“python installpyerial.py”。

为了方便起见,您可能需要将Python添加到您的路径中。在Windows中,右键单击“我的计算机”,选择“属性”,然后在“高级”选项卡中选择“环境变量”。在用户变量(顶部部分)中,选择PATH,单击Edit,然后将目录C:\Python 25添加到列表的末尾。

一旦有了工作的Python环境,就可以使用命令从命令行运行MotionDriverClient应用程序。要接受数据,必须给python定位python多维数据集的位置。运动驱动程序-client.py<comport>其中<comport>在安装USB驱动程序时检测到COM#。

11.2附录B

按&#983265;+R键打开Run对话框。键入devmgmt.msc并按Enter键打开设备管理器。

设备管理器对话框将被打开。通过单击箭头展开端口部分,并查找嵌入式运动应用程序(CDC),端口标题旁边应该有一个com号。这是移动驱动程序客户端应该使用的端口号i.e.

12.参考文献


完整的Word格式文档51黑下载地址:

mpu6050翻译成中文资料.docx (395.85 KB, 下载次数: 8)



评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表