首先感谢FSL_TICS_Jeremy,帮我解决了接收时SCK触发产生时钟的疑问,今天工作空闲时间尝试了按TLE5012B的方式发读信号过去,具体代码如下:
Set_Port_Value(UINT_CSQ1,LOW);//设置TLE片选脚为低
Delay_us(40);//满足tcss时间延时
SPI1_Send_Data(0x8001);//读地址为01H的寄存器
Delay_us(20);
SPI1CR2_BIDIROE = 0;//switch SPI_MOSI to input
Delay_us(20);
SPI1_Send_Data(0x0000);//触发产生时钟脉冲
Delay_us(20);
reg_val = SPI1_Receive_Data();//读寄存器的值
SPI1_Send_Data(0x0000);//触发产生时钟脉冲
Delay_us(20);
ica_crcval = SPI1_Receive_Data();//读CRC的值
Set_Port_Value(UINT_CSQ1,HI);//拉高片选脚
SPI1CR2_BIDIROE = 1;//置SPI到输出
Delay_us(20);
按照TLE5012B芯片手册所讲,其上电复位不进行初始化,这个寄存器的复位值,0x8001,但程序读出来并非这个值,而且随着我的SPI波特率的变化在变化,请问有做过TLE5012B角度传感芯片的大神,请指点一下。可以把源码发给大大看下。另外TLE5012B E5000正常工作是否需要先初始化,我试过设置一个值再读回,也不一样,基本判定可能是接收的问题,或者是传感器芯片工作不正常,谢谢指点下。! |