SPI读取程序:
uchar Read_byte_spi(uchar comm) //写命令或数据时,高位在前
{
uchar i;
ulong tmp=0;
EA=0;
Spi_cs=1;
Spi_ck = 0;
Spi_cs=0;
W_byte(comm); //写命令
//-----------------------------------------------
for(i=0;i<24;i++) //读数据,共三字节
{
Spi_ck = 1;
if(Spi_di==1)
{
tmp+=1;
}
else
{
//tmp+=0;
}
tmp<<=1;
Spi_ck = 0;
}
val_spi[0]=tmp>>16;
val_spi[1]=tmp>>8;
val_spi[2]=tmp>>0;
Spi_cs=1;
EA=1;
return 0;
}
连续读取芯片内部电压寄存器时,数据如下:
1C35A6
1C35A6
1C35A6
0035A6 //异常数据
0035A6 / /异常数据
1C35A6
0035A2 //异常数据
1C35A2
1C35A2
0035A2 //异常数据
1C35A2
其中红色为异常数据,其余为正常数据。
同样的程序读取频率寄存器时数据没有明显异常。 |
|