|
@@ -41,6 +41,8 @@
|
|
|
#define MAGNITUDE_RESULT 0x1B
|
|
|
#define DEVICE_STATUS 0x1C
|
|
|
|
|
|
+TMAG5273_OUT Tmag5273_out;
|
|
|
+
|
|
|
void TMAG5273_WriteReg(UBYTE RAddr, UBYTE WData)
|
|
|
{
|
|
|
I2C_Start();
|
|
@@ -96,8 +98,10 @@ SBYTE tmag5273_Init(void)
|
|
|
TMAG5273_WriteReg(DEVICE_CONFIG_2, tmp);
|
|
|
tmp = 0x7C;
|
|
|
TMAG5273_WriteReg(SENSOR_CONFIG_1, tmp);
|
|
|
- tmp = 0x04;
|
|
|
+ tmp = 0x14; //Ax < Ay
|
|
|
TMAG5273_WriteReg(SENSOR_CONFIG_2, tmp);
|
|
|
+ tmp = 196; //Ax = 20.623mT, Ay = 26.873mT, Ax / Ay * 256
|
|
|
+ TMAG5273_WriteReg(MAG_GAIN_CONFIG, tmp);
|
|
|
tmp = 0x01;
|
|
|
TMAG5273_WriteReg(T_CONFIG, tmp);
|
|
|
|
|
@@ -173,18 +177,23 @@ SWORD tmag5273_GetTemp(void) //0.01℃
|
|
|
UWORD tmag5273_GetAngle(void) //Q15
|
|
|
{
|
|
|
UBYTE agMLSB[2] = {0, 0};
|
|
|
+ UWORD anData = 0;
|
|
|
UWORD Result;
|
|
|
|
|
|
TMAG5273_ReadData(ANGLE_RESULT_MSB, 2, agMLSB);
|
|
|
- Result = 32767 - (((agMLSB[1] + (agMLSB[0] << 8)) * 728) >> 7);
|
|
|
+ anData = agMLSB[1] + (agMLSB[0] << 8);
|
|
|
+ if(anData > 5760)
|
|
|
+ anData = 5760;
|
|
|
+ Result = 32767 - ((anData * 728) >> 7);
|
|
|
|
|
|
- if(Result < 1469)
|
|
|
- {
|
|
|
- return (Result + 32767 - 1469);
|
|
|
- }
|
|
|
- else
|
|
|
- {
|
|
|
- return (Result - 1469);
|
|
|
- }
|
|
|
+ return Result;
|
|
|
+// if(Result < 1469)
|
|
|
+// {
|
|
|
+// return (Result + 32767 - 1469);
|
|
|
+// }
|
|
|
+// else
|
|
|
+// {
|
|
|
+// return (Result - 1469);
|
|
|
+// }
|
|
|
|
|
|
}
|