随着人们对传感器接口在功能性、连通性及数学运算方面的要求越来越高,16位数字信号控制器(DSC)正在成为众多基于传感器的系统和智能传感器的一种理想架构。诸如RTOS、TCP/IP及预打包DSP算法等软件工具的使用,将进一步提高这种架构在各种传感器应用中的可用性。
|
图1:采用DSC的引擎敲击检测系统实例。 |
传感器是用来检测并监视温度、压力、湿度及运动等物理参数并对其进行响应(如果需要的话)的装置。传统上,从传感器上获得的数据先被直接送往一个中央单元,然后再由该单元利用分立硬件元器件或数字逻辑来对这些数据进行后端处理或显示。随着8位MCU等嵌入式处理器解决方案的出现,它们在成本与灵活性方面具有很大优势,已在取代带MCU的固定集中式硬件(可进行编程以执行应用所需的特定任务)。
随着基于传感器的应用复杂性迅速增加,必须为传感器接口嵌入更高水平的智能。很多应用利用多个传感器来获得各种测量参数并以全新的方式来对其进行处理,因而需要更强大的计算能力、存储器与外围,这就要求使用16位MCU。
在很多应用中,传感器在物理上被分散于很宽的范围内,例如在大型建筑物、工厂及汽车的各个不同地方。但实践证明,对于这种分布式系统,集中式处理/控制方法常常无效或很低效。为从中央控制单元上卸载掉一些处理及数据存储要求,最好是将处理能力分散到靠近传感器(甚至与之集成)的多个MCU上。这种“智能传感器”方法要求有强大的功能及各种通信能力。
MCU+DSP=DSC
真正的后处理操作可能经常需要对从传感器上获得的数据展开。例如执行数据 的FIR或IIR滤波以消除噪声,以及执行FFT运算来分析数据以便频域数据能被用于进一步的处理级,并根据其幅度来定标及归一化等。这种计算需要在传感器接口所使用的处理器中具有高水平的高速数学运算能力,一般的16位MCU架构可能还不够用。因此传统上是用DSP来执行此类计算密集型任务。但DSP本身(不带相关MCU)并不适合于在传感器接口中使用,原因如下:
a. DSP没有灵活的中断结构; b. DSP在操作位时并不十分有效(譬如单个I/O引脚状态等); c. DSP十分依赖片外存储器及外围; d. DSP很少是采用低引脚数封装。
高性能智能传感器系统的理想单芯片平台架构是16位DSC,例如Microchip的dsPIC30F型传感器处理器系列等。
DSC是一种将16位MCU的控制特性与广泛的DSP功能无缝集成在一起的全新混合式SoC架构。DSC很适合用于周期性中断以及从多个传感器及控制输入上捕捉数据,且如果需要,还能与分布式系统中的其他控制器共享数据。另一方面,DSC的CPU还支持一组功能强大的DSP指令及灵活的寻址方式,从而能进行快速及精确的算术与逻辑计算。
DSC的主要特性
典型DSC架构具有使其适合于众多传感器应用的若干CPU及外围特征。本节将讨论其中一些最有用的特性,这些特性在考虑采用任何一种DSC架构时都非常重要。
增强的CPU功能
|
图2:采用DSC的胎压监测系统实例。 | 也许16位DSC最强大的特性是具有广泛的DSP功能。一种真正的DSC应包括两个可用于存储两个独立16x16位乘法运算结果的40位累加器。
大多数DSC算法,例如FIR及IIR滤波等,都包括执行“乘积和”的计算。像乘积-累加(MAC)等特殊指令可提供先将两个16位数相乘然后再将结果加到累加器中、并从RAM中预取出一对数值的能力,这些全都在一个指令周期内完成。带有两个累加器,即可在一个累加器中进行数据回写而在另一个累加器上执行计算。
宽度为40位而不是32位的累加器允许数据临时“溢出”(这在累加器中有大量数值时经常发生)。此外,DSC的CPU还可随意使数值保持在一种称为“饱和”的机制所允许的范围内,并在数据被写回RAM中时对其进行舍入或换算。DSC的另一个特点(MCU一般不具有)是能以小数形式而不总是以整数形式来解释数据,因而有助于小数算法。
除上述特性外,DSC还具有各种用于进行有效数据转移的寻址模式,以及支持循环缓冲器与位倒序寻址及零开销循环等。很明显,DSC提供了一个强有力、用户友好、用于处理或分析传感器数据的CPU架构。
a. 灵活的中断结构 DSC架构在其中断结构中提供了极高的灵活性。通常支持多个单独可选及可优先化中断源与矢量(这对任何涉及多个传感器的应用都有好处)。中断延时具有高度可确定性,从而使系统开发者的工作变得更加容易。
b. 运行时间自编程(RTSP) 大多数传感器应用都需要存储一些常数,这些常数可用来根据环境条件、传感器间差异以及预测量偏差来校准从传感器上所获得的数据。后处理算法也需要使用这些常数,如滤波系数或FFT“旋转因子”等。而将这些常数存储在RAM中是一种不经济的数据存储器利用方法。DSC芯片一般都包含有程序闪存与基于闪存的数据EEPROM,可用来可靠及有效地存储并访问这些常数。在Flash DSC中,用户程序甚至能根据环境、数据或工作条件变化来实时修改这些常数。用户程序也可修改芯片本身的配置,例如改变振荡器或启用片上看门狗定时器等。
c. 在线串行编程(ICSP) Flash DSC还使用户容易用所谓的ICSP方法来对应用固件进行现场升级。这使得同一控制器可在不同传感器接口与条件下被再使用。此外,还可纠正传感器校准或软件漏洞,或以最小的成本与延时来提供改进。
d. 高分辨率模数转换器(ADC) 传感器一般用来测量温度、压力、光等物理参数,因此需要一个速度与分辨率足够高的片上ADC,以便能测量微小且快速改变的输入量。对于大多数系统来说,分辨率小于12位及非线性误差大于1LSbit(最低有效位)的ADC可能都不够用。
此外,任何涉及利用多个传感器来测量不同类型参数的应用,都可能要求ADC能支持各种采样、转换与抖动选项。DSC一般包含有多个模拟输入通道(以便能与多个传感器进行接口)、灵活的采样与转换选项(例如在多个输入间自动切换以执行连续采样等)以及能测量差分输入等。为减少读取已转换采样的开销,DSC还提供带可配置数据格式化(整数/小数及有正负符号/无正负符号等)的大型存储器映射ADC缓冲器。
e. 高速输入捕获 在一些传感器应用中,控制器可能会从只响应特定事件的传感器上读取输入。为减少功耗,控制器还可能需要一直保持休眠状态,直到检测到某种脉冲或信号。DSC能进入到只有内部低功率振荡器活动的低功率模式。然后可由一个控制脉冲或“输入捕获”引脚上的事件“唤醒”,然后再开始进行数据收集与计算。输入捕获通道也可用来获得某些特定事件的时间戳。
f. I/O更改通知 在很多情况下,传感器应用中的控制器可能需要根据其某些通用I/O引脚的状态变化来切换工作模式或产生告警。DSC可通过产生一次中断来迅速对这种状态变化进行响应。
g. 通信外围(UART、SPI、I2C) 随着基于传感器的系统在空间与计算上正变得分布化,控制器必须能通过某种通信总线或网络相互交换数据。
在一些应用中,控制器可能需要通过RS-232 及RS485等标准协议将数据发给PC或逻辑分析仪,以便记录或以图形形式显示从传感器上获得的数据。有时,控制器也可能选择利用外部modem并通过电话线来发送数据。鉴于此,DSC提供了一个16位可寻址UART接口。
通常,可用一个外部数模转换器(DAC)来根据传感器测量数据推动激励器,或可能需要两个智能传感器彼此相互通信。对于以上这种情况,DSC提供了一个或多个16位SPI。
另一方面,一些外围器件使用I2C协议来相互通信。例如,利用I2C,DSC可利用外部串行EEPROM来存储并访问HTML网页,以对传感器子系统的运行进行直观监视与控制。
一些典型传感器应用
现在让我们来看一下有关DSC在传感器应用中广泛适用的几个典型例子。
a. 温度传感器 在各种由传感器测量的物理参数中,温度也许是最普遍的一项参数。它是工业设备、化工厂以及采暖、通风与空调(HVAC)系统、计算机机房与电池管理系统等众多系统的一项关键指标。
精确计算以被测电阻(例如电阻温度检测器或热敏电阻等)为基础的温度,要求进行对数与除法运算,其中DSC中的DSP能力将在这方面起主要作用。在某些配置中,还要求有差分ADC输入。
当在温度传感器中使用热电偶时,所产生的电压很小而且容易受寄生结效应的干扰。在使用P-N结传感器的情况下,所产生的电压随器件的不同而变化,使得难以进行精确测量。而在其他情况下,将校准常数存储在片上数据EEPROM或程序闪存中(并进行访问)的能力,则有助于对这种不希望的效应进行补偿。同样,还需要用数学运算来对红外(IR)探测器的高度非线性输出进行线性化。
b. PIR检测 被动红外(PIR)检测器通过检测背景与活动人或物体之间的热辐射之差来探测给定区域内的运动。它们被广泛用于各种安全设施中。通常,可使用以差分ADC输入配置的一对传感器来对干扰进行补偿,并借此防止触发虚假告警。此外,有时还需要用信号处理来消除噪声源、调整探测器灵敏度以及认知热变化的重复模式等。在一幢建筑物或工厂内,遍布在各处的各传感器子系统间的信息交换与告警(例如采用RS-485这样的总线协议或通过DSC中的UART等)非常关键。
c. 气体传感器 气体传感器是诸如化工厂及储存设施等潜在危险环境中的一个重要组成部分。可将其分成三类:电化学、红外与接触反应。所有这些技术都以“正常条件下”的测量参数作为参考,并需针对特定环境及被测气体进行精确校准。这些校准参数很容易存储在DSC的数据EEPROM中。而且,由于气体检测有可能是一种灾难性事件,因此一种灵活、确定性及低延时的中断机制与“I/O更改通知”等特性极为关键。
d. 玻璃破碎检测 玻璃破碎检测器一般是一些靠近玻璃板安装,以检测玻璃破碎声音的音频传感器(麦克风)。这种系统必须既具有相当水平的抗噪声干扰能力(包括铃声或其他尖锐声等可引起虚假告警的噪声),同时又足够灵敏以便能检测低音量玻璃破碎声。这需要有效的后处理算法,即必须有DSP功能。在大型建筑物中,任何这种情况(可能由闯入者引起)都必须通过SPI或UART等通信渠道迅速传给安全控制室。输入捕获通道可帮助记录这种安全事件的发生时间。
e. 陀螺仪 陀螺仪用来检测一个物体相对于静态参照系的运动,通常(例如在飞机、测绘仪器或车辆中)是通过对机械旋转(例如加速度计)或振动(例如振动簧片)的响应来检测物体的倾斜度。对于航空电子等关键应用,要求使用高分辨率ADC。进行校准以补偿传感器漂移也是一项主要的要求。
f. 引擎敲击(Engine Knock)检测 引擎敲击(异常)一般是由未燃空气/燃料混合物点火所引起,且是车辆动力与燃油节约的一个限制因素。引擎敲击检测主要通过测量引擎中的振动或压力来完成。像FFT等信号处理算法,被用来确定这些振动的频率特征,因此需要用DSC中的双累加器来执行复杂的计算。或者,需用IIR等数字滤波程序来滤除在没有异常时所观察到的背景噪声与正常频率,然后检测算法再对滤波器输出进行积分,并将其与预先计算的参考进行比较,以确定引擎是否异常。此外,双累加器也很理想,因为一个累加器可用来执行IIR滤波而另一个累加器则用来对IIR输出进行积分。
由于不同引擎的参考条件各不相同,因此在不同速度与温度间、甚至在同一引擎的不同汽缸之间,检测算法都广泛使用存储在程序闪存或数据EEPROM中的查找表。此外,还常常需要有最少两路传感器(ADC)输入来作为用于同步及RPM计数的两路定序信号(通过输入捕获)。
g. 振动传感器 像压电加速度计等振动传感器,主要用来检测磨损、机械结构或引擎中的机械故障。这可通过测量传感器输出中的特定频率成分来完成。这种技术易受不希望噪声频率与谐波的影响,因此需要使用FIR或IIR等数字滤波算法,这可非常有效地利用DSC来完成。
h. 胎压监测器 轮胎压力监视器用来测量轮胎充气情况,由两个主要部件组成:带压力传感器(一般为可变电容传感器)及射频发射器的遥感模块(RSM)装于每个轮胎中。RSM发送压力值或“低压”信号。而位于车身控制器中的接收模块则接收这些数据,并将其传送给汽车仪表板以进行显示。一些射频收发器可使用DSC中的SPI模块等串行链路来与控制器进行接口。而DSC中的功率节省模块则可只在有请求时才发送轮胎气压数据,并根据汽车速度来改变数据发送的频率。有了DSC,还可实现蓝牙等协议的使用。一些通用DSC中还包含有CAN接口。
i. 数据记录器 典型DSC中的ADC模块所具有的强大功能,使其极适合于数据采集系统使用。例如,可对几个传感器通道进行采样,并通过自动通道切换及数据缓存来进行高速交替转换。DSP功能甚至可在数据被记录以前对其进行后处理、滤波与分析。此外,也可创造性地利用DSC中的各种通信渠道、或利用TCP/IP、email 及HTTP等高级协议来与PC或其他数据记录设备通信。
j. 指纹识别 指纹识别正越来越多地被用于房间或汽车等安全区域的物理准入控制、或用于手机访问与PC或网络登录控制、或简单地用作一种可靠的个人身份识别(ID)方式。目前已有很多种指纹传感器,如电容、光、温度及电场传感器等。譬如,电容传感器的工作依赖于人手指上的纹路起伏所引起的电容变化。
负责从指纹传感器上捕捉指纹数据的控制器需具有某些特定特点,例如一个速度足够快的ADC来接收由传感器采样到的值、一个像SPI这样的高速串行通信接口来与系统中的其他模块通信,以及一些闪存来存储指纹“模板”数据库并在鉴别或识别指纹时对数据库进行有效访问。更重要的是,需要有强大的DSP功能来执行指纹匹配运算。最后,除16位数据外,控制器还应能有效地处理8位数据(例如像DSC那样能处理字节或字数据),因为大多数传感器使用8位数值来代表指纹。 |