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
建议先学习一下实验箱例程 程序上的问题,建议先使用例程进行修改验证
成功后再进行移植,出现问题后可以对应到例程一句一句查找问题。
此时如果有问题可以再来论坛咨询
直接贴代码,很多时候可能不一定是代码的原因,这样仅凭一大段代码也不好找问题 王昱顺 发表于 2024-9-30 12:21
程序上的问题,建议先使用例程进行修改验证
成功后再进行移植,出现问题后可以对应到例程一句一句查找问题 ...
我是在8H1K 和3K上都测试过是正常的所以来问下这个款芯片是需要什么特殊的操作 zty3512321 发表于 2024-9-30 14:55
我是在8H1K 和3K上都测试过是正常的所以来问下这个款芯片是需要什么特殊的操作 ...
因为8H8K64U有独立的VREF引脚,此引脚不能接地不能悬空,必须接合适的参考电压源,比如VCC或者2.5V基准电压源。 晓飛飛 发表于 2024-9-30 15:38
因为8H8K64U有独立的VREF引脚,此引脚不能接地不能悬空,必须接合适的参考电压源,比如VCC或者2.5V基准电 ...
C:\Users\zhouty\Desktop\企业微信截图_1727683976837.png
连了的 找到原因了,很无语。
8H1K28,8H3k64S4 的芯片
用ADC_CONTR&=~0X80; 这个语句关掉ADC后 ADC_RES ADC_RESL里面的数据还是存在的
但是STC8H8K64U 这个芯片关掉ADC后,ADC_RES ADC_RESL里面的数据就没有了 。
所以要先读走数据后再关ADC。
这芯片做的有点随意啊。
zty3512321 发表于 2024-9-30 16:38
找到原因了,很无语。8H1K 3k的芯片 用ADC_CONTR&=~0X80;这个语句关掉ADC后 ADC_RES ADC_RESL里面的数据还 ...
可能是有DMA的型号时序逻辑机制不一样 zty3512321 发表于 2024-9-30 16:38
找到原因了,很无语。
8H1K28,8H3k64S4 的芯片
用ADC_CONTR&=~0X80; 这个语句关掉ADC后 ADC_RES ADC_RESL ...
关闭ADC后ADC寄存器也清零了,还会这样啊
页:
[1]