ADC 疑惑 | 不是所有的芯片P3口都有ADC功能
我用仿真查看了ADC转换的运行情况,在开始ADC的那根指令的执行完成后,再下一根指令,ADC_START马上被置0,然后ADC_FLAG马上被置1。而且RES和RESL里面也都是0,完全没有做ADC转换。我用的是STC8H8K64U,TSSOP20的封装,Vref是直接接的VCC。下面是初始化代码:
P_SW2 |= 0x80;
ADCTIM = 0xA1;
ADC_RES |= 0x07;
P_SW2 &= 0x7f;
ADCCFG = 0x24;
ADC_CONTR = 0x80;
下面是运行ADC的代码:
ADC_CONTR = 0xC0; 在这一行代码后ADC_CONTR马上就会变成 0xA0
ADC_CONTR = ADC_CONTR | channel;
NOP(4);
while (!(ADC_CONTR & 0x20));
{
ADC_CONTR &= ~ADC_FLAG;
adc = (u16)(ADC_RES & 0x0F);
adc = (adc << 8) | ADC_RESL;
adc = adc/4;
return adc;
}
P3口有ADC功能
P3口有ADC功能
不是所有的芯片P3口都有ADC功能
有没有用官方历程代码测试过? 这种实测外部环境的没法仿真,你都没数据哪里来的结果,仿真不是万能的,能用实物还是用实物吧,又要不了几个钱 xxxevery 发表于 2024-4-22 11:21
这种实测外部环境的没法仿真,你都没数据哪里来的结果,仿真不是万能的,能用实物还是用实物吧,又要不了几 ...
我是在实物板子上面进行测试和仿真的。实物测试不行,肯定得用仿真去查看功能是否运行正常 本帖最后由 梁工 于 2024-4-22 16:57 编辑
楼主最好先测试一下STC官方例子,那都是非常正常的例子,无数的用户使用过。
STC的12位ADC的精度高(接近13位精度,可用过采样测试出来),噪声低、抖动小(做交流电有效值测量就可以看出来)。
你的程序应该用下面方式启动:
ADC_CONTR = 0xC0 | channel;
NOP(4);
梁工 发表于 2024-4-22 16:55
楼主最好先测试一下STC官方例子,那都是非常正常的例子,无数的用户使用过。
STC的12位ADC的精度高(接近13 ...
好的,我下载了例程下来了。我用例程的试试看 梁工 发表于 2024-4-22 16:55
楼主最好先测试一下STC官方例子,那都是非常正常的例子,无数的用户使用过。
STC的12位ADC的精度高(接近13 ...
用例程也是一样,我用的是STC8H8K64U 看数据手册ADC11对应的IO是P33。然后我使用官方例程,只是修改了通道部分,通道用ADC11并把对应的P33口设置成高阻态输入。还是一样,刚开ADC,下一条指令马上完成。
我应该是权限不够,没办法发截图上来 lyagp03 发表于 2024-4-22 17:29
用例程也是一样,我用的是STC8H8K64U 看数据手册ADC11对应的IO是P33。然后我使用官方例程,只是修改了通 ...
我意思是,直接下载例程的HEX文件测试,会从串口返回结果,你看看会不会都是0. 梁工 发表于 2024-4-22 17:35
我意思是,直接下载例程的HEX文件测试,会从串口返回结果,你看看会不会都是0. ...
我查看了ISP里面的引脚定义,跟数据手册完全是两码事。。。
数据手册里面P3脚是有一部分脚是有ADC功能的,但是ISP里面是没有的 梁工 发表于 2024-4-22 17:35
我意思是,直接下载例程的HEX文件测试,会从串口返回结果,你看看会不会都是0. ...
非常感谢了,我按照ISP里面引脚的定义重新做一块板子吧