您的位置:首页 > 其它

430板子AD采集不到基准电压(Ref+)的问题解决

2010-10-22 11:48 246 查看
问题描述:

之前的板子AD采集是正确的,但是新作出来的板子(新板有稍许改动)AD采集的结果:

有的板子是对的,有的板子是错误的。错误板子的现象是基准电压(Ref+)的值都采不到。

解决方法:

在给2543的数据输入脚送入值后,一定要延迟一定时间(目的是等待送入的值稳定下来) 再给时钟送上升沿。

之前程序 :

SPI_CLK_0;
SPI_CS_0;

for (i = 0; i < 12; i++) // Loop
{

Delay_us(10);

if (cmd & 0x80)
{
SPI_OUT_1;
}
else
{
SPI_OUT_0;
}

SPI_CLK_1;

cmd = cmd << 1;
g_usADValue[iChIdx][g_iSampleNo] = g_usADValue[iChIdx][g_iSampleNo] << 1;

if (SPI_IN)
{
g_usADValue[iChIdx][g_iSampleNo] |= 0x0001;
}

Delay_us(10);

SPI_CLK_0;
}

SPI_CS_1;

之后的程序

SPI_CLK_0;
SPI_CS_0;

for (i = 0; i < 12; i++) // Loop
{

Delay_us(10);

if (cmd & 0x80)
{
SPI_OUT_1;
}
else
{
SPI_OUT_0;
}

//一定要加这一句,否则会出问题,表现在有的板子是好的,有的板子有问题
//该句的目的是:在SPI_OUT加载数据后,要等待该数据稳定
Delay_us(10);

SPI_CLK_1;

cmd = cmd << 1;
g_usADValue[iChIdx][g_iSampleNo] = g_usADValue[iChIdx][g_iSampleNo] << 1;

if (SPI_IN)
{
g_usADValue[iChIdx][g_iSampleNo] |= 0x0001;
}

Delay_us(10);

SPI_CLK_0;
}

SPI_CS_1;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: