如何对TLE5012进行零点标定

公告

大中华汽车电子生态圈社区并入开发者社区- 更多资讯点击此

Tip / 登入 to post questions, reply, level up, and achieve exciting badges. Know more

cross mob
fengc234
Level 2
Level 2
10 replies posted 250 sign-ins 5 questions asked

我想对设备的机械零点进行标定,在该机械零点处设置TLE5012的角度为零,请问如何进行设置。我根据《基于
iGMR 原理角度传感器 TLE5012B 应用 指南》文章中的4.2.1 SSC方式标定零点进行设置,但是并没有成功,请问有没有程序可以参考,谢谢!

0 点赞
1 解答
Yaran_W
Moderator
Moderator
Moderator
250 replies posted 100 solutions authored 25 likes received

Hi fengc234:

https://www.infineon.com/dgdl/Infineon-Angle_Sensor_TLE5012B-UM-v01_02-en-UM-v01_02-EN.pdf?fileId=55...

可否共享下你具体是如何配置的,寄存器命令,读写是否与6.1.4里的操作流程保持一致?

WangYaran_0-1661825485472.png

 

WangYaran_1-1661825543299.png

 

WangYaran_2-1661825587418.png

WangYaran_3-1661825624605.png

以上,希望可以帮到你。

Yaran

在原帖中查看解决方案

0 点赞
4 回复数
Yaran_W
Moderator
Moderator
Moderator
250 replies posted 100 solutions authored 25 likes received

Hi fengc234:

https://www.infineon.com/dgdl/Infineon-Angle_Sensor_TLE5012B-UM-v01_02-en-UM-v01_02-EN.pdf?fileId=55...

可否共享下你具体是如何配置的,寄存器命令,读写是否与6.1.4里的操作流程保持一致?

WangYaran_0-1661825485472.png

 

WangYaran_1-1661825543299.png

 

WangYaran_2-1661825587418.png

WangYaran_3-1661825624605.png

以上,希望可以帮到你。

Yaran

0 点赞
fengc234
Level 2
Level 2
10 replies posted 250 sign-ins 5 questions asked

请帮忙看一下如下回复,谢谢

0 点赞
fengc234
Level 2
Level 2
10 replies posted 250 sign-ins 5 questions asked
#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次之后,读取的角度值才能为零。

0 点赞
Yaran_W
Moderator
Moderator
Moderator
250 replies posted 100 solutions authored 25 likes received

Hi fengc234:

可以排查下第一次执行函数所需时间,从主函数开始到调用到为止,是否满足传感器初始化所需时间?

另外还有一个变量没有声明,也是有可能导致第一次函数执行不成功的原因.

以上,感谢.

Yaran

0 点赞