深入解析ADS890xB高性能ADC:采样保持电路与多SPI接口设计指南 📅 2026/7/25 3:50:22 1. 项目概述与核心价值在嵌入式系统、精密测量和高速数据采集领域模数转换器ADC的性能往往是整个系统精度的天花板。我们常常关注ADC的分辨率、采样率和信噪比但一个同样关键却容易被忽视的环节是连接模拟世界与数字世界的“桥梁”——采样保持电路与数字接口协议。前者决定了ADC“看”到的信号是否真实后者决定了转换后的数据能否被快速、无误地“搬走”。德州仪器TI的ADS890xB系列包括ADS8900B/02B/04B正是这一理念的杰出代表它不仅仅是一个20位、1MSPS的高性能ADC更是一个集成了精妙采样保持架构与高度灵活、高速数字接口的完整数据采集解决方案。如果你正在设计医疗超声、工业自动化控制、高端测试仪器或任何对信号保真度和数据吞吐率有严苛要求的系统那么深入理解ADS890xB的内部工作机制尤其是其采样保持电路的设计哲学和强大的多SPI接口协议将是优化系统性能、规避设计陷阱的关键。很多工程师在初次使用这类高性能ADC时容易陷入“配置对了就能用”的误区却不知其内部时序的微妙平衡、接口协议的灵活选择直接关系到系统能否达到标称的精度与速度。本文将结合我多年的硬件设计经验为你深入拆解ADS890xB的这两大核心模块从原理到实操从配置到避坑提供一份可直接落地的设计指南。2. 采样保持电路精度捕获的“第一道门”采样保持电路是ADC的“感官前端”它的任务是在一个极短的时间窗口内快速、准确地捕获输入信号的瞬时电压并在整个转换周期内将其“冻结”住供内部ADC核心进行量化。ADS890xB的采样保持电路设计直接体现了其在高速高精度应用中的考量。2.1 等效电路与工作模式解析根据数据手册ADS890xB的采样保持等效电路可以简化为一个包含开关电阻和采样电容的网络。其正负差分输入引脚AINP, AINM各自连接着一个由采样开关SW1/SW2和串联电阻RS1/RS2典型值50Ω以及采样电容CS1/CS2典型值60pF组成的通路。1. 采集阶段当器件处于采集状态时两个采样开关SW1和SW2闭合。此时外部模拟信号源通过RS1和RS2对CS1和CS2充电。这个过程的核心是建立时间。你需要确保在给定的采集时间窗口内采样电容上的电压能够充分建立到输入信号的最终值误差要小于1个LSB。建立时间常数 τ R_S * C_S其中R_S是信号源输出阻抗、PCB走线电阻与内部采样电阻RS之和C_S是采样电容CS与引脚寄生电容之和。对于满量程阶跃输入建立到20位精度约1ppm所需的时间约为9 * τ。因此驱动ADC的前端运放必须具有足够低的输出阻抗和高的压摆率以满足建立时间要求。2. 保持与转换阶段当CONVST引脚出现上升沿器件进入转换状态时采样开关断开。此时CS1和CS2上保持的电压差值VAINP - VAINM被送入后续的ADC核心进行量化。开关断开瞬间产生的电荷注入和时钟馈通是引入误差的主要来源。ADS890xB通过精心的开关设计和布局将这些非理想效应降至最低。但作为系统设计者你必须注意在开关切换的瞬间即孔径时间输入信号应保持稳定任何扰动如来自数字部分的噪声耦合都会导致孔径抖动直接恶化ADC的信噪比。实操心得驱动电路设计驱动ADS890xB这类高精度ADC绝不能简单地直接连接信号源。必须使用一个高性能、低噪声、低失真的运算放大器作为缓冲器。我通常会选择单位增益稳定的精密运放并在其输出端和ADC输入之间串联一个小的隔离电阻如10-100Ω并搭配一个对地的RC滤波器如10Ω 1nF构成一个单极点抗混叠滤波器。这个电阻有助于隔离运放输出与ADC采样电容切换时产生的瞬态电流提升稳定性。滤波器则能限制带宽减少带外噪声。2.2 输入范围与共模电压计算ADS890xB支持单极性、全差分输入。其输入范围与共模电压由外部参考电压VREF决定。这是正确使用该ADC的基石。满量程输入范围FSR VREF。这意味着差分输入电压AINP - AINM的有效范围是-VREF到VREF。例如当VREF 4.096V时FSR 4.096V即输入电压可以在 -4.096V 至 4.096V 之间变化。共模电压VCM VREF / 2。这是输入引脚AINP和AINM的绝对电压应该围绕的中心点。对于VREF4.096VVCM应为2.048V。这意味着如果你的信号是±2.048V的差分信号那么AINP和AINM的绝对电压应该在2.048V上下摆动。传输函数与代码ADC的输出是22位二进制补码格式。其理想传输特性如下表所示差分模拟输入电压 (AINP – AINM)输出代码 (十六进制) –VREF800000–VREF 1 LSB800001–1 LSBFFFFFF00000001 LSB000001 VREF – 1 LSB7FFFFF最小有效位LSB的计算1 LSB FSR / 2^20 VREF / 2^20对于VREF4.096V1 LSB 4.096V / 1,048,576 ≈ 3.906μV。这个值决定了ADC的电压分辨率。注意事项输入保护与绝对电压范围每个模拟输入引脚内部都有ESD保护二极管连接到REFBUFOUT和GND。务必确保AINP和AINM的绝对电压始终在GND和REFBUFOUT之间通常为AVDD。如果输入电压超出此范围二极管导通不仅会引入失真还可能损坏器件或导致读数异常。在设计前端电路时必须用钳位电路或谨慎选择运放供电轨来保证这一点。3. 接口协议模块高速数据流的“交通规则”如果说采样保持电路是ADC的“感官”那么接口模块就是其“神经系统”。ADS890xB的接口模块远不止一个简单的SPI它是一个高度可配置的“多SPI”引擎旨在解决高速数据读取时的时序瓶颈问题。3.1 核心架构与数据流接口模块的核心组件包括输入/输出移位寄存器IDR/ODR、配置寄存器和协议转换单元。其工作流程可以概括为命令写入主机通过SDI引脚在SCLK时钟同步下将22位命令帧包含5位命令码、9位地址和8位数据移入IDR。命令处理在CS上升沿IDR内容被锁存到命令处理器进行解码执行读/写/置位/清除寄存器等操作。数据读出在下一个数据帧中ODR中的22位输出数据字可能是转换结果、寄存器值或测试模式数据通过SDO引脚移出给主机。输出数据字的构成22位输出数据字D[21:0]的构成是灵活的D[21:2]通常是上一次的转换结果20位。但如果前一个帧执行了RD_REG命令则D[21:14]为读取的寄存器值D[13:2]为0。如果DATA_VAL位被置位则D[21:2]会被预定义的DATA_PATN[19:0]模式替代用于测试。D[1:0]默认是0。当使能奇偶校验PAR_EN1时D[1]和D[0]分别成为帧长奇偶校验位FLPAR和帧尾奇偶校验位FTPAR用于通信完整性检查。3.2 数据帧与命令帧详解一个数据帧始于CS下降沿止于CS上升沿。帧内SCLK的数量决定了帧的类型短命令帧SCLK 22仅用于快速读取部分MSB数据。IDR内容被忽略视为NOP无操作。最优命令帧SCLK 22标准操作模式。IDR中的22位被解码为有效命令。长命令帧SCLK 22仅最后22位被捕获为命令。可用于菊花链拓扑。关键时序参数t_conv: 转换时间由内部振荡器决定有最小值和最大值。t_acq: 采集时间t_cycle - t_conv。t_qt_acq和t_d_cnvcap: 安静采集时间和安静孔径时间。在这两个时间段内必须严格禁止任何数字信号如SCLK, CS, SDI的跳变否则会严重干扰采样和转换过程导致精度下降。这是许多高速ADC设计中最容易踩的坑。3.3 转换周期与数据帧的交错策略为了实现高吞吐量主机需要巧妙地交错安排转换启动CONVST上升沿和数据读取CS下降沿操作。ADS890xB定义了Zone 1和Zone 2两个数据传送窗口。Zone 1传送在当前转换周期C的转换阶段t_conv结束后下一个转换周期C1的采集阶段t_acq开始前读取转换C的结果。这种方式响应时间最短但对SCLK速度要求最高。Zone 2传送在下一个转换周期C1的转换阶段t_conv期间读取转换C的结果。这种方式允许使用更低的SCLK频率但响应时间更长。计算公式对比假设目标采样周期为t_cycle。Zone 1所需读取时间t_read-Z1 t_cycle - t_conv_max - t_qt_acqZone 2所需读取时间t_read-Z2 t_cycle - t_d_cnvcap设计选择追求最低延迟选择Zone 1但需要计算并确保你的MCU/FPGA能提供足够高的SCLK频率f_SCLK 20 / t_read-Z1。降低主控时钟压力选择Zone 2可以显著降低对SCLK频率的要求代价是数据延迟增加约一个转换周期。4. 多SPI协议实战从标准到源同步这是ADS890xB最强大的特性之一。它提供了从标准SPI到高速源同步模式的多种协议以适应不同的系统速度和复杂度需求。4.1 标准SPI兼容协议这是最基础的接口模式与通用SPI控制器兼容。主要通过SDI_CNTL寄存器配置时钟极性和相位。协议SCLK极性(CS下降沿)SCLK相位(捕获边沿)SDI_CNTL值说明SPI-00-S低上升沿00h模式0 (CPOL0, CPHA0)SPI-01-S低下降沿01h模式1 (CPOL0, CPHA1)SPI-10-S高下降沿02h模式2 (CPOL1, CPHA0)SPI-11-S高上升沿03h模式3 (CPOL1, CPHA1)配置步骤上电或复位后默认处于SPI-00-S模式。在SPI-00-S模式下通过WR_REG命令向SDI_CNTL寄存器写入目标模式值如01h。此后所有通信读和写都需遵循新协议。4.2 提升吞吐量总线宽度与DDR为了在不提高SCLK频率的前提下提升数据吞吐率ADS890xB支持扩展SDO总线宽度和双倍数据率。双SDO/四SDO模式通过设置SDO_CNTL寄存器中的SDO_WIDTH[1:0]位可以将数据总线从1位扩展到2位SDO-0, SDO-1或4位SDO-0至SDO-3。在最优读帧下读取22位数据所需的SCLK周期数从20个分别减少到10个和5个。早期数据启动模式对于SPI-00-S和SPI-10-S协议可以设置SDO_MODE[1:0]01b来使能EDL。在此模式下SDO数据会提前半个SCLK周期输出为主机控制器提供更充裕的建立时间从而允许系统运行在更高的SCLK频率。双倍数据率在源同步协议中可以设置DATA_RATE1b。此时数据在RVS输出时钟的每个边沿上升沿和下降沿都被锁存数据率翻倍。4.3 高速传输的终极方案源同步协议在高速或长距离通信中PCB走线延迟、隔离器延迟和时钟到数据输出延迟会严重限制标准SPI的最大时钟频率。ADS890xB的ADC-Clock-Master源同步模式是解决此问题的利器。工作原理在此模式下RVS引脚的功能从“转换就绪”信号变为源同步输出时钟。ADC使用这个时钟来同步输出SDO上的数据。主机控制器使用这个随数据一起发送的RVS时钟而非自己产生的SCLK来捕获SDO数据。优势消除路径延迟影响由于数据和时钟经历相同的路径延迟PCB、隔离器它们在接收端主机的相位关系得以保持大大放松了对时序的要求。支持更高数据率几乎消除了传统SPI中因路径延迟对时钟频率的限制可以实现极高的数据传输速率。配置选项通过SDO_CNTL寄存器时钟源选择EXTCLKRVS输出与输入的SCLK同步。注意当DVDD 2.35V时不推荐。INTCLK/INTCLK/2/INTCLK/4RVS输出与内部ADC时钟或其分频同步。仅支持在Zone 1进行数据传输。总线宽度单/双/四SDO。数据率SDR或DDR。例如SRC-EXT-DD协议表示源同步、外部SCLK作为输出时钟、双SDO总线、DDR模式。这可能是追求极高吞吐量的首选配置。避坑指南协议切换与初始化上电顺序务必先完成电源、基准电压稳定再进行数字接口通信。在RST释放后先等待td_rst时间再尝试配置。协议配置的“鸡生蛋”问题要配置接口协议首先需要通过默认的SPI-00-S模式写入配置寄存器。如果你的主控器默认SPI模式不是模式0需要在初始化阶段临时切换。一个稳健的做法是主控器上电后先强制配置为SPI模式0完成ADS890xB的初始配置后再根据需要切换到双方约定的高速协议。Zone 2的限制如果在Zone 2进行数据传输并想使用源同步模式必须且只能选择EXTCLK选项SSYNC_CLK_SEL[1:0] 00b。使用内部时钟源在Zone 2是无效的。菊花链的注意点仅当SDO_CNTL寄存器配置为00h或01h即标准SPI或带EDL的标准SPI时长数据帧才会触发菊花链操作。在其他模式下长帧后SDO输出的是0而非后级器件数据。5. 寄存器配置与命令系统详解ADS890xB提供了9个配置寄存器通过一套简洁的命令集进行访问这是发挥其全部功能的基础。5.1 命令格式与类型所有命令均为22位格式为B[21:17] CMD_CODE | B[16:8] ADDR | B[7:0] DATA/UNMASKED_BITS支持的命令如下命令助记符B[21:17]B[16:8] (地址)B[7:0]描述NOP0000000000000000000000无操作。任何保留位组合也被视为NOP。RD_REG100019位地址00000000读取指定地址寄存器的内容。结果在下一个数据帧的D[21:14]输出。WR_REG100109位地址8位数据将8位数据写入指定地址寄存器。SET_BITS100119位地址8位掩码将指定地址寄存器中对应掩码位为‘1’的位设置为‘1’。其他位不变。CLR_BITS100009位地址8位掩码将指定地址寄存器中对应掩码位为‘1’的位清除为‘0’。其他位不变。关键寄存器摘要SDI_CNTL配置输入SDI协议模式SPI模式。SDO_CNTL配置输出协议的核心寄存器。包含输出模式、总线宽度、数据率、时钟源选择等所有关键位。DATA_CNTL控制输出数据字的内容如是否使能测试模式DATA_VAL、设置测试模式数据DATA_PATN、奇偶校验配置PAR_EN,FPAR_LOC等。5.2 配置流程示例假设我们需要将ADS890xB配置为使用源同步模式、内部时钟/2、四SDO、DDR即SRC-IB2-QD协议。硬件复位拉低RST引脚至少twl_RST时间然后拉高等待td_rst后进入ACQ状态。初始通信SPI-00-S主控器配置为SPI模式0。写入SDO_CNTL寄存器目标值根据Table 9SRC-IB2-QD对应SDO_CNTL 9Fh。命令帧WR_REG命令。B[21:17]10010,B[16:8]SDO_CNTL寄存器地址,B[7:0]9Fh。操作在CS低电平期间提供22个SCLK将上述22位命令通过SDI移入。可选验证配置发送RD_REG命令读取SDO_CNTL寄存器。在下一个数据帧中读取SDO上的数据其中D[21:14]应为9Fh。切换主控器模式主控器SPI接口需要根据源同步协议调整。此时主机不再使用自己的SCLK去读取数据而是使用ADC输出的RVS时钟来锁存SDO[3:0]上的4位数据。主机提供的SCLK仅用于发送命令SDI其频率和相位需根据SDI_CNTL的配置仍需遵循SPI模式来设定。6. 系统设计要点与常见问题排查6.1 PCB布局与电源去耦对于20位精度的ADC布局和电源至关重要。模拟与数字分区将模拟部分前端运放、ADC的AVDD/REFIN和数字部分ADC的DVDD、MCU明确分区。地平面使用单点连接通常是一个磁珠或0Ω电阻在ADC下方连接。电源去耦在每个电源引脚AVDD, DVDD, REFBUFOUT附近放置一个10μF钽电容或陶瓷电容低频去耦和一个0.1μF的X7R/X5R陶瓷电容高频去耦尽可能靠近引脚。基准电压REFIN引脚是精度核心。使用低噪声、高稳定性的基准源如REF5040。基准输出端同样需要紧密的去耦。如果使用内部缓冲输出REFBUFOUT注意其驱动能力。信号走线差分输入线AINP, AINM应等长、等距、紧密耦合远离数字信号线。时钟SCLK、数据SDO/SDI和控制线CS, CONVST也应尽量短并用地线包围。6.2 时序设计与状态机可靠的操作依赖于严格遵循时序图。状态转换明确器件处于RST、ACQ还是CNV状态。CONVST和RST信号是状态机切换的关键。安静时间遵守确保在t_qt_acq和t_d_cnvcap期间无数字信号翻转。这通常意味着在CONVST上升沿启动转换后应等待t_d_cnvcap时间过去再操作CS进行读数在CS上升沿结束读数后应等待t_qt_acq时间过去再发出下一个CONVST上升沿。响应时间管理根据选择的Zone和SCLK频率计算实际的响应时间t_resp确保它满足你的系统实时性要求。6.3 常见问题与排查表现象可能原因排查步骤与解决方案读取数据全为0或固定值1. 电源/基准未正确建立。2. 数字接口通信失败。3. ADC处于复位状态。1. 测量AVDD, DVDD, REFIN电压。2. 用逻辑分析仪抓取CS, SCLK, SDI, SDO波形检查命令是否被正确发送和响应。尝试发送RD_REG命令读取一个已知寄存器如SDO_CNTL。3. 检查RST引脚是否为高电平。数据跳动大噪声高1. 模拟输入噪声或前端驱动不足。2. 电源噪声。3. 数字噪声耦合到模拟部分。4. 违反了安静时间要求。1. 检查前端运放电路确保其噪声和带宽合适。测量输入信号质量。2. 用示波器检查电源纹波加强去耦。3. 检查布局确保模拟数字隔离。在CONVST期间可以尝试让MCU暂停高频操作。4. 检查CONVST和CS的时序确保t_qt_acq和t_d_cnvcap期间无数字活动。使用高速协议时数据错误1. SCLK频率超过接口或主控能力。2. 源同步模式下RVS时钟捕获时序不满足。3. 总线负载过重信号完整性差。1. 降低SCLK频率测试。检查主控器SPI时钟极限。2. 在FPGA中确保使用RVS的上升沿SDR或双边沿DDR来锁存SDO数据并满足建立保持时间。3. 检查SDO走线长度、端接。使用示波器观察信号眼图。无法切换到非默认SPI模式1. 初始配置命令未使用默认SPI-00-S模式发送。2. 配置寄存器写入后未生效。1. 确保在发送第一个WR_REG命令修改SDI_CNTL时主控器处于SPI模式0。2. 发送WR_REG命令后发送一个NOP命令帧再尝试用新协议通信。或读取寄存器验证。菊花链功能不正常1.SDO_CNTL未配置为00h或01h。2. 数据帧长度不足。1. 菊花链仅支持标准SPI模式。检查SDO_CNTL配置。2. 确保读取的数据帧长度大于22个SCLK后续时钟周期才能输出后级器件数据。最后一点个人体会ADS890xB的强大在于其灵活性但这也带来了配置的复杂性。在项目初期我强烈建议先在标准SPI-00-S单SDO模式下把基础功能调通读取正确的转换数据。然后再逐步启用更高级的功能如总线扩宽、EDL最后再挑战源同步模式。每一步都通过读取寄存器或固定测试模式来验证配置是否生效。同时一台好的数字示波器或逻辑分析仪是必不可少的调试伙伴它能让你直观地看到安静时间是否被破坏、数据与时钟的相位关系是否正确从而快速定位问题所在。将这个复杂的器件分解为“模拟前端采样”、“数字接口配置”、“时序交错管理”几个相对独立的模块来理解和调试会让整个过程清晰很多。