The moteus controller is an open source BLDC motor controller. It has an integrated absolute magnetic encoder, high performance STM32G4 microcontroller, and 5Mbps CAN-FD communication. It can drive a wide variety of brushless motors from very low to very high speed with a form factor that is only about 50mm square.
moteus has always had a port intended for use as an extra absolute encoder, and now it finally works! This is for the case where you have a gear reduction, and want to be able to monitor the output of the reducer in addition to the rotor position. The moteus firmware doesn't use the value for much, but does allow you to initialize the number of full revolutions of the rotor from it. It also reports the value over CAN so that your application can use it.
Currently, just the AS5048B is supported, although other I2C based encoders should be pretty easy to make work.
I recently added an optional "anti-windup" term to the position control loop in moteus. This lets it operate in a pure velocity mode with behavior that is more familiar to a 3 stage control law, as opposed to the integrated position/velocity controller that moteus uses.
You can configure it by setting the "servo.max_position_slip" option to the number of revolutions the control position is allowed to deviate from the actual position.