你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

STM32H743 的ADC线性校准问题

[复制链接]
sistao 提问时间:2025-12-17 10:15 / 未解决

最近在评估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.

收藏 评论2 发布时间:2025-12-17 10:15

举报

2个回答
fafa1 回答时间:2 小时前

STM32H743 的线性校准(CAL2)在绝大多数量产批次里确实“写了系数 ≠ 立刻看到 ENOB 提升”,这是目前论坛和实测里被反复验证的现象,原因可以归结为 3 点:

  1. 线性校准只能修正 INL 曲线里“可建模”的那一段 ,而 H743 的 INL 典型值已经做到 ±1 LSB 量级

    ,再修也只剩 0.1~0.2 LSB 的量,换算成 ENOB 不到 0.05 bit,自然被噪声淹没。

  2. CAL2 系数只在 “差分模式” 下生效;如果你接的是单端信号,或者差分负端没有精确共模,校准路径实际被旁路。

  3. 校准完必须 重新触发一次 ADEN=1 的转换序列 ,否则系数仍躺在 CALFACT2 里而未被采样开关真正加载 。

快速验证它“到底有没有干活”的办法:

  • 用慢速三角波(10 Hz 左右,INL 测试经典做法)做码密度直方图: – 先跑 65536 点,不开 CAL2,记下 INL_1。 – 再跑 65536 点,开启 CAL2 并软复位 ADC 后重新采样,得 INL_2。 – 如果 |INL_2| 比 |INL_1| 小 0.3 LSB 以上,说明线性校准已生效;差别 <0.1 LSB 就基本算“没肉眼可见收益”。
  • 或者直接把 ADC 配置成 差分输入、16× 硬件过采样、右对齐 16 bit 模式,用精密源给 0.8 V 和 2.2 V 两个 DC 电平,各采 1 k 点算均值: – 不开 CAL2 记 V1、V2; – 开 CAL2 后重新上电再测得 V1′、V2′; – 若两点误差都从几个 mV 掉到 1 mV 以内,也能确认线性段被修正。

一句话:H743 的线性校准 确实写了寄存器就生效 ,只是它只能把已经很好的 INL 再修 0.1~0.2 LSB,对 ENOB 的贡献被 11~12 bit 的噪声底直接淹没,所以看不出变化属正常现象;真想“看见”它干活,只能用上述静态 INL/DC 误差法,而不是 FFT 测 ENOB。

butterflyspring 回答时间:1 小时前
从一些资料上看,ADC的线性和偏移误差与有效位【ENOB】没有直接的关系。


ADC  偏移误差.PNG ADC 微分线性误差.PNG ADC 积分线性误差.PNG ADC ENOB 有效位数.PNG

所属标签

相似问题

官网相关资源

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
st-img 微信公众号
st-img 手机版