close
当前位置: 北京赛车软件平刷王 > 物联网设计开发 > 技术文章 >

采取更简单的方式进行低功耗9轴运动跟踪

对于越来越多的可穿戴设备和北京赛车软件平刷王设计,检测方向和跟踪运动的能力正在成为关键要求。尽管有多种可用的运动传感器,工程师们仍然面临着更快,更高效地将这些设备集成到更低功率的挑战,这对于额外的传感器来说尤其具有挑战性。
为了满足这些运动跟踪挑战,设计人员需要更多集成的加速度计,陀螺仪和磁力计硬件,以及更高效和更智能的数据融合算法。
本文将介绍TDK InvenSense的一个解决方案,该解决方案可以帮助硬件和软件。随后将展示设计人员如何应用它来简化需要复杂运动感应功能的复杂低功耗多传感器应用的开发。

高效运动跟踪的挑战

采用传统的运动跟踪方法,开发人员可以处理硬件和软件的重大集成问题。在硬件方面,开发人员通常很难将使用单独传感器(包括加速度计,陀螺仪和磁力计)构建的设计的复杂性,尺寸和部件数量降至最低。软件工程师需要特别注意同步各种传感器输出,以创建用于高级运动跟踪应用中的传感器融合算法所需的统一数据流。对于硬件和软件开发人员来说,对于需要在设计中集成其他类型的传感器的应用而言,挑战显着增加。
然而,使用TDK InvenSense ICM-20948,开发人员可以用最少的工作量快速实现运动跟踪设计或其他多传感器系统。

运动跟踪解决方案

TDK InvenSense ICM-20948尺寸仅为3 mm x 3 mm x 1 mm,是一款多芯片???,集成了完整的传感器,信号链,数字处理以及提供完整运动跟踪解决方案所需的接口电路(图1)。
TDK InvenSense ICM-20948的图片
图1:TDK InvenSense ICM-20948通过其专用信号链,可编程滤波器,接口电路和数字运动处理器实现运动跟踪。(图片来源:TDK InvenSense)
尽管它的全部功能,??樵谌抗ぷ髂J较陆鲂枰?毫安(mA)。对于功耗受限的应用,开发人员可以关闭部分???,在完全休眠模式下将阶段的电流消耗降至8微安(μA)。由此产生的功耗取决于工作电压(V DD),取决于设计要求,该电压可以在1.71伏和3.6伏之间。
集成在??橹械亩懒⑿藕帕粗С旨?轴加速度计,3轴陀螺仪和3轴磁力计的每个通道以及集成温度传感器。每个信号链包括缓冲放大器和专用16位模数转换器(ADC),以及传感器专用电路,如用于驱动??榛舳вΥ徘考频牡缌髟?。
为了增强每个信号链的输出,该??榘ㄊ视糜诿扛銎渌衅骼嘈偷男藕诺鹘诩?。例如,磁力计输出通过用于基本信号处理的算术电路,而来自其他传感器的输出各自馈送到它们自己的传感器专用调节级,用于处理诸如样本平均的功能??⑷嗽笨梢越獻CM-20948设置为平均多达128个陀螺仪数据样本,或设置加速度计平均多达32个样本。最后,每个通道信号调节级的输出馈入一组专用传感器寄存器。
作为ICM-20948的核心,专有的数字运动处理器(DMP)提供了广泛的功能,包括执行运动处理算法,校准和自检。在正常操作期间,DMP处理来自专用传感器寄存器的数据。然后将结果存储在??榈募蒄IFO中,以便主MCU通过共享I 2 C或SPI总线进行访问。
DMP和FIFO的功能为许多现实世界的应用程序提供了重要的功能。在很多情况下,应用程序以相对较慢的速度更新其运动跟踪结果,甚至允许其主机处理器在更新之间休眠,以降低整体功耗。但是,运动跟踪算法需要更高的更新速率,以确保其在应用程序请求更新时以最小延迟提供准确数据的能力。无需主机参与,DMP能够保持较高的更新速率,有助于确保准确性,同时不会对主机应用程序本身的性能或功耗造成额外的要求。

简单的集成

小尺寸,系统集成功能和主机独立操作的结合使ICM-20948特别适合用于移动设备,可穿戴设备和物联网设计。该??榈母呒啥纫馕蹲趴⑷嗽敝恍枋褂萌龅缛菁纯墒迪值湫偷脑硕偕杓?。根据TDK InvenSense关于使用陶瓷X7R器件的建议,开发人员将在??榈腞EGOUT引脚上为稳压器滤波以及V DD和V DDIO引脚添加一个0.1 F电容以实现电源旁路(图2)。
TDK InvenSense ICM-20948添加到基于MCU的设计中
图2:设计人员可以轻松地将TDK InvenSense ICM-20948添加到基于MCU的设计中,通过SPI(如图所示)或I 2 C接口连接到MCU ,该接口使用相同的配置,但引脚22,nCS,绑定到V DDIO。(图片来源:TDK InvenSense)
尽管ICM-20948为运动跟踪设计提供了近乎直接的解决方案,但是许多应用对其他传感器类型提出了要求。为帮助开发人员简化这些多传感器设计,ICM-20948提供了一个单独的I 2 C接口,并内置了对其他外部传感器的支持。在这里,开发人员将I 2 C兼容智能传感器连接到??榈淖ㄓ酶ㄖ鶬 2 C端口(图3)。
TDK InvenSense ICM-20948??榈母ㄖ鶬2C接口图
图3:与主机MCU的SPI(或I 2 C)连接并行,开发人员可以使用TDK InvenSense ICM-20948??榈母ㄖ鶬 2 C接口(AUX_CL和AUX_DA)连接外部传感器,并通过ICM- 20948的辅助设备专用寄存器。(图片来源:TDK InvenSense)
在正常的操作中,ICM-20948将作为I 2 C总线主设备与外部传感器进行通信。对于这种模式,开发人员编程一组专用??榧拇嫫骼炊ㄒ逋獠可璞傅腎 2 C地址,输出数据地址和其他传输参数。利用这些信息,??榭梢越獠看衅魇荻寥氲狡銯IFO和外部设备数据寄存器中,通过传感器I 2 C总线进行单字节或多字节读取,而不涉及主机MCU。
ICM-20948提供了一个专门用于协调ICM-20948和外部传感器之间时序的附加功能。除了使用??榈淖ㄓ弥卸螴NT引脚外,开发人员还可以使用来自外部传感器的中断或同步脉冲来驱动??榈腇SYNC引脚。例如,在图像稳定应用程序中,开发人员可以使用图像传感器的帧同步输出将图像数据与ICM-20948传感器读数同步。通过使用??榈腇SYNC_CONFIG寄存器,开发人员甚至可以配置??槔床饬客獠看衅鞯腇SYNC事件和ICM-20948数据事件之间的时间间隔,从而实现图像和运动数据之间更紧密的同步。
但是,作为专用的运动跟踪设备,ICM-20948缺乏使用通常由主机MCU处理的设备特定设置操作来配置外部传感器所需的功能。为了简化系统初始化,??樘峁┝酥蓖J?,使用其集成接口旁路多路复用器将主机系统处理器直接连接到外部传感器。
在直通模式下,器件使用其集成模拟开关将辅助I 2 C引脚AUX_CL(引脚7)和AUX_DA(引脚21)直接电连接到主机I 2 C总线(引脚23和24)。该操作模式提供了一种简单的方法,允许主机处理器处理与每个外部传感器相关的任何配置和设置要求。初始化后,开发人员禁用旁路复用器,以允许ICM-20948接管外部传感器访问以进行正常操作。

快速发展

虽然ICM-20948提出了相对直接的界面要求,但开发人员希望评估运动跟踪解决方案,甚至可以避免这种级别的硬件原型设计。TDK InvenSense的DK-20948评估板和参考设计提供了一个现成的开发平台,结合了主机MCU,嵌入式调试器,USB接口和多个连接器,用于添加额外的传感器,无线连接和其他功能(图4)。
TDK InvenSense DK-20948板的图像
图4:TDK InvenSense DK-20948电路板提供完整的运动感应设计,将ICM- 20948??橛?a href='//www.64tda.net/tags/Microchip.html' target='_blank'>Microchip Technology ATSAMG55J19B MCU(左侧中心)和基于Microchip AT32UC3A4256 MCU 的嵌入式调试器(位于背面董事会)。(图片来源:TDK InvenSense)
基于Microchip Technology ATSAMG55J19B MCU,DK-20948板卡使用ICM-20948提供完整的运动传感器设计。此外,该主板还包含一个Microchip AT32UC3A4256 MCU,该芯片提供了嵌入式调试功能,在与主机ATSAMG55 MCU一起工作时无需使用外部工具??⑷嗽笨梢允褂酶闷拦腊謇雌拦繧CM-20948,而不需要额外的硬件工作或额外的定制或可用的子板来扩展其功能。在完成对ICM-20948的评估后,可以使用该套件的原理图,详细的BOM和电路板设计文件来创建定制设计。
对于软件工程师而言,DK-20948套件同样包含快速评估和定制开发的选项。为了进行评估,该公司基于MotionLink GUI的工具允许开发人员探索不同的配置设置并评估其对所得运动数据的影响。然而,对于大多数开发人员来说,该套件的软件开发包将很快成为他们的主要关注点。

定制的软件

对于定制软件开发,TDK InvenSense eMD(嵌入式运动驱动程序)SmartMotion软件包提供应用程序编程接口(API)文档,驱动程序源代码,传感器融合库以及预先构建的DMP固件映像。此外,该软件包还包含用于构建和刷新自定义固件映像的工具以及用于与主板进行控制台交互的命令行实用程序。
设计用于Atmel / Microchip Technology Atmel Studio,eMD软件分发包括两个Atmel Studio软件包:核心和应用程序。核心软件包包括编程和操作ICM-20948所需的低级驱动程序和固件,以及用于DK-20948主板的Microchip ATSAMG55J19B主机MCU的预建运动算法和数学文件。
该应用程序包中包含一个示例应用程序,演示使用核心程序包,其中包括从顶层应用程序层扩展到串行总线事务处理的关键设计模式。例如,主C例程显示开发人员如何初始化ICM-20948并获取数据(清单1)。
int main (void)
{
   . . .
  
    /* Initialize icm20948 serif structure */
   struct inv_icm20948_serif icm20948_serif;
   icm20948_serif.context   = 0; /* no need */
   icm20948_serif.read_reg  = idd_io_hal_read_reg;
   icm20948_serif.write_reg = idd_io_hal_write_reg;
   icm20948_serif.max_read  = 1024*16; /* max num bytes allowed per serial read */
   icm20948_serif.max_write = 1024*16; /* max num bytes allowed per serial write */
 
   icm20948_serif.is_spi    = interface_is_SPI();
 
   . . .
  
    * Setup the icm20948 device */
   icm20948_sensor_setup();
 
   /*
    * Now that Icm20948 device was initialized, proceed with DMP image loading
    * This step is mandatory as DMP image are not store in non volatile memory
    */
 
   load_dmp3();
 
   /*
    * Initialize Dynamic protocol stuff
    */
   DynProTransportUart_init(&transport, iddwrapper_transport_event_cb, 0);
   DynProtocol_init(&protocol, iddwrapper_protocol_event_cb, 0);
 
   /*
    * Initializes the default sensor ODR in order to properly init the algorithms
    */
   sensor_configure_odr(period_us);
 
   InvScheduler_init(&scheduler);
 
   . . .
  
   while (1) {
      InvScheduler_dispatchTasks(&scheduler);
 
      if (irq_from_device == 1) {
         inv_icm20948_poll_sensor(&icm_device, (void *)0, build_sensor_event_data);
 
         __disable_irq();
         irq_from_device = 0;
         __enable_irq();
      }
   }
 
   return 0;
}
清单1:开发人员可以检查DK-20948 eMD SmartMotion软件包中提供的示例源代码,以从示例应用程序的main.c例程中学习关键设计模式,如此片段中所示的ICM-20948初始化和传感器轮询模式。(代码来源:TDK InvenSense)
在对ICM-20948等高度集成的器件进行编程时,开发人员很容易发现自己不仅在设备的许多配置选项上挣扎,而且还需要大量的软件组件来有效地操作器件。eMD核心软件包通过一系列抽象包括软件结构和服务层在很大程度上消除了这种复杂性。例如,一个关键的软件结构inv_icm20948收集了操作ICM-20948所需的所有数据和元数据,包括其串行接口的定义(清单2)。
/** @brief ICM20948 serial interface
 */
struct inv_icm20948_serif {
       void *     context;
       int      (*read_reg)(void * context, uint8_t reg, uint8_t * buf, uint32_t len);
       int      (*write_reg)(void * context, uint8_t reg, const uint8_t * buf, uint32_t len);
       uint32_t   max_read;
       uint32_t   max_write;
       inv_bool_t is_spi;
};
清单2:为了帮助降低软件复杂性,DK-20948 eMD SmartMotion软件核心例程提供了许多C语言结构,例如这一个,它定义了ICM-20948串行接口的设置以及指向适当的低级读取和编写I 2 C或SPI事务所需的例程。(代码来源:TDK InvenSense)
在实例化eMD结构并初始化设备本身之后,开发人员可以调用一个例程inv_icm20948_poll_sensor(),该例程使用inv_icm20948结构实例读取传感器并使用DMP处理数据。长达900多条线路,这个详细记录的例程为开发人员提供了使用核心功能来操作传感器,管理FIFO以及使用DMP的详细演示。
有兴趣从更基本的层面理解ICM-20948操作的开发人员可以转向更低层次的核心例程,例如设备自测Icm20948SelfTest.c??橹惺褂玫哪切├?。在这个??槟诓?,例程int inv_do_test_accelgyro说明了用于控制器件的典型寄存器操作(清单3)。
static int inv_do_test_accelgyro(struct inv_icm20948 * s, enum INV_SENSORS sensorType, int *meanValue, int *stMeanValue)
{
   . . .
 
    // Set Self-Test Bit
    if (sensorType == INV_SENSOR_GYRO)
    {
        // Enable gyroscope Self-Test by setting register User Bank 2, Register Address 02 (02h) Bit [5:3] to b111
        result = inv_icm20948_write_single_mems_reg(s, REG_GYRO_CONFIG_2, BIT_GYRO_CTEN | SELFTEST_GYRO_AVGCFG);
    } else
    {
        result = inv_icm20948_write_single_mems_reg(s, REG_ACCEL_CONFIG_2, BIT_ACCEL_CTEN | SELFTEST_ACCEL_DEC3_CFG);
    }
 
   . . .
}
清单3:开发人员可以在DK-20948 eMD SmartMotion软件包中找到例程,演示在多个抽象层使用ICM-20948,包括寄存器级访问,如该Icm20948SelfTest.c??橹械钠嗡?。(代码来源:TDK InvenSense)
在清单3中,(相对)高级inv_icm20948_write_single_mems_reg()函数调用低级例程inv_icm20948_write_reg(),传递一个公共inv_icm20948结构实例。该调用级联到较低层,最终到达实际执行寄存器写入操作的例程。这样做后,最终的低级函数使用指向软件初始化期间加载的寄存器写入例程的指针到inv_icm20948_serif清单2中所示的串行接口结构实例中。这种分层方法对于帮助最大限度地降低软件复杂性并最大限度地提高性能至关重要。
对于开发人员来说,eMD SmartMotion架构提供了一个基于一组一致的关键预定义结构的灵活框架。通过eMD软件包,开发人员可以在高层次上使用抽象来快速实现应用程序。与此同时,开发人员可以轻松进入较低层次来实现定制功能,而不会失去与更高级别软件的一致性。eMD SmartMotion软件包和DK-20948开发板共同为快速开发运动传感应用提供了一个全面的平台。

结论

TDK InvenSense ICM-20948??槲硕刑峁┩耆傻慕饩龇桨?。使用相关的DK-20948开发套件和eMD SmartMotion软件包,开发人员可以快速构建能够满足最小尺寸和功耗要求的运动传感解决方案。
 


(责任编辑:ioter)

用户喜欢...

[原创] Microchip MGC3030 3D手势识别和运动跟踪解决方案

北京赛车软件平刷王 www.64tda.net Microchip公司的MGC3030 3D手势识别和运动跟踪控制器是基于Microchip专利的GestIC技术,采用电近场传感技术,包括了开发3D手势...


Fairchild发布内嵌传感器融合的工业级 Turnkey 运动跟踪??榉桨?

全球领先的高性能功率半导体解决方案供应商Fairchild (NASDAQ: FCS)今天发布了高精度运动跟踪??镕MT1000系列产品,此系...


[原创] Fairchild FEBFMT1030 3D运动跟踪解决方案

FMT1000系列是一个产品组的交钥匙工业级运动跟踪器???,旨在将运动智能集成到无人系统,重工业,机器自动化和农...


Fairchild FEBFMT1030 3D运动跟踪解决方案

本文介绍了FEBFMT1000系列主要特性和优势,??榭蛲己陀τ每蛲?以及FEBFMT1030_MEMS01评估板主要特性和电路图. ...


高精度运动跟踪??镕MT1000

高性能功率半导体解决方案供应商Fairchild 今天发布了高精度 运动跟踪???FMT1000系列产品,此系列产品可将运动智能快速集成至各种系统,包括无人机、自动驾驶汽车、无人系统、重工业、建...


FMT1000 内嵌传感器融合的工业级 Turnkey 运动跟踪??榉桨?/span>

高精度运动跟踪??镕MT1000系列产品,此系列产品可将运动智能快速集成至各种系统,包括无人机、自动驾驶汽车、无人系统、重工业、建筑、农业、虚拟现实耳机、摄像机以及平台稳定等。F...


Fairchild 的 FMT1000 系列运动跟踪??榫哂卸ㄏ?、惯性运动数据和磁场数据输出

Fairchild 的 FMT1000 系列运动跟踪??榫哂卸ㄏ?、惯性运动数据和磁场数据输出 Fairchild 的 FMT1000 系列是具有嵌入式传感器融合的交钥匙式型运动跟踪???。 这一工业级??橄盗邪铀偌?、陀螺...


Misfit Shine 表现最完美的运动跟踪装备

Misfit Shine,一款算不上新,但是相对冷门的运动手环类产品,介绍给有需要的朋友们。Misfit,这家公司谈不上任何名气,在对外宣传时甚至还以一位“和 乔布斯有恩怨”的联合创始人为噱头,...


MEMS的系统最有可能成为下一代运动跟踪系统中的佼佼者

一个称为姿态航向参考系统(AHRS)的复杂动作控制和稳定系统,该系统在所有三个轴上安装了微型机电陀螺仪、加速度传感器和电子罗盘。这些微型元件称为微机电系统,构成了小巧轻便的运动跟...


盘点 十大最具创意的可穿戴设备

这些最具创意的智能设备绝不仅仅是一种硬件设备终端,更是通过软件支持以及数据交互、云端交互来实现强大的功能,可穿戴设备将会对我们的生活、感知带来很大的转变,正在颠覆我们的生...


737| 692| 57| 159| 800| 878| 750| 152| 631| 612|