|
最近在评估STM32H743的ADC性能,在测试有效位(ENOB)的时候发现,开启和关闭ADC的线性校准对性能测试的结果并没有影响。有没有遇到过这个问题的大神,请求解答一下,H743的ADC的线性校准是否起作用,该怎么确认有没有起作用? 在开启和关闭ADC线性校准的时候调用了下面一句话: if (HAL_ADCEx_Calibration_Start(&AdcHandle, ADC_CALIB_OFFSET_LINEARITY, ADC_DIFFERENTIAL_ENDED) != HAL_OK) { Error_Handler(); } 可以确认的是,开启线性校准后,ADC_CALFACT2寄存器是有校准码的;如果不开校准,该寄存器值读出来是全0. |
STM32H743 HSE 48MHz晶振无法实现
STM32H743 配置USBOTG 使用U盘几周后 stm32无法识别usb
STM32H7A3RGT6 ADC 8位采样速度只能达到3.5MSPS达不到数据手册上的7MSPS ?
选型,实现USB转2路CAN功能,目前看到STM32F407和STM32H750都有2路CAN,都能实现功能吗?
关于硬件ECC
LPTIM5的事件Lptim5_ait作为14号Trigger input输入到DMAMUX2 Request generator触发BDMA未生成中断问题
关于NAND FLASH加LittleFS的方案
DMAMUX 使用内部外设Request Event(不使用TIM12和LPTIM)
STM32F103C8T6是否支持TIM3的PWM边沿触发AD采集
【经验分享】STM32H7 DMA+UART不定长接收实战:解决缓存溢出与数据错位问题
微信公众号
手机版
STM32H743 的线性校准(CAL2)在绝大多数量产批次里确实“写了系数 ≠ 立刻看到 ENOB 提升”,这是目前论坛和实测里被反复验证的现象,原因可以归结为 3 点:
线性校准只能修正 INL 曲线里“可建模”的那一段 ,而 H743 的 INL 典型值已经做到 ±1 LSB 量级
,再修也只剩 0.1~0.2 LSB 的量,换算成 ENOB 不到 0.05 bit,自然被噪声淹没。
CAL2 系数只在 “差分模式” 下生效;如果你接的是单端信号,或者差分负端没有精确共模,校准路径实际被旁路。
校准完必须 重新触发一次 ADEN=1 的转换序列 ,否则系数仍躺在 CALFACT2 里而未被采样开关真正加载 。
快速验证它“到底有没有干活”的办法:
一句话:H743 的线性校准 确实写了寄存器就生效 ,只是它只能把已经很好的 INL 再修 0.1~0.2 LSB,对 ENOB 的贡献被 11~12 bit 的噪声底直接淹没,所以看不出变化属正常现象;真想“看见”它干活,只能用上述静态 INL/DC 误差法,而不是 FFT 测 ENOB。
[md]非常感谢您的回复。
有个问题想跟您请教一下,您提到在单端模式下校准电路被旁路,是不是可以说明在单端模式下无法进行线性校准?还是说在单端模式下线性校准一直被使能,无法关闭?
感谢您的解答。我在测试ENOB的过程中,信号是162Hz的正弦波,峰峰值3V,偏置1.65V。H743的VREF是3.3V,16bitADC工作频率25MHz,采样时间为1.5个ADC时钟周期,采用单次触发,触发频率是1MHz。请问我这样测试ENOB的方法是否可行?
ENOB 反映的是 ADC 在噪声和失真条件下的有效分辨率;
校准负责消除偏移和增益等系统误差,使输出更贴近真实输入;
而决定 ENOB 的关键在于参考电压品质、采样时间配置、前端驱动能力、电源/地设计等;