MT6701 problem! zero_electric_angle offset change when motor run

Hi every one.
I found some problem of the MT6701 magnetic sensor.
Currently, i’m read raw 21bits data via SSI and everything work well, (i dont use the simplefoc library but my code is base on it.)
firstly, i align rotor to the zero electric angle and get the raw shaft angle to calculate the zero electric angle offset manually. After having the zero electric angle offset, i write it to the code and start a simply rotary via setphasevoltage(Uq = 6v, Ud = 0, electric_angle + P/2), (electric_angle + P/2 will make the voltage vector opposite to the direct vector (field weeken) and motor rotate faster than just electric_angle).
However, i found that the sensor seem to be loss of it tracking when motor start rotating (i read the 4 bit status of sensor i found that it’s value = 1001 (0x9) when motor start spinning and it will be come to 0 after that.) This problem maybe the reason why zero_electric_angle offset change when i recalibrate it again.

moreover, i have concerned about some others reason such as VDD min = 3v, and the size recommended of the magnet. I changed VDD from 3.3v to 5v but nothing change, problem is still there. About the magnet size, it’s approximate meet the recommended one.

my setting here: STM32F103RCT6, DRV8323H, A0D270 MOSFET, 24V BAT

4 bit status truth table

about magnet size recommended and the VDD

Have you tested the sensor without powering the motor and just turning it by hand?

yes, everything work well. problem just only become when motor start rotating.
i think that it spin too fast for the sensor to track.

How fast are you spinning it?
Also, are you sure the magnet is diametrically polarized?
How is the magnet mounted, how is the sensor mounted?
How big is the air gap?

with some stuff testing, yeah i’m sure it is diametrically polarized

air gap is approximately between 0.5 and 1mm
magnet mounted to rotor shaft via epoxy glue
How fast are you spinning it? → with command setphasevoltage(3,0, elec_angle + pi/2), it runs at approximately 390 rad/s
with command setphasevoltage(6v,0, elec_angle + pi/2), it runs at approximately 600 rad/s and the speed will be continues to decrease

another testing, i disconnect the motor wires from driver and rotate it manual with a drill.
Maximum speed is up to 200rad/s but the sensor is tracking it well, no loss of track bit.

after a few more test with drill, i see that the loss of track bit of the sensor is set randomly when the motor start rotating.
I have ordered some new MT6701 and will change to it.

Since the stator is not fixed with the motor flange, it will be pull a little bit when the rotor is accelerated. This is the reason which make the zero offset change.

On the other side, MT6701 still return loss of track status when the motor start rotating, but it’s not make any error in measurement

Yes, I think the problem here is your alignment of the rotor and the sensor.
Is it possible to make a more robust setup?