微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > ADS1118用430写的模拟spi的驱动程序 求大神看看哪里错了

ADS1118用430写的模拟spi的驱动程序 求大神看看哪里错了

时间:10-02 整理:3721RD 点击:

采集到的值只跳变几次  而且值都不对  我用的单通道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驱动的程序

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top