zty3512321 发表于 2024-9-30 11:43:01

Ai8H8K64U的ADC无法采集到数据 | 已解决,关ADC电源前将数据先读出

void ADC_init(void)
{
      P1M0 &=~0x10;
      P1M1 |=0x10;                                                                //P1.4high impendance

      P1M0 &=~0x20;
      P1M1 |=0x20;                                                                //P1.5high impendance

      P_SW2 |=0X80;
      ADCTIM=0X3F; //ADC采样时间
      P_SW2 &=0X7F;
      ADCCFG =0X0F; //ADC采样值存储方式
}
void ADC0_R(void)
{
      
      ADC_Value=0;

      ADC_CONTR = 0X85;//开ADC通道 p1.5
      delay_ms(1);
      ADC_CONTR |= 0x40;                      //启动AD转换
      _nop_();
    _nop_();

                while(!(ADC_CONTR&0X20));//adc_flag
                ADC_CONTR&=~0X85;//关ADC
                ADC_CONTR&=~0X20;
                ADC_Value=(ADC_RES<<8)|ADC_RESL;
                ADC_Value=ADC_Value>>4;      
                UART1_send(0X54);
                UART1_send(ADC_RESL);
                UART1_send(ADC_RES);

}
程序如上 串口发送出来的一直的 54 00 00 电压已经接了2.5V

DebugLab 发表于 2024-9-30 12:04:20

建议先学习一下实验箱例程

王昱顺 发表于 2024-9-30 12:21:14

程序上的问题,建议先使用例程进行修改验证
成功后再进行移植,出现问题后可以对应到例程一句一句查找问题。
此时如果有问题可以再来论坛咨询
直接贴代码,很多时候可能不一定是代码的原因,这样仅凭一大段代码也不好找问题

zty3512321 发表于 2024-9-30 14:55:04

王昱顺 发表于 2024-9-30 12:21
程序上的问题,建议先使用例程进行修改验证
成功后再进行移植,出现问题后可以对应到例程一句一句查找问题 ...

我是在8H1K 和3K上都测试过是正常的所以来问下这个款芯片是需要什么特殊的操作

晓飛飛 发表于 2024-9-30 15:38:25

zty3512321 发表于 2024-9-30 14:55
我是在8H1K 和3K上都测试过是正常的所以来问下这个款芯片是需要什么特殊的操作 ...

因为8H8K64U有独立的VREF引脚,此引脚不能接地不能悬空,必须接合适的参考电压源,比如VCC或者2.5V基准电压源。

zty3512321 发表于 2024-9-30 16:14:44

晓飛飛 发表于 2024-9-30 15:38
因为8H8K64U有独立的VREF引脚,此引脚不能接地不能悬空,必须接合适的参考电压源,比如VCC或者2.5V基准电 ...

‪C:\Users\zhouty\Desktop\企业微信截图_1727683976837.png   

连了的

zty3512321 发表于 2024-9-30 16:38:55

找到原因了,很无语。
8H1K28,8H3k64S4 的芯片
用ADC_CONTR&=~0X80; 这个语句关掉ADC后 ADC_RES ADC_RESL里面的数据还是存在的
但是STC8H8K64U 这个芯片关掉ADC后,ADC_RES ADC_RESL里面的数据就没有了 。
所以要先读走数据后再关ADC。
这芯片做的有点随意啊。

DebugLab 发表于 2024-9-30 21:17:42

zty3512321 发表于 2024-9-30 16:38
找到原因了,很无语。8H1K 3k的芯片 用ADC_CONTR&=~0X80;这个语句关掉ADC后 ADC_RES ADC_RESL里面的数据还 ...

可能是有DMA的型号时序逻辑机制不一样

soma 发表于 2024-10-1 11:12:03

zty3512321 发表于 2024-9-30 16:38
找到原因了,很无语。
8H1K28,8H3k64S4 的芯片
用ADC_CONTR&=~0X80; 这个语句关掉ADC后 ADC_RES ADC_RESL ...

关闭ADC后ADC寄存器也清零了,还会这样啊
页: [1]
查看完整版本: Ai8H8K64U的ADC无法采集到数据 | 已解决,关ADC电源前将数据先读出