MPS的SAR ADC,MDC97476 谁用过?我!🙋‍我用过!(附带开源信号分析仪)【上集】

摘要:这篇文章按照芯片解读,硬件调试,数据分析仪三大部分来写。
MPS ADC 的产品我像追星一样地跟
MPS 的 ADC 用过吗? 我用过!<此处一个叉腰表情>

我们这次的主角是这颗 SAR 的,MDC97476


正好在吃葡萄,放上去看看大小
超小封装,引脚就6个

当然也有严谨一点的游标卡尺
正好 DHO804 有个简易的电压表:

看看背面

有颗 DAC,我对这个设计还比较疑惑,后面问了 MPS 的 FAE 解惑了,不得不说,速度和质量是真的高。
因为我看原理图的时候发现了很多的:


也就是说,为了兼容不同的电平:

MDC97476 的 IO 电平追踪 VDD 电源电压,即:

若 VDD = 5V → 输出 IO 电平为 5V 兼容;

若 VDD = 3.3V → IO 电平为 3.3V;

多数 MCU/FPGA IO 电平 仅支持最高 3.3V ,若 VDD 配成 5V,直连会烧坏外部芯片 IO

EVB 板上添加了 电平转换器(Level Shifter 来适配这个问题:

信号名(带 _F) 含义
ADC_CSn_F 原始 ADC 输出信号 (高电平,跟随 VDD)
ADC_CSn_L_F 经电平转换后的信号 (恒定 3.3V 兼容)

“_L_F” 后缀中的 “L” 表示 Level shifted 的版本。

那上面的 DAC 是什么意思?


爱上MPS 的片子就像呼吸一样简单,服务就是好。
继续说片子

架构:SAR (Successive Approximation Register

接口:三线 SPI 兼容

电源电压:2.7V-5.2V

工作温度:-40 到125

封装:6-pin TSOT-23

参考电压:内部参考 = VDD


芯片内部模块包括:

采样保持电路( T/H

电容阵列 DAC (Charge Redistribution DAC

SAR 控制器

比较器

SPI 接口输出

这个芯片使用起来很简单,不需要寄存器什么的,直接就是三线 SPI


时序:

CS 拉低:开始转换 + SDATA 输出低

13 个 SCLK 上升沿后:进入采样状态

第 16 个 SCLK 下降沿:SDATA 输出完成,进入三态

SDATA 输出格式:前导 4 个零,后接 N 位数据(N = 12/10/8),剩余位补 0 或进入高阻态

根据时序可以写出来:

// GPIO 控制 CS 低电平,开始转换
HAL_GPIO_WritePin(GPIOx, CS_Pin, GPIO_PIN_RESET);

// SPI 接收 2 字节(16 位)
uint8_t adc_buf[2] = {0};
HAL_SPI_Receive(&hspi1, adc_buf, 2, HAL_MAX_DELAY);

// GPIO 拉高 CS,结束通信
HAL_GPIO_WritePin(GPIOx, CS_Pin, GPIO_PIN_SET);

// 解析数据
uint16_t raw_code = ((adc_buf[0] << 8) | adc_buf[1]) >> 4; // 只取中间12位

上面的时序不好看,可以直接仿真一个:


CS (片选) :从高拉低启动转换,持续低电平直到数据传输完成

SCLK (串行时钟) :模拟连续 16 个 SCLK(20MHz);占空比 50%,芯片是下降沿吐数据,MCU测是上升沿还是下降沿要看MCU引脚处CLOCK 和 data的相位关系,确保setup/hold time 满足要求。

SDATA (串行输出) :以 0000 + D11…D0 顺序输出,在 SCLK 的下降沿前稳定 数据

静态性能

参数 典型值
INL ±0.5 LSB
DNL ±0.4 LSB
偏移误差 ±0.7 LSB
增益误差 ±3.2 LSB

动态参数

ADC(MDC97476/7/8)的动态参数按官方手册汇总(统一测试条件:VDD=3.3 V,fSCLK=20 MHz,采样率 fSAMPLE=1 MSPS,正弦输入 fIN=120 kHz,TA=25 °C):

MDC97476 (12-bit

SNR:71–72.2 dBFS;SINAD:68–71.9 dBFS;THD:−84…−78 dB;SFDR:81–87 dB。

典型图示(1 MSPS)读数:SNR 72.26 dB、SINAD 72.06 dB、THD −84.67 dB、SFDR 87.9 dB、ENOB 11.68 bits。

补充说明

以上指标均在手册指定的条件下测得(VDD=3.3 V、fSCLK=20 MHz、1 MSPS、fIN=120 kHz),手册相应页脚注已标明测试条件;ENOB 可由公式 ENOB ≈ (SINAD−1.76)/6.02 验证;例如 12 位器件典型 SINAD≈72.06 dB 对应 ENOB≈11.7 bit,与典型曲线标注一致。

厂商测试时一般不是满量程输入去测,所以满量程测试时,ENOB还会更高。

引脚功能

引脚 名称 类型 功能说明
1 VDD 电源 正电源输入,2.7v-5.2v
2 GND 接地
3 VIN 输入 模拟输入,0V 至 VDD
4 SCLK 输入 SPI 时钟,最大 20 MHz
5 SDATA 输出 SPI 输出数据(下降沿更新)
6 CS 输入 SPI 片选,下降沿启动转换

工作模式

Normal Mode

CS 保持低电平 > 10 个 SCLK 下降沿;可连续采样,保持最大吞吐率(1 MSPS)

SCLK 周期:50 ns,对应最高 20 MHz

SCLK 最大:20 MHz,对应最大采样率:1 MSPS,SPI要分频的,也就是 APB 上面要 40M

Sleep Mode

节能模式,适合低频采样;CS 在第二个和第10个clock期间拉高进入sleep → 进入 Sleep

输出格式

芯片型号 数据格式
MDC97476 4 个前导零 + 12 位有效数据 + 高阻
MDC97477 4 个前导零 + 10 位有效 + 2 个 0
MDC97478 4 个前导零 + 8 位有效 + 4 个 0

指到的人立即回答 :index_pointing_at_the_viewer:为什么要选一个参数和MCU内置的ADC呐?

一般的单片机内置 ADC 速度较慢,通常标称值可以到 1MSPS 以内,但是受单片机处理多任务时的资源限制,其实际连续采样速率远小于标称值。对于低速信号采集够用,但如果需要处理高速信号,如无线通信、音频或视频数据,会无法满足系统采样速率要求。

外部独立 ADC 通常可以达到更高的采样率,如 1MSPS 或以上,总之就是很灵活。

其次由于 ADC 内置在单片机内部,其抗干扰能力通常会受到单片机其他模块的影响,如 CPU、PWM、电源模块等。这些模块的切换和操作可能会在 ADC 工作时引入内部噪声干扰,且无法消除, 显著降低 ADC 的有效位数 (ENOB)。

外部 ADC由于其设计,制造过程更为专业,通常在芯片内部模拟和数字接口部分做了更好的隔离,抗干扰能力更强,特别是在恶劣外部干扰环境下工作时,独立 ADC 的性能优势非常明显。

好了我们继续学习:


这张图是 Figure 5,表示 ADC 正处于“保持”阶段,即采样完成,进入转换。

元件 说明
V_IN 模拟输入电压,来自外部信号源
SW1 控制开关,用于连接输入或断开后接地
SW2 控制开关,用于将采样电容负端接到 VDD/2
Sampling Capacitor 采样电容,负责保持输入电压信息(电荷)
Comparator 比较采样电压和 DAC 电压是否相等
Capacitive DAC 电容阵列 DAC,逐步逼近采样值
SAR + Control Logic SAR 逻辑控制器,逐位控制 DAC 设置、判断电压是否逼近输入值

SW1 接地 :使采样电容的一端(靠近 V_IN 端)断开输入,接地;

SW2 断开 :此时 VDD/2 未连接进来;

电容两端保持电荷 → 等价于“维持电压”,此时:比较器输入端电压 = 采样电容维持的电压;控制逻辑开始逐步调整 DAC 输出,使之与采样电压匹配。

逐次逼近转换典型步骤如下:

  1. 采样阶段(Track

SW1 导通 → 电容两端电压跟随 V_IN;SW2 接 VDD/2,提供偏置;控制逻辑未工作。

  1. 保持阶段( Hold (如图):SW1 接地、SW2 断开,电容电荷冻结;比较器与 DAC 开始逼近;DAC 每次切换一位 → 控制电容阵列改变输出电压;比较器判断 DAC 输出与保持电压的大小关系;最终得到数字输出(SAR)。

为什么用 VDD/2?

SAR ADC 通常为单电源供电;中点电压 VDD/2 提供“零点参考”,DAC 输出是围绕它正负跳变;这有助于提升共模范围和线性度。

电容分布式 DAC 的优点:低功耗;可实现非常小芯片面积;快速转换速度;静态状态下无电流消耗。


图中展示了 ADC 的 等效输入建模电路 ,用于理解采样瞬间信号的加载情况。

元件 描述
D_ESD1, D_ESD2 ESD 防护二极管,钳位输入在 GND−300mV 与 VDD+300mV 之间
C_PIN = 2pF 封装与管脚等效输入电容
SW1 Track-and-Hold 控制开关
R_ON = 125Ω Track/Hold 开关闭合后的等效导通电阻
C_SAMPLING = 14pF ADC 的内部采样保持电容,决定采样动态响应
→ Comparator 比较器输入端,与 DAC 输出比较

上面这个小电容有些优点:

对 ADC 模拟带宽的提升

输入电容越小 → RC 充放电时间常数越小 模拟带宽越高

输入端等效电路是 信号源阻抗 R_source 和 C_PIN 构成低通滤波器,带宽大约为

当 C_PIN 从 10 pF 降到 2 pF 时,带宽提升 5 ,可以更好地响应快速变化的信号;对高速 ADC(特别是采样频率在 MHz 级)很重要,否则高频分量会被输入 RC 滤掉。

降低采样瞬间的kickback 电压

SAR ADC 在采样瞬间,SW1 闭合 → C_sampling**(14 pF)瞬时充电**,会把输入信号拉动一个小幅度的电压跳变,这就是 kickback

C_PIN 越大,这个跳变幅度越大,因为它与 C_sampling 之间存在电荷共享;小的 C_PIN 意味着前级驱动器不需要快速补偿大电流,减轻前级运放带宽与驱动能力的要求,尤其在多通道复用时好处更明显。

静态功耗更低

小电容在静态时几乎没有额外漏电消耗,结合电容分布式 DAC 架构的 SAR ADC,在静态状态下功耗非常低。

设计上的权衡

虽然小 C_PIN 带来高带宽与低 kickback,但它也减少了对高频干扰的自然滤波作用,可能增加 EMI/噪声的进入机会,因此 PCB 端仍需合适的 RC 滤波器或前端缓冲;对高阻抗信号源来说,小电容意味着采样瞬间电压会被拉动得更明显,所以通常搭配低输出阻抗的缓冲运放。

仿真是数据比较夸张的,为了好看:


这个仿真直观看出了小输入电容的好处: :mechanical_arm:

小 C_PIN(2 pF)

带宽高(≈ 796 MHz);Kickback 电压小(≈ 125 mV);恢复速度快,对前级运放带宽要求低

大 C_PIN(10 pF)

带宽低(≈ 159 MHz);Kickback 电压大(≈ 417 mV);恢复慢,对前级运放瞬态响应要求高

这解释了为什么高速 ADC 会尽量把 C_PIN 设计得很小,从而减少前端驱动负担并提升高频性能。

Track Phase (采样)
SW1 闭合,VIN → C_SAMPLING;信号通过 R_ON 给 C_SAMPLING 充电;形成 RC 延迟 τ = R_ON × (C_PIN + C_SAMPLING)
影响采样带宽。

Hold Phase (保持)
SW1 断开,电容保持采样电压;SAR 开始逐位逼近。
SNR / THD / 谐波失真 敏感的应用中 ,建议注意以下事项:

因为存在 R_ON = 125Ω 和 C_TOTAL ≈ 16pF,所以:输入源阻抗必须远低于 1kΩ,最好 < 100Ω;否则 RC 充电不完全,采样误差增大。
等效带宽限制:


前级:使用低阻抗缓冲驱动器,如:运放缓冲器。


上图展示了 ADC 前端输入通路中由开关电阻 R_ON=125 Ω 和采样电容 C=14 “pF” 组成的一阶 RC 低通滤波器的幅频响应:
截止频率(-3 dB 点)为约 90.95 MHz,见红色虚线标注;在高于该频率的信号将显著衰减,这有助于抑制高频噪声和混叠(aliasing)信号。

(接下来要开始调试了,喘口气再写)