本帖最后由 dffzh 于 2025-9-22 08:58 编辑
@21小跑堂
很多高精度的24位以上分辨率的ADC芯片(比如TI的ADS1262,ADI的AD7191,HCT的HCT6805等等),其性能参数中的有效位数(ENOB,Effective Number of Bits)和无噪声位数(NFB,Noise Free Bits)是衡量ADC芯片的实际分辨率的重要指标,两者的实际含义和侧重点也是不一样的,我们详细说说。 1.ENOB(Effective Number of Bits,有效位数) ENOB表示ADC芯片在实际工作条件下(包含噪声和非线性失真)能够提供的有效分辨率。由于实际ADC存在噪声、谐波失真和非线性误差等因素,其性能会低于理想的理论位数(也就是数据手册标称的分辨率,比如32位)。 ENOB通常通过信噪比(SNR,Signal-to-Noise Ratio)计算得出,比如: ENOB = (SNR-1.68)/ 6.00; 其中: SNR是信号功率与噪声功率的比值(单位dB); 1.68 dB是理想ADC的量化噪声理论值; 6.00 dB对应1个有效位的分辨率提升。 比如TI的ADS1262芯片,查看数据手册,其ENOB通常与采样率,滤波器模式和增益配置有关,如下图来源于数据手册: 一般情况下,在高采样率或更宽带宽下,由于输入噪声增加,ENOB往往会降低。 再比如HCT的HCT6805芯片: 综上,ENOB反映了ADC的实际可用分辨率。例如,若ENOB=19位,意味着ADC的实际精度相当于一个理想19位ADC的性能,在使用的时候,代码上就可以对采集的ADC数据进行预处理再计算实际的输入电压: - valid_data_NFB = temp_average &0xFFFFFE000;
- actual_vol_NFB=valid_data_NFB *INTERNAL_ADC_REF_VOLTAGE / (ADC1_FSR * ADC1_PGA_GAIN);
2. NFB(Noise Free Bits,无噪声位数) NFB表示ADC输出码中完全不受噪声波动影响的位数,它通常通过峰峰值噪声(Noise Peak-to-Peak)进行计算,比如: NFB = log2(FSR / Noisep-p); 其中: FSR,即Full Scale Range,是ADC芯片的满量程输入范围(如±2.5V)。 Noisep-p是在特定条件下测得的峰峰值噪声(通常通过统计或观察输出码的波动范围获得)。 比如ADS1262芯片的NFB,在数据手册中一般是直接给出相应寄存器配置下的NFB值,例如如果峰峰值噪声为1uV,满量程为5V,则: NFB = log2(5 / 0.000001),大概是22.3位。 在数据手册上其实也可以查到噪声电压值,如下图所示: 综上,NFB表示输出码中稳定不变的部分,是系统能够可靠分辨的最小信号变化的指标,它通常比ENOB更低(因为ENOB包含统计噪声,而NFB是考虑最坏情况下的峰峰值噪声)。
以下通过表格列出ENOB和EFB的关键区别: 所以,对应这类高精度ADC芯片的应用,给出一些参考建议: 高精度直流测量(如称重、温度检测):关注NFB,确保微小信号不被噪声淹没; 动态信号采集(如振动分析):关注ENOB和SNR,优化信号带宽和滤波设置; 数据手册查阅:查看不同采样率、滤波器配置下的ENOB和噪声曲线,以权衡速度与精度。 |