Hey Richard,
Very nice work, thanks a lot for taking the time to writing the code for this board.
So for initial support i think 23kHz is a good solution. For example for Arduino boards atmega328 and 2560 I’ve fixed the frequency value to 32kHz. It can be changed but not to arbitrary value. It can be changed with prescalers. So it’s either 32kHz or 16khz or less, which are all a bit low.
Anyway you can see for example a code for esp32 where there is a short code which basically searches for the biggest prescalers which will set an arbitrary frequency with suffisant owl resolution.
There is no need for high pwm resolution 4096 is maybe a bit too high. But if the board a are capable of doing it, it is better for control. More smoother. This can be seen much more for stepper motors since theh have much more pola pairs and need much higher resolution in measurements and pwm setting. I would not go as low as Arduino’s 255. Try to go at least to 1024 or more. That should be good.
Also there is no need to go very high frequency of pwm. From 15 to 30khz center aligned is perfect!