微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 硬件电路设计 > TI模拟硬件电路设计 > lmp90098无法使用SPI接口读取数据

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

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

我按照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信号

}

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

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

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

谢谢你的回答

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

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

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

LMP上电后,看看稳压电源的电流输出,如果电流输出在LMP的正常工作范围内,估计是正常工作了。如果电流不正常,那可能就是被power down了,或者其他地方出了问题。你有没有把代码发到MSP430版?那边有C的高手,应该能帮你检查代码是否正确。

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

上一篇:ADS1100程序问题
下一篇:ads58c28问题

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

网站地图

Top