许多针对物联网 (IoT) 的设计都依靠模拟电路,以便满足应用对传感器和致动器的信号调节、电流控制和其他功能的独特要求。虽然专用的信号链 IC 可以满足这种需求,但是成本和空间严格受限的设计需要一种专门方法,这种方法不但应该满足性能要求,还应该使用更少的零件来实现这一功能。
为满足这一需求,微控制器应运而生。通过集成诸如模数转换器 (ADC) 和比较器等模拟外设,微控制器可以简化传感器和致动器的接口性质。然而,直到最近,工程师们通常还需要添加模拟零件,来提供大多数设计所需的信号调节或输出缓冲。
通过在微控制器上添加这些模拟信号调节电路,开发人员现在只需操作几行代码,即可有效配置这些元件,从而满足可穿戴设备和其他物联网设备的各种模拟接口要求。
本文将讨论物联网连接设备对前端模拟信号调节要求的需求,然后介绍一类具有高度集成模拟功能的微控制器,并说明如何应用此类微控制器。
将传感器连接到微控制器
传感器设计通常需要一个或两个放大器来调节变送器的输出信号,然后才能到达微控制器的 ADC 输入。诸如用于心率监测的脉搏血氧计等较复杂器件需要多个信号链,才能产生 LED 激励波形,转换光电二极管输出,并最终提取脉冲数据(图 1)。即使是工业应用中通常用于将传感器连至可编程逻辑控制器的简单电流环路,也需要其他设备来驱动和控制电流输出。但是,通过使用 MSP430FR2355 MCU 中的内部模拟元件,开发人员可以实现更紧凑的设计,一般只需添加几个无源元件即可。
图 1:用户期待更紧凑产品能够提供更多高级功能,这意味着,开发人员需要在实现复杂信号路径(如此图中脉搏血氧计的路径)时大幅减少零件的数量。(图片来源:Texas Instruments)
集成模拟元件
Texas Instruments MSP430FR2355 MCU 基于 16 位 RISC 处理器内核,可提供许多物联网设备设计中通常需要的全套功能。作为 TI MSP430 FRAM 系列器件之一,MSP430FR2355 集成了 32 KB 的低功耗铁电存储器 (FRAM)。FRAM 非常适合物联网设计,具有闪存的非易失性存储优势,以及 RAM 的写入速度和耐用性。因此,开发人员可以利用 FRAM 的类似于 RAM 的性能品质,在激活模式下存储数据和程序代码,并且可以利用 FRAM 的非易失性功能,在休眠模式或其他需要节省电能的运行状态下保留数值。MSP430FR2355 支持多种低功耗模式,旨在满足这些设计中典型的低功耗要求。
除了低功耗特性外,MSP430FR2355 还可通过几个集成的模拟外设支持物联网接口要求,这些外设包括 12 通道 12 位 ADC、配有集成数模转换器 (DAC) 的模拟比较器以及多个片上电压基准。MSP430FR2355 MCU 的最独特模拟功能是它的四个智能模拟组合 (SAC) 模块,开发人员可通过编程方式配置这些模块,以满足特定需求。
每个 SAC 模块均包括一个 12 位 DAC、一个轨至轨运算放大器 (OA) 和一个可将 OA 转变为可编程增益放大器 (PGA) 的反馈电阻梯。每个元件的专用寄存器可控制其配置和工作模式。例如,开发人员可以简单地在 SAC (SACx) 模块的 OA 寄存器 (SACxOA) 中加载 0:1 位,从而将 OA 的正输入设置为某个外部源、DAC 输出或成对的 SAC 源(如下所述)。
TI 公司的驱动程序库将这些位操作抽象为一组直观的应用程序编程接口 (API) 调用。因此,开发人员只需几行代码(清单 1),即可将 SAC 模块编程为通用放大器,以便完全取代传感器信号调节放大器,从而减少零件数量,缩小设计尺寸(图 2)。
复制 //Select external source for both posiTIve and negaTIve inputs SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL, SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL); //Select low speed and low power mode SAC_OA_selectPowerMode(SAC0_BASE, SAC_OA_POWER_MODE_LOW_SPEED_LOW_POWER) // Enable OA SAC_OA_enable(SAC0_BASE); // Enable SAC SAC_enable(SAC0_BASE);
清单 1:在该示例中,要实现通用放大器,开发人员只需调用几次 Texas Instruments 驱动程序库,初始化 SAC OA 输入 (SAC_OA_init),然后将其功耗模式 (SAC_OA_selectPowerMode) 设置为低功耗,最终启用 OA 和 SAC 即可。(代码来源:Texas Instruments)
图 2:开发人员可以使用 MCU 四个智能模拟组合 (SAC) 模块的其中一个,通过 Texas Instruments MSP430FR2355 MCU 内部实现的运算放大器来取代外部运算放大器。(图片来源:Texas Instruments)
要充当输出波形发生器,SAC 模块需要接入更多元件(图 3)。在这种情况下,开发人员可通过编程方式,将数据加载到可设置内部 DAC 输出的专用数据寄存器 (SACxDAT) 中,从而实现波形控制。DAC 输出随即可为 OA 提供基准电压。在此配置中,开发人员可将 PGA 寄存器 (SACxPGA) 中的 0:1 位 (MSEL) 设置为缓冲模式 (01b),以此增强 OA 的驱动强度,缓冲模式 (01b) 对应于浮动输入。要配置此工作模式,开发人员只需多执行几次 API 调用(清单 2)即可——与上述通用配置所需的调用相比。
图 3:开发人员可使用 SAC 模块的数模转换器和运算放大器元件,实现可编程波形发生器。(图片来源:Texas Instruments)
//Select internal shared reference as DAC reference voltage SAC_DAC_selectRefVoltage(SAC0_BASE, SAC_DAC_SECONDARY_REFERENCE);
//Select the load trigger for DAC data latch //DAC always loads data from DACDAT at the positive edge of Timer output TB2.1 SAC_DAC_selectload(SAC0_BASE, SAC_DAC_LOAD_DEVICE_SPECIFIC_0); //Enable DAC Interrupt SAC_DAC_interruptEnable(SAC0_BASE);
//Write data to DAC Data Register SACxDAT //DAC_data is an unsigned int type variable defined by user SAC_DAC_setData(SAC0_BASE, DAC_data);
//Enable DAC SAC_DAC_enable(SAC0_BASE);
//Select internal DAC for positive input and PGA source for negative input SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_DAC, SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);
//Select Buffer Mode SAC_PGA_setMode(SAC0_BASE, SAC_PGA_MODE_BUFFER);
//Enable OA SAC_OA_enable(SAC0_BASE);
//Enable SAC SAC_enable(SAC0_BASE);
清单 2:要将 SAC 模块配置为波形发生器,除了用作通用放大器所需的 API 调用之外,开发人员只需多执行几次 API 调用即可。(代码来源:Texas Instruments)
多级
在许多情况下,开发人员需要使用多个放大器构建的信号条件或输出链。例如,传感器系统设计人员通常可级联放大器,以缓冲变送器输出,并放大缓冲信号,从而与位于信号链一端的 ADC 的满量程响应相符。同样,输出接口的开发人员通常需要级联放大器来生成波形,并控制栅极驱动器。例如,为了构建电流环路接口,开发人员可使用配置为 DAC 模式的 SAC 模块来提供调制信号电压。通过将第二个 SAC 模块配置为 OA 模式,可以使用外部晶体管将信号电压转换为电流(图 4)。
图 4:为了构建电流环路接口,工程师可以使用一个配置为 DAC 模式的 SAC 模块来生成调制信号电压,然后使用第二个配置为 OA 模式的 SAC 模块来驱动晶体管,从而产生环路电流 ILOOP (I1 + I2)。(图片来源:Texas Instruments)
MSP430FR2355 MCU 为级联放大器提供了更高效的方法。对于不需要其他外部元件的设计,开发人员可利用内置路由,在内部将 SAC 模块互连成两对:SAC0 内部连接到 SAC2,SAC1 连接到 SAC3。
这种互连可应用于传感器系统,例如需要将光电二极管的电流输出转换为电压电平以进一步进行转换的烟雾探测器。开发人员只需几行代码,即可通过一对 SAC 模块来实现这一信号链(清单 3)。在本电路图中,SAC2 被配置为跨阻放大器,可将光电二极管的电流输出转换为电压,而成对的 SAC0 可为下游 ADC 放大该电压(图 5)。如清单 3 所示,SAC2 和 SAC0 之间的内部连接仅在 API 调用 (SAC_OA_init) 中创建,以便通过将 PGA 用作 OA 的负输入源 (SAC_OA_NEGATIVE_INPUT_SOURCE_PGA),将成对 OA 用作正输入源 (SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA) 来初始化 SAC0 (SAC0_BASE)。
//Configure Op-Amp functionality GPIO_setAsPeripheralModuleFunctionInputPin(GPIO_PORT_P3, GPIO_PIN1 | GPIO_PIN3 | GPIO_PIN2, GPIO_TERNARY_MODULE_FUNCTION);
//Select external source for both positive and negative inputs SAC_OA_init(SAC2_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_EXTERNAL, SAC_OA_NEGATIVE_INPUT_SOURCE_EXTERNAL); //Select low speed and low power mode SAC_OA_selectPowerMode(SAC2_BASE, SAC_OA_POWER_MODE_LOW_SPEED_LOW_POWER); SAC_OA_enable(SAC2_BASE);
// Enable SAC2 OA SAC_enable(SAC2_BASE);
// Enable SAC2 //Select external source for both positive and negative inputs SAC_OA_init(SAC0_BASE, SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA, SAC_OA_NEGATIVE_INPUT_SOURCE_PGA);
SAC_OA_enable(SAC0_BASE);
// Enable SAC0 OA SAC_enable(SAC0_BASE);
// Enable SAC0
清单 3:开发人员只需初始化 MSP430FR2355 MCU 的一对 SAC 模块,并规定下游级的输入端需将成对 OA 用作其来源 (SAC_OA_POSITIVE_INPUT_SOURCE_PAIR_OA),即可创建一个两级信号链。(代码来源:Texas Instruments)
图 5:通过配置 MSP430FR2355 MCU 的成对 SAC 模块,实现典型烟雾探测器输入信号链中所需的跨阻放大器 (TIA) 和可编程增益放大器 (PGA),开发人员可以有效地消除烟雾探测器设计中对外部模拟 IC 的需求。(图片来源:Texas Instruments)
使用这种方法,开发人员几乎可实现物联网设计及可穿戴设备所需的全套模拟输入和输出电路。例如,开发人员可使用 MSP430FR2355 SAC 模块,将复杂的模拟设计(如图 1 所示的脉搏血氧计)简缩成更紧凑的版本(图 6)。除了 LED、光电二极管和相关电阻器外,设计人员只需 MCU 即可实现同样的功能。
图 6:开发人员可以使用 MSP430FR2355 MCU 及其 SAC 模块,在需要多个输出激励源和多级输入信号链的脉搏血氧计等设计中,大幅减少零件的数量。(图片来源:Texas Instruments)
要评估 MSP430FR2355 MCU 及其 SAC 模块的用途,开发人员可利用 Texas Instruments MSP-EXP430FR2355 LaunchPad 开发套件。该电路板设计用于加快原型开发,包括基于 MSP430FR2355 的完整系统,系统配有光传感器、LED、按钮(用于与简单示例应用程序交互)以及用于软件开发的板载调试探头。
Grove 连接器可连接各种基于 Grove 的附加组件,TI BoosterPack 连接器则可让开发人员通过 RF BoosterPacks 轻松扩展基础平台,从而实现无线连接。TI 还提供一组示例软件应用程序,这些程序设计用于在 LaunchPad 套件上立即运行。除了运行 LaunchPad 开发板之外,示例软件还演示了基本设计模式,例如清单 3 代码片段中显示的 SAC 模块互连方法。
结论
任何与现实世界交互的器件一般都需要模拟接口。然而,在针对可穿戴设备和物联网设备的许多设计中,构建这些接口所需的附加设备与更紧凑设计和减少零件数量的要求背道而驰。
通过配置集成在 Texas Instruments MSP430FR2355 MCU 中的模拟元件,开发人员通常只需添加几个无源元件,即可实现这些设计所需的信号链功能。