突然想起来AI8051U那个ADC的IO口电压跳变的现象原因有肯能
是芯片的那个施密特功能产生的现象就是说设为高阻态是失败的,取消施密特也是失败的。
但是其他的都能跑,或者至少8位模式能跑,32位也能正常输入输出和LCD显示,
就是ADC的结果一直不对,我用直接平均的方法把12位数据压缩成0-51显示,
结果是显示3-35,同样的代码在8位模式就正确显示0-51
神农鼎 发表于 2026-5-7 10:35
不懂你老是发这些啥意思 我也是不知道你咋那,ADC 大家都从我们的程序出发都对了,
您这查查硬件,再看看我们的实验箱程序不就搞定了 ?
深圳国芯人工智能有限公司-实验箱
神农鼎 发表于 2026-5-7 12:59
我也是不知道你咋那,ADC 大家都从我们的程序出发都对了,
您这查查硬件,再看看我们的实验箱程序不就搞定 ...
就是用试验箱的程序,但是它是轮询的,不是用的中断方式。
这个先不提
就那个电压跳变的问题,有没有硬件在手上,测试一下看看,
我发的一串数据就是用实验代码从下载工具软件里面复制的,能看出来数据的跳变。
就是目前高阻态设置是失败的,施密特关闭设置也是失败的。难道这个芯片是假货?
xiaobendan 发表于 2026-5-7 13:07
就是用试验箱的程序,但是它是轮询的,不是用的中断方式。
这个先不提
就那个电压跳变的问题,有没有硬件 ...
1060
xiaobendan 发表于 2026-5-7 13:07
就是用试验箱的程序,但是它是轮询的,不是用的中断方式。
这个先不提
就那个电压跳变的问题,有没有硬件 ...
用于ADC输入的端口不做任何设置,芯片默认加电高阻。与内部施密特无关。此现象多为使用不当。上原理图看看。 wulin 发表于 2026-5-8 17:28
用于ADC输入的端口不做任何设置,芯片默认加电高阻。与内部施密特无关。此现象多为使用不当。上原理图看 ...
不用设置?
不需要设置为高祖态? xiaobendan 发表于 2026-5-8 17:44
不用设置?
不需要设置为高祖态?
按用户手册第1158页ADC基本操作示例程序稍做修改,下载到擎天柱AI8051核心板测试,缓慢旋转电位器,ADC结果在P2的LED显示完全正常,没有发现突跳现象。
#include "Ai8051U.H" //头文件见下载软件
#include "intrins.h" //使用_nop_()函数所必须要包含的头文件,
void Delay20ms(void) //@12.000MHz
{
unsigned char data i, j, k;
i = 2;
j = 56;
k = 172;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
void main()
{
P_SW2 |= 0x80; //允许访问扩展的特殊寄存器,XFR
WTST = 0; //设置取程序代码等待时间,
CKCON = 0; //设置访问片内的 xdata 速度,
P0M0 = 0x00;P0M1 = 0x00;
P1M0 = 0x00;P1M1 = 0x20;//设置 P1.5 为 ADC 口
P2M0 = 0x00;P2M1 = 0x00;
P3M0 = 0x00;P3M1 = 0x00;
P4M0 = 0x00;P4M1 = 0x00;
P5M0 = 0x00;P5M1 = 0x00;
ADCTIM = 0x3f; //设置 ADC 内部时序
ADCCFG = 0x0f; //设置 ADC 时钟为系统时钟/2/16/16
Delay20ms();
while (1)
{
ADC_CONTR=ADC_POWER|ADC_START|0x05;//启动转换1100 1000
_nop_();_nop_(); //小延时
while (!(ADC_CONTR & ADC_FLAG)); //等待ADC转换完成标志置位 1010 0000
ADC_CONTR &=~ADC_FLAG; //清完成标志
P2 = ~ADC_RES; //读取 ADC 结果
}
}
wulin 发表于 2026-5-8 22:37
按用户手册第1158页ADC基本操作示例程序稍做修改,下载到擎天柱AI8051核心板测试,缓慢旋转电位器,ADC结 ...
难道设置P1M0这些也需要先 P_SW2 |= 0x80;?
你这是在32位模式?
我的主循环要显示LCD,比较慢,所以我用中断。
我之前发过从串口得到的数据,跳变是有的。
你能拍视频看下吗?
我要的芯片需要等两天才能到。
页:
[1]
2