采用传感器集线器提高应用的性能和功耗

描述

传感器已成为许多系统中的常规功能。它们与许多其他外围设备一起存在,以增加可以纳入系统正在完成的工作的环境输入范围。但是,在某些系统中,传感器的数量可能会压倒其他更传统的外围设备,并且可能比其他外围设备更能影响性能。

与智能手机相比,这不是一个问题。从一个或两个具有专用功能的传感器,移动平台大大增加了传感器的数量,并向那些梦想有新事物的有进取心的开发人员开放了传感器数据。建筑师在整合传感器时可能从未设想过这些应用。

因此,当直接连接到应用处理器(AP)时,传感器(包括用于屏幕的触摸传感器)变得更加沉重。借助用于环境光,接近度,加速度,旋转甚至磁场,压力,湿度,辐射和化学传感的传感器,可以有效地从AP卸载传感器的管理。

如果AP需要每一块传感器数据,那么除了用这些数据充斥AP之外别无选择。然而,传感器,如果他们正在工作,只需报告他们看到的内容。从最基本的角度来看,它们并不意味着对数据的意义 - 这就是处理器的作用。传感器在过去几年变得更加智能化,但传感器的决策范围仍然有限。之后,某些处理器必须决定与数据有关的内容(如果有的话)。

虽然AP最终可能会使用相关数据,但只是为了跟踪数据并确定相关内容,这可能是一项相当大的工作。正如专用电路处理无线电,视频,图形和其他密集功能一样,传感器集线器可以通过屏蔽AP免受可能被忽略的传感器事件来释放处理器带宽。通过允许AP进入睡眠状态,即使传感器仍处于活动状态,传感器集线器也可以延长电池寿命。

传感器接口

传感器具有多种接口,用于与系统的其余部分进行数据通信。大多数人使用SPI或I²C等外设总线方案来传输数据,但这就是大部分共性的结束。我们将看几个例子,这些例子可以说明为什么可以保证传感器集线器。

一个例子是来自Kionix的加速度计KXTIK-1004,它展示了基本和更复杂的相互作用。它碰巧有一个I²C接口,虽然有SPI变种。它是一个三轴加速度计,能够检测x,y和z方向的加速度。它是一款体积较小的器件,采用3 x3mm²LGA封装。它具有可编程范围,允许+/- 2,4或8 g范围。其框图如图1所示。

SPI

图1:KXTIK-1004框图。 (由Kionix提供。)

与大多数传感器一样,KXTIK-1004采样内部状态 - 在这种情况下是相对电容 - 并提供一组运行的数据。这曾经是旧传感器上传输数据的唯一方式,需要不断监听。问题在于传感器从根本上报告当前的加速度,并且由听众决定加速度是否已经变得足够有意义以及决定其意义是什么。

KXTIK-1004仍允许访问原始数据。传感器将所有采样数据存储在8位寄存器中,可通过I²C端口访问。数据分辨率可以是12位,这需要使用两个寄存器,或者只需要8位,将读取时间减半;控制设置指定分辨率。可以使用图2将寄存器值或“计数”转换为实际加速度值。

SPI

图2:加速度可以从寄存器值确定。 (由Kionix提供。)

由于未直接读取加速度,如果使用此方法需要绝对值,则读者必须执行转换。如果这是访问数据的唯一方法,那么连接到它的处理器将需要不断轮询,观察值的有用变化。

轮询频率也很重要。寄存器值定期更新。如果轮询速度太慢,那么您只会对偶尔的读数进行采样,而忽略临时读数。使用此特定传感器,您可以将输出数据速率(ODR)设置为更接近轮询速率。理论上,当使用12位分辨率时,时序可能是一个问题,这需要读取两个寄存器:在读取一个寄存器之后但在读取第二个寄存器之前,不希望数据更新。幸运的是,在这种情况下,读取受到保护,以确保读取的两个寄存器都反映相同的数据样本。

中断电路减少了轮询的需要,中断电路不仅可以通知处理器新数据何时可用,还可以识别几种常见类型的加速事件。减少了处理器的负担,不仅因为它不必计算事件,还因为当事件发生时,发送中断。这意味着,如果这些事件都很重要,则不需要轮询。

KXTIK-1004可以识别四个一般事件:运动,轻击,倾斜变化和“水印”事件(稍后会详细介绍)。有一个中断引脚,引脚11(INT)。可以将引脚编程为由于任何这些事件而触发。当中断触发时,可以读取状态寄存器以确定发生了什么事件并收集任何相关数据。

让我们以“倾斜”为例。此功能会创建一个中断,可以指示系统在手机上旋转屏幕。可以在控制寄存器中设置许多参数。这些包括倾斜ODR(可以与其他功能的ODR不同),在确定手机处于新状态之前倾斜的时间长度,滞后以及它决定手机的时间点“平坦”(即无法分辨旋转屏幕的方式)。给定这些参数,当传感器检测到电话已进入新的倾斜状态时,它可以发出中断。

当发生中断时,处理器可以读取两个寄存器,其中一个提供先前的倾斜位置,另一个提供新的倾斜位置。倾斜位置表示为一个状态,每个寄存器有六位标识适当的状态,如图3所示。

SPI

图3:Tilt状态由TILT_POS_CUR和TILT_POS_PRE寄存器中的位指示。 (由Kionix提供。)

同样,可以识别单击和双击,以及唤醒单位的运动事件,所有这些都具有可以设置的各种参数。数据缓冲也可以由FIFO处理,该FIFO可以在FIFO模式下使用(一旦完整,没有写入新数据 - FILO也可用)或流模式(当满时,最旧的数据被新数据覆盖)。可以定义“水印”级别,指示何时达到特定填充水平;当水印被击中时,可以触发中断。

在这个传感器中,有许多选项可以减少处理器必须做的工作量 - 然而仍然需要管理中断事件并对其来源进行排序这样就可以采取适当的行动。

另一个传感器示例是意法半导体的L3G4200D陀螺仪(见图4)。它允许通过I²C或SPI接口进行通信。它还有一个基本的DRY(数据就绪)中断,用于指示准备读取的新样本,并且它有一个可以在FIFO或流模式下工作的FIFO。

SPI

图图4:L3G4200D陀螺仪的框图。 (STMicroelectronics提供。)

无论是简单地读取数据还是使用FIFO,读取速率都很重要。如果你阅读速度太慢,你可能会错过样本,或者你可能会从一个样本中读取X数据,然后从下一个样本中读取Y数据,然后从第三个样本中读取Z数据,这意味着您将永远不会获得单个样本的所有信息样品。 (BDU功能允许您在覆盖之前读取两半样本数据。)在FIFO模式下使用FIFO时,读取太慢将导致阻塞;在流模式下,它会导致溢出。

这使得处理器的负担在使用这些模式时继续关注陀螺仪。但是,该器件确实为水印,FIFO溢出,移动(用于唤醒),不移动和选择轴活动提供中断。这些中断减少了一些阅读工作。

使用“组合”传感器可以缓解一些监测多个传感器的工作。例如,ADI公司的ADIS16367(见图5)结合了加速度计和陀螺仪。它有一个可用作数据就绪中断的信号,因此通过SPI接口读取的数据可以提供来自两个传感器的样本。

SPI

图5:框图ADIS16367组合加速度计和陀螺仪。 (由Analog Devices,Inc。提供)

最后一个例子是Atmel的AT42QT1110触摸控制器。该设备与触摸板一起工作,以在特定键的电容发生变化时发出信号,表示触摸。它可以使用7键或11键键盘,并且可以通过SPI进行通信。

在7键模式下,每个键都有一个引脚用于指示触摸。在11键模式下,使用内部时钟或通过提供外部SYNC信号(将可检测到的焊盘数量减少到10)定期进行读取。该器件还有一个CHANGE引脚,可在键发生变化(触摸或释放)时发出信号。这可以充当中断,减少与实际触摸或释放事件一致的读取次数。

管理传感器数据采集和中断

在所有这些情况下,可以选择直接读取原始数据或响应任何中断。如果中断准确地提供了感兴趣的事件,并且如果这些事件需要由AP处理,则可能需要直接的传感器到AP连接。但是,有几个原因可能导致不建议直接连接。

如果需要原始数据,读取所需的时间可能需要AP过多关注。/li》

即使有中断,一些传感器 - 尤其是允许滑动和多点触摸的触摸屏 - 也会产生大量中断。

如果需要进一步处理数据资格或融合,然后这成为AP的负担。

对事件的一些较低级别的响应 - 比如屏幕的旋转 - 可能不需要AP完成,这意味着某些较低级别实体可以在不涉及AP的情况下捕获和执行该事件。

最后,也许最重要的是,AP消耗大量功率,重要的是AP在不需要时进入休眠状态。如果AP承担管理传感器的全部责任,则无法进入睡眠状态。 (事实上,传感器中断可用于唤醒AP。)

由于这些原因,越来越倾向于在传感器和AP之间放置一个设备;这样的设备通常被称为“传感器集线器”。它的职责是维持与所有传感器的低级对话,监视事件,在其低级权限内执行这些事件,处理低级融合,并传递只有那些既是AP关注的相关和必要用途的事件,也只对AP有用。

两种设备中的一种可以承担传感器集线器的角色。 FPGA具有逻辑意义,但只有非常小的FPGA具有必须考虑用于移动设备等应用的成本结构。另一种选择,更典型的是微控制器。监控传感器的关键资源归结为I²C或SPI的可用性,以及微控制器如何处理外部中断。

例如,Atmel的ATmega48A是一个8位RISC微控制器,具有4 K字节的FLASH,256 K字节的EEPROM和512 K字节的RAM;它可以通过I²C和SPI进行通信。该器件有两种类型的中断:“引脚更改”中断和“外部”中断。前者允许24个引脚中的任何一个通过三个中断标志触发中断(每个标志对应一个不同的中断向量)。每个标志与24个引脚中的8个相关联。

还有两个电平或边沿触发的外部中断引脚,称为INT0和INT1。每个都有自己的中断向量。这产生了总共26个引脚和五个不同的矢量目标,为许多传感器和其他可能的外部中断源留出了空间。

Microchip的PIC18F2520是一款16位微控制器,具有32 K的FLASH,1536字节的SRAM和256字节的EEPROM,也可以通过两种接口类型进行通信。它有三个边沿敏感的外部中断引脚,具有可编程优先级,INT1和INT2可以为高电平或低电平(INT0的优先级固定为高电平)。此外,PORTB的引脚7:4可用作引脚更改中断;它们的优先级也可以编程为高或低。最后,飞思卡尔半导体的MCF51QE32是一款32位ColdFire微控制器,具有32 K字节的FLASH和8 K字节的RAM,具有两个SPI和两个I²C端口。它有一个IRQ外部中断引脚和精心设计的优先级方案。中断有七个“级别”,每个级别有七个优先级。各种中断(主要是内部生成的)在结果矩阵中占据不同的位置(见图6)。外部中断引脚以最高级别,中点优先级运行。这种单引脚方案可以很好地用于多传感器组合,对所有传感器数据更新都有一个中断。

SPI

图6:MCF51QE32的中断优先级矩阵。 IRQ引脚在7级具有中级优先级。(由飞思卡尔半导体公司提供。)

总结

随着传感器的数量被集成到各种嵌入式系统中,应用处理器因为需要的周期而成为管理它们的不良选择,这样做意味着AP无法入睡,消除了关键机会节省电力。使用小型低功耗微控制器来聚合传感器信号允许主处理器专注于更重要的事情或睡眠,只有在有重要事项应该解决时才会被中断。

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分