找回密码
 立即注册
查看: 586|回复: 8

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

[复制链接]

2

主题

10

回帖

40

积分

新手上路

积分
40
发表于 2024-9-30 11:43:01 | 显示全部楼层 |阅读模式
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

回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-12 09:01:08
已绑定手机

77

主题

4900

回帖

8564

积分

超级版主

DebugLab

积分
8564
发表于 2024-9-30 12:04:20 | 显示全部楼层
建议先学习一下实验箱例程
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:468
  • 最近打卡:2025-05-12 07:36:42
已绑定手机
已实名认证

110

主题

2250

回帖

5566

积分

版主

积分
5566
发表于 2024-9-30 12:21:14 | 显示全部楼层
程序上的问题,建议先使用例程进行修改验证
成功后再进行移植,出现问题后可以对应到例程一句一句查找问题。
此时如果有问题可以再来论坛咨询
直接贴代码,很多时候可能不一定是代码的原因,这样仅凭一大段代码也不好找问题
回复 支持 反对

使用道具 举报 送花

2

主题

10

回帖

40

积分

新手上路

积分
40
发表于 2024-9-30 14:55:04 | 显示全部楼层
王*** 发表于 2024-9-30 12:21
程序上的问题,建议先使用例程进行修改验证
成功后再进行移植,出现问题后可以对应到例程一句一句查找问题 ...

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

点评

因为8H8K64U有独立的VREF引脚,此引脚不能接地不能悬空,必须接合适的参考电压源,比如VCC或者2.5V基准电压源。  详情 回复 发表于 2024-9-30 15:38
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:426
  • 最近打卡:2025-05-12 21:51:09
已绑定手机

35

主题

2118

回帖

2289

积分

荣誉版主

积分
2289
发表于 2024-9-30 15:38:25 | 显示全部楼层
zty35*** 发表于 2024-9-30 14:55
我是在8H1K 和3K上都测试过是正常的所以来问下这个款芯片是需要什么特殊的操作 ...

因为8H8K64U有独立的VREF引脚,此引脚不能接地不能悬空,必须接合适的参考电压源,比如VCC或者2.5V基准电压源。
睁开眼睛做场梦~~~
回复 支持 反对

使用道具 举报 送花

2

主题

10

回帖

40

积分

新手上路

积分
40
发表于 2024-9-30 16:14:44 | 显示全部楼层
晓*** 发表于 2024-9-30 15:38
因为8H8K64U有独立的VREF引脚,此引脚不能接地不能悬空,必须接合适的参考电压源,比如VCC或者2.5V基准电 ...

   

连了的
回复 支持 反对

使用道具 举报 送花

2

主题

10

回帖

40

积分

新手上路

积分
40
发表于 2024-9-30 16:38:55 | 显示全部楼层
找到原因了,很无语。
8H1K28,8H3k64S4 的芯片
用ADC_CONTR&=~0X80; 这个语句关掉ADC后 ADC_RES ADC_RESL里面的数据还是存在的  
但是STC8H8K64U 这个芯片关掉ADC后,ADC_RES ADC_RESL里面的数据就没有了 。
所以要先读走数据再关ADC
这芯片做的有点随意啊。

点评

可能是有DMA的型号时序逻辑机制不一样  详情 回复 发表于 2024-9-30 21:17
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:434
  • 最近打卡:2025-05-12 09:01:08
已绑定手机

77

主题

4900

回帖

8564

积分

超级版主

DebugLab

积分
8564
发表于 2024-9-30 21:17:42 | 显示全部楼层
zty35*** 发表于 2024-9-30 16:38
找到原因了,很无语。8H1K 3k的芯片 用ADC_CONTR&=~0X80;这个语句关掉ADC后 ADC_RES ADC_RESL里面的数据还 ...

可能是有DMA的型号时序逻辑机制不一样
DebugLab
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:433
  • 最近打卡:2025-05-12 00:02:00
已绑定手机

19

主题

3198

回帖

4976

积分

论坛元老

积分
4976
发表于 2024-10-1 11:12:03 | 显示全部楼层
zty35*** 发表于 2024-9-30 16:38
找到原因了,很无语。
8H1K28,8H3k64S4 的芯片
用ADC_CONTR&=~0X80; 这个语句关掉ADC后 ADC_RES ADC_RESL ...

关闭ADC后ADC寄存器也清零了,还会这样啊
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-5-12 23:51 , Processed in 0.155145 second(s), 111 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表