Lis3dh芯片SPI通讯疑问,求大神点拨!
问题描述:主芯片1728工作在主模式(提供时钟,片选),lis3dh为从控芯片,四线制全双工。
目前用示波器查看MTSR,与MRST引脚信号均正常!说明时钟,片选,时序逻辑均ok,但是读取RB(接受缓存寄存器)数据一直是0,导致无法读取出来通过can发出来。
主代码:
//读取接受缓存寄存器函数
short SSC2_usGetData(void)
{
SSC2_RSRC.B.CLRR = 1;
return(SSC2_RB.U);
}
//发送读取指令及地址
short ReadData(unsigned char Axisaddr)
{
BYTE Value = 0x00;
int index = 0x00;
Value = ((1<<7) | (0<<6) | Axisaddr); // 1--读 Axisaddr-读取地址
//0.select channel
SSC2_SSOC.U = 0x00000100;
//1.checking the SSC2 status of the busy flag
for(index = 0; index < SSC2Delay; index++)
{
if(SSC2_STAT.B.BSY == 0)
break;
}
//2. load transmit buffer register
SSC2_vSendData(Value);
//3.reset receive interrupt request
SSC2_RSRC.B.CLRR = 1;
//4. send a invalid data to generate a SCLK signal
SSC2_vSendData(0x00);
//5. check if new data has been received
while( !SSC2_RSRC.B.SRR );
return (SSC2_usGetData());
}