Speed limit because of FOC?

Hey, yes, with such a motor it becomes easier, I think!

Do you have access to a logic analyser or oscilloscope? If so, you could time your main loop precisely: I use some unused output pin, toggle this pin in the main loop before the call to loopFOC() and before the call to main(). Then I can see the frequency of the loop in the logic analyser:

In this way you could check your main loop speed, and also check how long the sensor reads are taking, etc… then you will know if it is a MCU speed problem, or due to some other issue (like sensor lag, back EMF, etc…)