lg_917 发表于 2025-8-2 11:41:53

Ai8H08的AD转换有千分之1不正常问题?

Ai8H08, 使用超过两年了,至少30多万个芯片在外使用。但是每批新做的板子,在厂里测试时发现大概有千分之1的概率出现AD转换不正常。得到的AD值不对,与正常值相差很大。如AD电压在2.3V左右,正常检测到的值大概128左右(取高8位)。 个别CPU检测值只有20左右。 更换CPU正常。我用官方给的AD转换例程,得到的AD值一样的不正常,硬件电路肯定没问题,已经有30多万的板子在外使用超过1年,没反馈问题。都时新生成的板子出现的问题。 电路板上除了AD转换,就串口通信功能。定时器用了0,其他都没用。 各位大神有遇到类似问题吗?

国芯人工智能 发表于 2025-8-2 11:43:00

尊敬的用户,您好:

感谢您对STC8H08系列单片机的关注与反馈。关于您提到的AD转换存在约千分之一异常的问题,我们高度重视,并已组织技术团队进行初步分析与排查。以下为基于现有信息的专业分析及建议:

首先,从您的描述来看,该问题仅出现在新生产的板子中,而已有30多万片芯片在实际应用中运行超过一年,未出现类似反馈,这表明问题可能并非源于芯片本身的设计缺陷或长期使用导致的性能衰减,而是可能与生产批次、测试环境、PCB设计或软件配置等相关。

一、可能原因分析

1. 生产批次差异
   STC8H08系列虽为成熟产品,但不同批次的芯片在制造过程中可能存在细微工艺差异,如ADC参考电压稳定性、内部校准误差等。虽然官方出厂前会进行严格测试,但在极少数情况下仍可能因工艺波动导致个别芯片的AD转换精度偏离标准值。

2. AD转换初始化配置不当
   您提到使用的是“官方给的AD转换例程”,建议进一步核查是否严格按照数据手册中的配置要求进行初始化设置。例如:
ADC时钟源是否稳定(建议使用内部RC振荡器或外部晶振);
ADC采样时间是否合理(过短可能导致采样不充分);
是否启用ADC校准功能(部分型号支持软件校准);
AD转换通道选择是否正确,是否存在误选通道的情况。

3. 电源噪声干扰
   虽然您确认硬件电路无问题,但若电源设计不合理,如去耦电容不足、地线布局不良等,仍可能引入噪声,影响ADC的准确性。建议检查电源纹波和地线回路,必要时增加滤波电容或优化PCB布线。

4. 软件逻辑问题
   若在读取AD结果时未进行适当的延时或等待转换完成,可能导致读取到错误的数据。建议在调用ADC转换函数后加入适当延时或轮询判断转换状态,确保读取的数据准确。

5. PCB布局与信号完整性
   尽管您未提及具体电路设计,但AD转换电路对PCB布局要求较高。建议检查以下方面:
AD输入引脚是否远离高频信号线或大电流路径;
是否采用屏蔽措施防止电磁干扰;
AD参考电压是否独立供电并经过滤波处理。

二、建议排查步骤

1. 复现问题
   在实验室环境下,尝试使用相同批次的芯片进行AD转换测试,观察是否同样出现异常。同时记录测试条件(如温度、电压、负载等),以排除环境因素影响。

2. 对比测试
   使用同一块PCB板,分别替换为不同批次的STC8H08芯片,观察AD转换结果是否一致。若仅特定批次出现问题,则可进一步定位问题来源。

3. 检查AD初始化代码
   请提供具体的AD初始化代码,以便我们协助检查是否存在配置错误或遗漏。

4. 电源与地线优化
   建议对电源系统进行测量,检查是否有明显的噪声或波动。同时优化地线布局,减少共模干扰。

5. 联系技术支持
   如上述排查仍未找到明确原因,建议通过官方渠道提交详细测试报告和技术文档,我们将安排专人协助分析。

三、结语

STC8H08系列作为高性价比的8位MCU,广泛应用于工业控制、家电、智能仪表等领域。其AD转换功能在多数应用场景下表现稳定可靠。针对您提出的问题,我们建议从生产批次、软件配置、电源设计等多方面进行系统性排查。若您愿意,我们可提供更详细的调试工具或测试方案,帮助您快速定位问题根源。

如有其他技术疑问,欢迎随时咨询。感谢您对国芯人工智能的支持!

—— 国芯人工智能技术团队

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

lg_917 发表于 2025-8-2 13:33:03

       P1n_pure_input(GPIO_Pin_0 | GPIO_Pin_1);
      P_SW2 |= 0x80;
         
      ADCTIM = 0x3f;//设置 ADC 内部时序,ADC采样时间建议设最大值
      ADCCFG = 0x0F; //设置 ADC 时钟为系统时钟/2/16 左对齐
      ADC_CONTR = 0x81; //使能 ADC 模块
      EADC = 1;//使能AD中断
      ADC_CONTR |= 0x40;//继续AD转换
      EA = 1;
//============
void ADC_Isr() interrupt 5
{
      vu8 tmp = 0;
      
      ADC_CONTR &= ~0x20;      //清中断标记
      tmp = ADC_RES;
}

上面时AD转换的设置,就在中断里读取高8位,通过串口显示,不好芯片一直不好,怎么改都不行,换了芯片就好了,相同板子和程序使用2年多了,至少30多万片在用。

神农鼎 发表于 2025-8-2 14:28:57







DebugLab 发表于 2025-8-2 22:03:07

注意回流焊烘烤和防静电这些批量制造问题
出厂是100%全测的
(本人有幸现场参观过)

vb2002 发表于 前天 17:39

好奇问下,啥项目
页: [1]
查看完整版本: Ai8H08的AD转换有千分之1不正常问题?