读取故障寄存器时序的开头部分有疑问,如果按照手册时序写程序,读取数据丢失最高位,如果按照如下配置,可正确读取。
疑问1:如果不加CLK高,CLK低,同样会丢失最高位;
疑问2:CLK_H();//?按照datasheet时序图,应该在LATCH_H之后;调换后不能正确读取。
uint16 DRV8860_ReadFault()
{
uint16 dat=0;
uint8 i;
CLK_H();//?按照datasheet时序图,不需要
CLK_L();//?按照datasheet时序图,不需要
CLK_H();
LATCH_H();
CLK_L();
LATCH_L();
CLK_H();//?按照datasheet时序图,应该在LATCH_H之后;
LATCH_H();
//LATCH_H();//以下是与datasheet一致,丢失MSB
// CLK_L();
// LATCH_L();
// LATCH_H();
/ // CLK_H();
for (i = 0; i < 8; i++)
{
CLK_H();
CLK_L();
dat <<= 1;
if (DOUT_PIN) dat |= 1;
}
for (i = 0; i < 8; i++)
{
CLK_H();
CLK_L();
dat <<= 1;
if (DOUT_PIN) dat |= 1;
}
LATCH_L();//
return dat;