最近有客户在使用 STM32G0B1 进行产品开发的时候,使用到了 ADC 模块通道 0 进行电压检测,在产品生产过程中,测试发现某些样机 ADC 采样到的数据与实际不符合,误差比较大,样品除了 ADC 采样数据误差较大,其它功能都正常,客户进行了交叉测试,发现问题是随着 MCU 走,因此排除了板子的问题,同时我方对客户的原理图以及软件部分代码进行了复查,也没有发现问题。下图是客户产品的部分电路图。
因此客户怀疑这些样片有缺陷,申请了 FA 检测,最终的测试报告表示样片正常,但是客户需要一个解释,为什么某些样片会存在 ADC 采样数据偏差较大。
通过客户反馈信息来看,排除了软件代码的问题,同时也排除了电路原理图的问题,而 FA 测试也排除了芯片本身的问题,Division 在客户返回的样品上进行应用测试,得出的结论是,ADC 在参考电压 3.3V 的情况下,ADC 转换得到的数据是符合要求的,如下图所示。
▲
图2. ADC Conversion Data with Ref 3.3V
而客户的板子,ADC 参考电压为 1.8V,重新进行测试,最终发现 ADC 转换的数据偏差在 20mV 左右,结果如下。
▲
图3. ADC Conversion Data with Ref 1.8V
根据上面的结果,实际转换后的数据与实际输入的数据相差 20mV 左右,ADC 分辨率
为 12bit,所以误差在 50LSB 左右,这个远远超出了数据手册中定义的误差范围。
客户根据数据手册和实际数据比较,所以认为 ADC 不符合要求,其实在 STM32G0 的勘误表 ES0548 上,对于 ADC 还有这样的说明。
按照勘误表上的描述,当 STM32G0B1 ADC 参考电压小于 3.0V,其误差最大在
50LSB,而客户板子 ADC 的参考电压为 1.8V,所以最终测试出来的误差接近 50LSB。针对这个缺陷,勘误表给出了相应补救方案,但是对于客户已量产的板子而言,补救方案并不适用。
STM32G0B1 ADC 的局限性,导致了这个问题,如果使用 STM32G0 系列 ADC,需要得到精确的采样数据,注意 ADC 的参考电压不得小于 3.0V。
在设计之前,强烈建议客户除了阅读参考手册,数据手册等资料外,阅读芯片勘误表也是极为重要的,这样可以规避芯片本身已知的一些局限。