Hi to all, nice and interesting notes.
You can break the problem in two parts to avoid mixing signals: 1)The control scheme and its implementation and 2)the power section regarding the BLDC. In the control scheme as electricuwe says, the inner and fastest loop is the current one. Over this loop goes the speed and at the upper loop is the position loop. This control scheme is the same and it is proven over the years that it will work again(at least in my 17 yrs experiencie with DC drives). Some things can help you to implement are use multirate: a)Sample faster the current and its loop. The DC motor model can be used for BLDC Motor since it works under the same linear principles to control the torque-current relationship, P-I is enough. b) sample at half (good starting point) rate the speed with your decoder circuitry for the ENCODER is not a good idea, a voltage loop can be better, PID necesary. c) sample at last (a quarter of current sampling or less) the position. Here you need a feed-forward compensation to achieve stability with pole cancelation P-D. The litter integral gain, the better.
For the power electronics, there is a lot of paper for refrence.
Hope this can help, and sorry for the redaction english is my second languague