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

AFE4490寄存器的配置程序

我是一名学生,现在正在用AFE4490来做毕业设计。自己画了板子,写了SPI的程序来配置寄存器,但是一直没有配置成功,因为写进寄存器数据后,读出来一直是0,然读允许位我已经置1了。调了好久了,也不知道是硬件有问题还是软件有错,硬件我是仿照demo板上的画的,控制器我用的是FPGA,在内部建了个nios ii的内核,用来配置AFE4490。我贴出我的程序,大神们能不能帮我看看有什么问题么。。。。。。或者可不可以把配置程序发我一下。。。。。。毕业设计做的真心蛋疼啊,,,,,好人一生平安!!!!谢谢了

nios ii内核的工作频率是100m的

//spi WRITE a byte.
void SPI_WRITE_BYTE(int data)
{
int i;
for(i=0;i<8;i++){
if(data&0x80)SIMO->DATA=1;
else SIMO->DATA=0;
usleep(10); //set up time SCLK->DATA=1;
data<<=1;
usleep(10); //hold time
SCLK->DATA=0;
}
}

//SPI read a byte
char SPI_READ_BYTE()
{
int i;
char data;
data=0;
for(i=0;i<8;i++){
data<<=1;
SCLK->DATA=1;
usleep(10);
data |=SOMI->DATA;
// printf("the SOMI is %d \n",SOMI->DATA);
SCLK->DATA=0;
usleep(10);
}
SIMO->DATA=0;
return(data);
}

//addr is a byte,but value is a 24-bit data
void SPI_WRITE_REG(int addr,int value)
{
int value1,value2;
STE->DATA=0;
usleep(1);
SPI_WRITE_BYTE(addr);

value1=value>>16;

SPI_WRITE_BYTE(value1);
value2=value>>8;

SPI_WRITE_BYTE(value2);

SPI_WRITE_BYTE(value);
usleep(1);
STE->DATA=1;
}

//READ THE REGISTER
int SPI_READ_REG(int addr)
{
int value=0;
STE->DATA=0;
usleep(1);
SPI_WRITE_BYTE(addr);

value |=SPI_READ_BYTE();

value<<=8;

value |=SPI_READ_BYTE();

value<<=8;

value |=SPI_READ_BYTE();

usleep(1);
STE->DATA=1;
return(value);
}

yu fan1:

我邮箱是cat.fan@qq.com

大神们帮下忙吧~~~

yu fan1:

问题解决了。。。。。程序没有问题,而是我看datasheet的时候理解错了一个地方:

我开始以为只要把read_bit一次性置为1,以后就可以读寄存器了。。。。但是datasheet的要求是每读一次寄存器之前都要把read_bit置为1,然后再读。。。。。

好吧。。。大家见笑了。。。。

jinsong zhu:

回复 yu fan1:

请问你是不是参考血氧模块评估板进行电路设计的啊?如果是的话有些问题想请教一下

fan wu2:

回复 yu fan1:

你好!我现在也在调这个芯片,寄存器配置按的是你贴的参数,不过芯片读不出数据,一直是0,不知道是时序问题还是程序问题,spi测试波形是有的

赞(0)
未经允许不得转载:TI中文支持网 » AFE4490寄存器的配置程序
分享到: 更多 (0)