This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

AFE4490寄存器的配置程序

Other Parts Discussed in Thread: 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);
}