国学芯用 发表于 2025-4-19 10:45:19

32G,ADC方面的问题

帮客户问:
我采用ADC采集引脚上电压,先测试了一下
电路上ADC_ref引脚和VCC引脚连接了,测量时根据STC32G datasheet文档上的21.6.4范例程序编程操作,
ADCTIM = 0x3F;
ADCCFG = 0x2F;
ADC_CONTR = 0x8f;
上电后等待了20ms
结果读取BGV是1184(CHIPID7和CHIPID8),测量出的值是977,然后根据公式计算出VCC是4963,但是我用万用表量的VCC是4.88V,即4880这样,不知道这是为什么?是还差哪里需要矫正吗?


根据这个进行的计算


国芯人工智能 发表于 2025-4-19 10:48:00

在解决您提到的AD采集电压不一致的问题时,我们需要从多个角度进行分析和排查。以下是一些可能的原因及相应的解决方案:

1. 参考电压的准确性
问题描述:您提到ADCref引脚和VCC引脚连接在一起,这意味着ADC的参考电压直接来自于VCC。如果VCC本身存在波动或不准确,将直接影响ADC的测量结果。
解决方案:建议使用一个稳定的外部参考电压源(如TL431、REF3030等)来替代VCC作为ADC的参考电压。这样可以提高ADC测量的准确性。

2. ADC配置参数
问题描述:您设置的ADC配置参数(如ADCTIM、ADCCFG、ADCCONTR)可能影响ADC的采样时间和精度。
解决方案:确保ADC的配置参数符合实际应用的需求。例如,ADCTIM = 0x3F表示采样时间为最大值,适用于高阻抗信号源。如果信号源阻抗较低,可以适当减少采样时间以提高采样速率。

3. 电源电压的测量
问题描述:您用万用表测量的VCC值为4880mV,而通过ADC计算得到的VCC值为4963mV,存在约1.7%的误差。
解决方案:这种误差可能来自于万用表本身的精度限制或ADC的线性误差。建议使用更高精度的测量仪器(如6位半数字万用表)来验证VCC的实际值。

4. ADC校准
问题描述:ADC的测量结果可能存在偏移和增益误差,导致测量值与实际值不一致。
解决方案:可以通过以下步骤进行ADC校准:
   1. 偏移校准:在ADC输入端接地,读取ADC输出值,记录为偏移值。
   2. 增益校准:在ADC输入端接入已知精确的参考电压,读取ADC输出值,记录为增益值。
   3. 应用校准公式:使用记录的偏移值和增益值对ADC的测量结果进行校正。

5. 软件计算误差
问题描述:您在软件中使用的计算公式可能存在误差,导致计算结果与实际值不符。
解决方案:确保计算公式正确无误。例如,VCC的计算公式应为:
   \[
   VCC = \frac{BGV{measured}}{BGV{nominal}} \times V{ref}
   \]
   其中,\(BGV{measured}\)是测量得到的带隙电压值,\(BGV{nominal}\)是标称带隙电压值,\(V{ref}\)是参考电压值。

6. 硬件设计
问题描述:PCB布局、电源去耦、信号走线等硬件设计因素可能影响ADC的测量精度。
解决方案:检查PCB设计,确保电源去耦电容(如0.1μF和10μF)靠近芯片引脚,减少电源噪声。同时,优化信号走线,避免高频信号对ADC的干扰。

7. 温度影响
问题描述:环境温度的变化可能影响ADC的测量精度,尤其是带隙电压的稳定性。
解决方案:如果应用环境温度变化较大,建议在软件中加入温度补偿算法,以提高ADC的测量精度。

通过以上分析和排查,您应该能够找到导致ADC测量结果不一致的原因,并采取相应的措施进行校正。如果问题仍未解决,建议进一步详细检查硬件设计和软件实现,或联系芯片厂商获取技术支持。

[本文内容由国芯人工智能辅助生成,仅供参考]

晓飛飛 发表于 2025-4-19 13:18:33

建议给出具体的供电环境说明,不同的电源稳定时间也大不同,建议初始化ADC后,给足充分的电源稳定时间,前几次采集的数据丢掉,并且控制电源纹波减小对ADC采集的影响。

DebugLab 发表于 2025-4-19 13:24:43

BGV:ADC=Vref:4096
内项之积等于外项之积
Vref=BGV*4096/ADC
BGV=1184mV
ADC=977
Vref=1184mV*4096/977
(int)Vref=4963
算法是没有问题的
另一个ADC通道输入1184mV,对比一下和15通道是否一致
页: [1]
查看完整版本: 32G,ADC方面的问题