TI中文支持网
TI专业的中文技术问题搜集分享网站

lmp90098无法使用SPI接口读取数据

我按照DATASHEET中的时序对LMP90098进行性读取,但是读取回来的数据全部是0xff,用示波器测量SDO脚,是高电平。我用的是atmega128主控IC,SPI接口是IC内部自动产生时序,用(1/128)MHZ的时序频率,这个接口上还带有其他IC,那些IC工作正常。LMP90098采用内部振荡器,留有外部振荡器接入方式,我估计是程序时序有问题:

lmp90098写操作如下:

void Wtlmp90098(unsigned char regAdd,unsigned char*val,unsigned char ct)//寄存器地址、数据、数据量

{

unsigned char ha;

unsigned cahr ch=0;

ha=(regAdd&0xf0)>>4;

if((ct-1)<0x04) ch=(ct-1);  else ch=3;

ch<<=5;//设置数据尺寸

ch|=(regAdd&0x0f)//设置数据低地址

adc_on()//拉低csb信号

SPI_WR(0X10);//高地址写入命令

SPI_WR(ha);//写入高地址

SPI_WR(ch);//写入低地址

for(int i=0;i<ct;i++)

SPI_WR(val[i]);//写入数据

adc_off();//拉高csb信号

}

LMP90098读操作如下:

void Wtlmp90098(unsigned char regAdd,unsigned char*val,unsigned char ct)//寄存器地址、数据、数据量

{

unsigned char ha;

unsigned cahr ch=0;

ha=(regAdd&0xf0)>>4;

if((ct-1)<0x04) ch=(ct-1);  else ch=3;

ch<<=5;

ch|=(regAdd&0x0f);

ch|=0x80;//设置读信号

adc_on()//拉低csb信号

SPI_WR(0X10);//高地址写入命令

SPI_WR(ha);//写入高地址

SPI_WR(ch);//写入低地址

for(int i=0;i<ct;ct++) val[i]=SPI_WR(0);

adc_off();//拉高csb信号

}

Decapton Wang:

1. 检查一下输入信号的幅度是否在允许范围内,检查一下电压基准是否正确。

2. 把SPI接口上其他的器件都关掉,就是说MCU只和AFE通信,看看结果怎样。

3. 代码的问题建议发到MSP430版,那边应该有专家帮你检查代码写得是否正确。

wei su:

回复 Decapton Wang:

谢谢你的回答

1、SI输入信号的幅度在0~3.3v,工作电压是3.3v;

2、我做这个测试时,就只开LMP90098,其他器件是关掉的;

我现在怀疑LMP90098是否启动运行了,不知用什么方法可以测出IC在默认的情况下在工作

wei su:

回复 Decapton Wang:

谢谢!模拟电源引脚虚焊了,呵呵

赞(0)
未经允许不得转载:TI中文支持网 » lmp90098无法使用SPI接口读取数据
分享到: 更多 (0)