Very nice!
If I may ask, is the FPGA completely necessary? It seems like the MCU is doing the PWM (and possibly the calculations ?). All I can really think of other than that is the encoders, but there are many ARM mcus that can directly interface to incremental encoders nowadays.
Thanks!
Incremental encoders is already supported, but for high performance you want to know the rotor position from the start, otherwise you can't apply full torque at 0rpm, in a launch situation for example. That can be done with resolvers or high speed absolute encoders, a common comm protocol for those is BiSS which I'm not confident can be managed by the already loaded cpu.
The other potential usage is fitting 7 delta sigma demodulators to digitize the 4 voltages and 3 currents directly at the busbars, without any analog signal path. This way everything stays digital, filtering can be tweaked from firmware, no drift, no offsets, etc. We are already using sensors that come with delta sigma variants. In this scenario all motor signals are being input directly to the FPGA and output PWM is an fpga output,so you could run the control loop at ludicrous frequencies inside the fpga and using the arm mcu as an application processor.
Also the fpga is actually not much more expensive, early versions had a bunch of discrete logic gates doing the basic protection job and the costs sum up, I think overall its a $3 difference that gives you the opportunity to do interesting things.