1 解答
八月 29, 2022
07:17 PM
Hi fengc234:
可否共享下你具体是如何配置的,寄存器命令,读写是否与6.1.4里的操作流程保持一致?
以上,希望可以帮到你。
Yaran
4 回复数
八月 29, 2022
07:17 PM
Hi fengc234:
可否共享下你具体是如何配置的,寄存器命令,读写是否与6.1.4里的操作流程保持一致?
以上,希望可以帮到你。
Yaran
八月 29, 2022
08:05 PM
请帮忙看一下如下回复,谢谢
八月 29, 2022
07:50 PM
#define READ_ANGLE_VALUE 0x8021
#define READ_ANGLE_BASE 0xD091
#define WRITE_ANGLE_BASE 0x5091
uint16_t ReadValue(uint16_t RegValue)
{
uint16_t Data;
SPI_CS_ENABLE;
SPIx_ReadWriteByte(RegValue);
SPI_TX_OFF();
//发 0xFFFF 是为了输出时钟
Data = ( SPIx_ReadWriteByte(0xffff) & 0x7FFF );
SPI_CS_DISABLE;
SPI_TX_ON();
return(Data);
}
uint16_t WriteReg(uint16_t Cmd, uint16_t Value)
{
uint16_t Data;
SPI_CS_ENABLE;
SPIx_ReadWriteByte(Cmd);
SPIx_ReadWriteByte(Value);
if(Cmd&0x01) //返回safeword
{
SPI_TX_OFF();
Data = ( SPIx_ReadWriteByte(0xffff) & 0x7FFF );
SPI_CS_DISABLE;
SPI_TX_ON();
return Data;
}
SPI_CS_DISABLE;
return 0;
}
void SetZero(void)
{
uint16_t Temp_Angle=0, Temp_BaseAngle = 0;
Temp_Angle = ReadValue(READ_ANGLE_VALUE);
Temp_Angle = Temp_Angle & 0x7FFF;
Temp_BaseAngle = ReadValue(READ_ANGLE_BASE);
Set_BaseAngle = (Temp_Angle>>3) + (Temp_BaseAngle>>4);
Set_BaseAngle = Set_BaseAngle <<4;
Set_BaseAngle = Set_BaseAngle | (Temp_BaseAngle & 0x0F);
WriteReg(WRITE_ANGLE_BASE, Set_BaseAngle);
Delay_US(500);
}
SetZero()这个函数,需要调用2次之后,读取的角度值才能为零。
九月 01, 2022
05:23 PM
Hi fengc234:
可以排查下第一次执行函数所需时间,从主函数开始到调用到为止,是否满足传感器初始化所需时间?
另外还有一个变量没有声明,也是有可能导致第一次函数执行不成功的原因.
以上,感谢.
Yaran