ADS1118用430写的模拟spi的驱动程序 求大神看看哪里错了
采集到的值只跳变几次 而且值都不对 我用的单通道AIN3
int Read_ADS1118()
{
int dat;
CS_L;
SCLK_L;
while(P4IN&BIT3)
{
SCLK_H;
delay_ms(1);
SCLK_L;
delay_ms(1);
}
delay_ms(1);
dat=Write_ADS1118(0x74ec,1);
Write_ADS1118(0x0000,1);
CS_H;
return dat;
}
uint Write_ADS1118(uint dat,uchar mode)
{
union aa temp;
union aa temp1;
uchar i;
if(mode == 1)
dat |= 0x8000; //开始转换
temp.dat1[1] = dat;
temp.dat1[0] = dat;
SCLK_L;
CS_L;
P4DIR|=BIT3;
DOUT_H;
P4DIR&=~BIT3;
delay_ms(1);
for(i=0;i<32;i++)
{
if(temp.dat2 & 0x80000000)
{
DIN_H;
}
else
{
DIN_L;
}
temp.dat2 <<= 1;
temp1.dat2 <<= 1;
delay_ms(1);
SCLK_H;
if(P4IN&BIT3)
temp1.dat2 |= 0x01 ;
delay_ms(1);
delay_ms(1);delay_ms(1);
SCLK_L;
delay_ms(1);delay_ms(1);delay_ms(1);delay_ms(1);delay_ms(1);
}
CS_H;
SCLK_L;
DIN_L;
P4DIR|=BIT3;
DOUT_L;
P4DIR&=~BIT3;
return temp1.dat1[1];
}
用的是连续转换模式
用的是1602显示读出的值 值总是不对 而且跳变几次就不动了 拔掉VDD的线再插上就又动几次 我实在是不知道哪的问题
这个程序在本论坛的置顶贴里面有:
http://www.deyisupport.com/question_answer/analog/data_converters/f/58/t/68454.aspx
有没有模拟SPI驱动的程序