ADS816x SAR ADC:低串扰T型开关与灵活多通道采样技术解析 1. 项目概述与核心价值在工业自动化、医疗仪器或者电池管理系统这类对精度要求严苛的领域我们工程师常常面临一个头疼的问题如何让一个ADC模数转换器同时、准确地采集多个传感器的信号你可能会想到用多片ADC但成本、功耗和PCB面积都吃不消或者用一个传统的多路复用器MUX轮流切换通道给单个ADC但新的问题又来了——通道间的串扰。当一个通道的信号“泄露”到另一个通道时测量结果就失真了尤其是在处理微弱信号比如热电偶、压力传感器输出或高共模电压比如电池组监测时这种干扰往往是系统误差的主要来源。最近在为一个高精度多通道温度监测项目选型时我深入研究了德州仪器TI的ADS816x系列SAR ADC。这个系列最吸引我的不是它16位的高分辨率也不是它高达1MSPS的采样率而是它在多通道隔离和采样灵活性上做的“底层功夫”。它没有采用传统的模拟开关架构而是引入了一种T型开关T-Switch结构来构建其内部多路复用器从物理层面大幅削减了通道间的寄生电容耦合也就是我们常说的串扰。同时它提供了从手动切换、自动扫描到完全自定义序列在内的多种通道控制模式甚至集成了数字窗口比较器来做硬件级的阈值报警把很多需要MCU软件干预的繁琐工作都“硬件化”了。这篇文章我就结合自己的项目实践和芯片手册的深度解读来拆解一下ADS816x是如何通过低串扰T型开关和灵活的多通道采样技术来解决精密多通道数据采集中的核心痛点的。无论你是正在选型的硬件工程师还是负责底层驱动开发的嵌入式软件工程师理解这些设计细节都能帮你更好地发挥这颗芯片的性能避开设计中的那些“坑”。2. 核心技术深度解析低串扰T型开关串扰的本质是信号通过非预期的耦合路径从一个通道“跑”到了另一个通道。在多路复用器中这个耦合路径主要就是开关晶体管在关断时其源极和漏极之间存在的寄生电容CDS。2.1 传统MUX的串扰问题我们先看看问题是怎么来的。下图展示了一个典型传统多路复用器的简化模型传统MUX结构 CHX (导通) ----[SW]--------- MUXOUT | CHY (关断) ----[SW]--------[CDS]---- (浮空节点)假设通道XCHX被选中开关闭合通道YCHY未被选中开关断开。此时施加在CHY上的信号可能是高压、高频噪声或其他传感器的输出会通过其关断开关的寄生电容CDS耦合到公共的输出节点MUXOUT上。这个耦合进来的信号就会叠加在CHX的有用信号上造成测量误差。更糟糕的是这个耦合强度与信号频率和幅度有关难以通过后期校准完全消除。2.2 ADS816x的T型开关解决方案ADS816x的聪明之处在于它没有简单地使用一个开关而是为每个通道的输入都部署了一个T型开关组。我们来看它的结构ADS816x的T型开关结构 CHX (导通) ----[SW_A]--------- MUXOUT | CHY (关断) ----[SW_A]--------[CDS]----[SW_B]---- GND关键就在于那个额外的开关SW_B。当通道Y被关断时不仅通往MUXOUT的主开关SW_A断开其寄生电容CDS的下极板也不再是浮空的而是通过另一个开关SW_B被强制连接到地GND。这就带来了两个根本性的改善接地屏蔽将寄生电容的一端接地相当于在干扰信号和输出节点之间插入了一个到地的低阻抗路径。大部分耦合电流被直接导入地平面而不是流入敏感的MUXOUT节点。电压箝位由于CDS的下极板被强制拉到地电位其两端的电压变化ΔV主要发生在地端而地是稳定的参考点。这极大地抑制了通过电容耦合到输出端的电压变化量。从工程角度看这种设计将关断通道的隔离度从传统结构的几十dB提升到了更高的水平。根据芯片手册的暗示和实际测试在合理的PCB布局下通道间的串扰可以做到非常低这对于需要同时采集多路高压电池电压和低压温度信号的BMS电池管理系统来说价值巨大。实操心得PCB布局的配合至关重要芯片内部的T型开关提供了优秀的隔离基础但糟糕的PCB布局会引入新的串扰路径前功尽弃。手册中特别强调了这一点。我的经验是模拟输入走线隔离各通道的模拟输入走线应尽量远离平行走线时中间用地线隔离。对于特别敏感的通道可以考虑用“保护环”Guard Ring将其包围并接地。电源去耦AVDD和DVDD的退耦电容必须尽可能靠近芯片引脚并且使用低ESL的陶瓷电容如0402封装的X7R材质。这能防止数字噪声通过电源串入模拟域。地平面完整性保持一个完整、低阻抗的地平面是T型开关发挥效能的基石。所有接地引脚GND, REFM都应通过多个过孔直接连接到地平面。2.3 早期切换技术与长建立时间解决了静态隔离问题动态采样时的信号建立是另一个挑战。SAR ADC在采样瞬间其内部的采样电容会突然接入信号通路产生一个电荷注入Charge Kickback导致输入信号出现一个毛刺。传统方案中MUX的输出直接连接ADC输入ADC的采集时间Acquisition Time也就是MUX输出信号的建立时间。为了在这个短时间内让信号稳定下来往往需要在MUX的每个输入前端都放置一个高速、高带宽的运放作为缓冲器这无疑增加了系统功耗、成本和面积。ADS816x采用了一种“早期切换”的时序策略。如下图所示它在ADC开始采样之前提前大约100ns切换MUX的通道开关SW_MUX闭合。这样从MUX输出到ADC输入之间的驱动电路可能是一个简单的RC滤波器或一个低功耗运放就获得了额外的时间t_CYCLE - 100ns来建立并稳定信号以应对ADC采样瞬间的电荷注入。时序 CS下降沿触发转换周期(t_CYCLE) |-- MUX切换并建立 ---------|-- ADC采样转换 --| |- (t_CYCLE - 100ns) -|- t_CONV -| ^ ^ SW_MUX闭合 SW_ADC闭合 (采样)这个设计非常巧妙它放宽了对前端驱动电路带宽和压摆率的苛刻要求。在许多应用中你甚至可以直接用传感器驱动MUX输入或者仅使用一个低功耗、低带宽的运放从而简化了信号链设计降低了整体功耗。3. 灵活的多通道采样与序列控制对于多通道系统如何高效、灵活地管理各个通道的采样顺序和频率是软件设计的关键。ADS816x将这部分逻辑也高度集成化了提供了四种强大的工作模式完全通过SPI寄存器配置无需额外的硬件控制线。3.1 四种通道控制模式详解3.1.1 手动模式 (Manual Mode)这是最基础的模式也是上电默认模式。你需要通过SPI写入CHANNEL_ID寄存器来指定下一个要转换的通道。操作在SPI帧中发送24位命令字包含通道ID芯片在下一个转换周期切换通道。延迟存在一个周期的固有延迟。例如你在第N个周期发送命令切换到AINy但此时ADC已经开始对上一个通道AINx进行采样转换。因此AINy的转换结果要到第N2个周期才能从SDO读出。适用场景通道切换不频繁或需要完全由主机MCU动态控制的场合。3.1.2 即时切换模式 (On-The-Fly Mode)为了消除手动模式的周期延迟即时切换模式应运而生。操作在此模式下每个SPI帧的前5位最高位MSB为1后4位为通道ID直接决定了下一个转换周期的通道。你无需提前一个周期配置寄存器。优势零延迟切换。你可以在本次转换期间通过SPI数据流直接指定下一个要采样的通道实现真正的“背靠背”不同通道采样。注意此模式使用16位数据帧而非24位寄存器访问帧以匹配高吞吐率需要配置EN_ON_THE_FLY寄存器启用。3.1.3 自动序列模式 (Auto-Sequence Mode)这是最常用的自动化扫描模式。芯片内部有一个序列器可以按照预设顺序自动循环扫描通道。配置通过AUTO_SEQ_CFG1寄存器一个8位寄存器每位对应一个通道AIN0-AIN7来使能需要扫描的通道。例如0x0F二进制00001111表示扫描AIN0到AIN3。启动设置SEQ_START位为1序列开始运行。每次CS下降沿触发一次转换序列器自动切换到下一个已使能的通道。状态指示可以配置SEQSTS引脚在序列运行期间输出高电平序列结束后变为高阻态方便MCU同步。循环功能设置AUTO_REPEAT位可使序列无限循环非常适合周期性数据采集任务。适用场景固定顺序、固定通道组的周期性巡检如多路温度、电压监控。3.1.4 自定义通道序列模式 (Custom Channel Sequence Mode)这是功能最强大的模式允许你定义一个完全任意的采样“剧本”。核心一个用户可编程的查找表包含16个“索引”。每个索引由两部分组成通道ID(3位): 指定要采样的通道AIN0-AIN7。采样次数(8位): 指定该通道连续采样的次数1-255。流程控制通过CCS_START_INDEX和CCS_END_INDEX寄存器定义序列执行的起止索引。还可以设置CCS_SEQ_LOOP让序列循环执行。应用示例在一个电机控制系统中你可能需要以1kHz频率采样3相电流AIN0, AIN1, AIN2但以100Hz频率采样散热器温度AIN7。你可以这样配置索引0: (通道0, 次数1)索引1: (通道1, 次数1)索引2: (通道2, 次数1)索引3: (通道7, 次数1)设置循环但通过MCU控制CS触发频率。这样每10次电流采样循环后才会插入一次温度采样实现了不同通道的异频采样。避坑指南模式切换与时序模式切换需谨慎在转换进行中切换序列模式如从自动序列切换到手动模式可能导致不可预测的通道行为。安全的做法是先停止转换或将CS拉高一段时间再通过SPI写入模式配置寄存器最后重新开始转换。理解时序图芯片手册中的时序图是理解延迟的关键。务必注意CS、SCLK、SDI命令和SDO数据之间的相对关系。特别是在手动和即时切换模式下清楚“命令生效”和“数据对应”的周期差才能正确解析数据。SPI时钟极性与相位ADS816x支持4种SPI模式CPOL/CPHA。上电默认是模式0CPOL0 CPHA0。第一次配置通信模式SDI_MODE的写操作必须使用模式0。之后才能切换到其他模式。如果一开始就用错模式MCU将无法与芯片通信。3.2 数字窗口比较器硬件级的“看门狗”除了灵活的采样ADS816x还内置了一个非常实用的功能每通道独立的数字窗口比较器。工作原理ADC转换完成后数字结果会立刻与两个可编程的阈值高阈值和低阈值进行比较。每个通道都可以独立设置阈值和滞回Hysteresis。输出所有通道的比较结果经过一个“或”逻辑最终从一个专用的ALERT引脚输出。只要任何一个被使能监控的通道数据超限ALERT引脚就会拉低或拉高可配置。优势减轻MCU负担MCU无需持续读取并软件比较每一个ADC值只需要在ALERT中断发生时再去读取具体的ALERT_STATUS寄存器判断是哪个通道出了问题。这在多通道监控系统中能节省大量CPU时间和中断资源。快速响应硬件比较的延迟远低于软件轮询对于需要快速故障保护的应用如过压、过流保护至关重要。配置技巧如果只想做上限报警可以将低阈值设置为负满量程码如0x0000如果只想做下限报警则将高阈值设置为正满量程码如0xFFFF。滞回功能可以防止信号在阈值附近抖动时产生频繁的警报。4. 系统集成与实操要点理解了核心原理我们来看看如何把ADS816x集成到一个真实的系统中这里有几个关键的硬件和软件设计要点。4.1 参考电压与REFby2缓冲器ADS816x内置一个4.096V的精密基准源精度和温漂指标都不错对于大多数应用足够了。如果需要更高性能或不同电压也支持外部基准。内部基准使用内部基准时需在REFIO和REFM引脚之间连接一个≥1µF的退耦电容并注意REFM需要外部短接到模拟地。外部基准选择外部基准时建议选用输出阻抗较高的类型因为芯片内部基准缓冲器的输入漏电流很小1µA。同样需要紧密的退耦。REFby2缓冲器是一个极具特色的设计。它内部通过一个电阻分压网络产生VREF/2即2.048V的电压并由一个缓冲器输出到REFby2引脚。这个引脚能提供最高2mA的拉电流。核心用途为单端输入信号提供直流偏置。许多传感器的输出是围绕0V摆动的交流信号或者是以地为参考的单极性信号。ADC的输入范围是0V到VREF。将REFby2连接到信号调理运放的正输入端可以将传感器的信号抬升到ADC量程的中间充分利用ADC的动态范围提高信噪比。典型接法交流耦合传感器传感器输出通过一个电容耦合到运放反相端运放同相端接REFby2构成一个交流放大器输出以2.048V为中心。电流检测电流检测放大器的REF引脚接REFby2使其输出在静态时处于ADC量程中点。高阻传感器接口配合仪表放大器INA用REFby2为其提供参考电压。4.2 电源设计与内部LDOADS816x采用单电源AVDD典型值5V供电。芯片内部集成了一个LDO将5V降压为2.85V为内部模拟核心电路供电。DECAP引脚这是内部LDO的输出引脚必须连接一个1µF的陶瓷退耦电容到地GND。这个电容要选用X7R材质额定电压6.3V以上并尽可能靠近芯片引脚放置。重要警告DECAP引脚仅供芯片内部使用严禁用它为外部任何电路供电它的驱动能力和稳定性只针对内部负载设计外接负载会导致ADC性能严重下降甚至不稳定。电源滤波除了DECAP电容AVDD和DVDD引脚也需要各自独立的退耦电容例如10µF钽电容并联0.1µF陶瓷电容以隔离数字噪声和模拟噪声。4.3 SPI接口与数据读取策略ADS816x的SPI接口功能丰富支持标准SPI模式也支持双SDO输出和时钟重定时等高级模式以降低MCU负担。基本连接最少需要4线CS片选、SCLK时钟、SDI主机输出从机输入即MOSI、SDO主机输入从机输出即MISO。数据帧格式寄存器读写需要24个SCLK时钟。前8位是命令/地址后16位是数据。ADC数据读取至少需要16个SCLK时钟来移出16位转换结果。在24位帧格式下后8位是无效的。双SDO模式通过配置可以将SDO-1/SEQSTS引脚也用作数据输出。在此模式下每个时钟周期输出2位数据在高速率下可以将所需的SCLK频率减半降低了MCU的接口速度要求也减少了数字噪声。时钟重定时模式这是更高级的模式芯片会输出一个与数据同步的时钟DCLK帮助MCU在高速率下更可靠地锁存数据。这在SCLK频率接近MCU SPI外设极限时非常有用。4.4 寄存器配置流程示例下面以一个典型的初始化流程为例展示如何通过SPI配置芯片硬件复位拉低RST引脚至少10µs然后拉高。确保电源和时钟稳定。基础通信使用默认的SPI模式0CPOL0 CPHA0与芯片通信。这是上电后唯一有效的模式。配置SPI模式可选如果需要切换SPI模式例如CPHA1首先用模式0向SDI_CNTL寄存器写入目标模式值。配置参考源向REF_SEL等寄存器配置使用内部或外部基准。配置序列模式向DEVICE_CFG寄存器的SEQ_MODE位写入值选择手动00、即时01、自动10或自定义11模式。若为自动序列配置AUTO_SEQ_CFG1寄存器选择通道设置AUTO_REPEAT决定是否循环。若为自定义序列依次向查找表寄存器0x8C-0xAB写入通道ID和采样次数配置起止索引。配置警报比较器可选设置各通道的ALERT_HI_TH和ALERT_LO_TH阈值以及HYSTERESIS值然后在ALERT_CFG寄存器中使能所需通道的警报功能。启动转换将CS引脚拉低开始提供SCLK时钟。在自动或自定义序列模式下向SEQ_START寄存器写1启动序列。调试心得利用SDO-1/SEQSTS引脚这个引脚功能可配置在调试阶段非常有用将其配置为SEQSTS功能。在自动或自定义序列运行时该引脚为高电平序列完成后变为高阻态。用示波器观察这个引脚可以直观判断内部序列器是否在运行以及何时运行结束。在怀疑SPI通信问题时可以将其配置为SDO-1与SDO-0一起观察数据输出波形辅助判断是命令写入错误还是数据读取问题。5. 常见问题排查与设计陷阱在实际使用ADS816x的过程中我遇到过一些典型问题这里总结出来供大家参考。5.1 精度不达标或噪声过大现象可能原因排查步骤与解决方案INL/DNL误差大1. 参考电压噪声大或驱动能力不足。2. 模拟输入信号建立不充分。3. 电源噪声过大。1. 检查REF引脚退耦电容1µF是否紧靠引脚质量是否良好用X7R。测量REF引脚波形看是否有毛刺。2. 确认前端驱动运放的带宽和压摆率是否满足信号建立要求。利用“早期切换”特性确保有足够建立时间t_CYCLE - 100ns。3. 用示波器检查AVDD和DECAP引脚上的噪声。确保使用了低ESR/ESL的退耦电容且数字地噪声未串扰到模拟地。通道间串扰明显1. PCB布局不当输入走线耦合。2. 前端传感器或驱动电路共地阻抗过大。3. 未正确使用T型开关的优势如关断通道悬空。1. 复查PCB确保各模拟输入走线间距足够必要时用地线隔离。检查MUXOUT到ADC输入走线是否简短。2. 确保所有传感器的地回路阻抗低避免通过地线引入串扰。3. 确保所有未使用的模拟输入引脚不能悬空应接地或接一个固定的直流电位。读数存在固定偏移1. REFby2缓冲器负载过重。2. 单端输入时未正确偏置到中间量程。3. 外部基准源精度不够或漂移大。1. REFby2引脚最多提供2mA电流。检查连接到该引脚的负载总电流是否超标。2. 确认信号调理电路将静态工作点设置在VREF/2附近。3. 校准系统时测量外部基准电压的实际值并在软件中进行换算补偿。5.2 SPI通信失败或数据错误现象可能原因排查步骤与解决方案完全无响应1. 电源或复位不正常。2. SPI模式CPOL CPHA配置错误。3. CS信号时序问题。1. 测量AVDD DVDD电压是否在4.75V-5.25V范围。确认RST引脚已置高。2.牢记首次通信必须用SPI模式0。用逻辑分析仪抓取CS SCLK SDI波形确认极性和相位与芯片当前配置模式匹配。3. 确保CS在数据帧之间保持高电平足够时间满足t_CSH。数据帧错位1. SCLK时钟数不对。2. 在即时切换模式下使用了错误的帧格式。1. 寄存器操作需要24个SCLK读取ADC数据至少需要16个。用逻辑分析仪确认时钟计数。2. 即时切换模式使用特定的5位命令头。确认发送的数据格式正确且MSB为1表示通道命令。读取的数据全为0或全为11. 模拟输入超范围低于0V或高于VREF。2. 参考电压未正确建立或短路。3. 转换未真正启动。1. 用万用表测量实际输入到AINx引脚的电压。2. 测量REFIO或REFP引脚电压是否为预期的4.096V左右。3. 检查CS信号是否在转换期间保持低电平SCLK是否在提供。尝试读取器件ID寄存器如果支持验证通信本身是否正常。5.3 多通道采样时序混乱问题在手动或即时切换模式下读取到的数据与预期通道不符。根源未能理解通道切换的延迟。在手动模式下命令生效有1个周期的延迟在即时切换模式下虽然无延迟但命令是在当前帧指定下一帧的通道。解决仔细分析数据手册中的时序图在软件中建立正确的“命令-通道-数据”映射关系。一个可靠的实践是在启动连续采样后丢弃前几个周期的数据直到确认通道切换序列已稳定。5.4 ALERT引脚不触发或误触发不触发检查ALERT_CFG寄存器是否已使能目标通道的警报功能。确认阈值设置是否合理例如高阈值是否高于低阈值。检查ALERT引脚的上拉电阻是否连接。误触发信号噪声过大在阈值附近抖动。启用并合理设置滞回Hysteresis值。例如如果阈值是2000 LSB滞回设置为10 LSB那么只有当数据从低于1990上升到高于2000时才会触发高警报并且需要再降到低于1990才会解除警报。这能有效抑制噪声引起的抖动。最后再分享一个在电池包电压检测项目中的小技巧。我们使用ADS8167监测16节串联电池的电压每节约3-4V。我们将每两节电池的电压通过电阻分压后送入一个通道。由于T型开关的高隔离度我们无需担心相邻通道间的高压差最高可达8V通过MUX产生串扰。同时利用自定义序列模式我们以较高频率采样关键的中间几节电池易出问题而以较低频率采样两端的电池在保证监控效果的同时优化了MCU的数据处理负荷。REFby2缓冲器则为所有分压电路提供了精准的2.048V偏置确保了ADC量程的最佳利用。整个设计简洁、可靠性能完全达到了预期。

本月热点