What is the difference between InstaSpin and FOC ?

InstaSPIN-BLDC uses a "sensorless/self-sensored" back-emf integration technique to attempt to align commutation correctly at every 60 electrical degrees. It uses a standard 6-step, 2 legs active 1 leg off switching technique (which makes it simple because you always have a leg off for 60-120 degrees to measure voltage from) which has the benefit of utilizing the the full bus voltage (helps efficiency) but has drawbacks of nasty current ripple during switching, and start-ups are not very well controlled (hurts efficiency). BLDC techniques can (and usually should) be combined with current/torque and/or speed loops to provide a true control loop based system.

FOC is at its heart a closed loop current/torque control technique to maximize the torque production by controlling independently the torque producing and magnetizing components of the three phase currents so that the a rotating stator field is produced that allows for most efficient induced field on the rotor. This is done by Controlling the Orientation of these two components (Fields). To control the orientation you need to know the relative locations of the magnetic fields. This can be done through the use of a precise rotor sensor (encoder or resolver) or through sensorless/self-sensing techniques (sensed or reconstructed currents can be used to determine rotor flux magnitude and relative position/angle). The flux positions of the rotor and stator can be viewed as three dimensional vectors (hence the other term vector control). The torque control loop for maximum efficiency is based on the concept of aligning the two field vectors to a 90 degree relationship. This can be very difficult in three dimensions (four when you count the movement), so transforms are used (Clarke and Park) to convert these rotating vectors into easy to control DC components called Iq (Torque) and Id (Magnetizing). For maximum torque production we control Id to 0 and Iq to our needed torque (which could be fed by an outer speed loop). Id can also be manipulated for cases like field weakening where you trade off torque (and spend current) to produce much higher speeds. FOC techniques need to control all three legs of the 3PHI simultaneously, allowing the motor to pull three sine waves phase shifted120 degrees. The biggest challenge with FOC comes from needing to sample current/voltage while continuously switching each leg (this is assuming you are reading legs through a shunt and don't have access to in-line magnetic based measurements). Well, it's not really continuous because we are using PWM techniques at much faster rates (10-30KHz) to create an average voltage to represent where you are on each Sine Wave, so typically you do have "off-time" where you get the chance to sample the leg....But at very high (+/-) places on the sine wave that window gets very small or non-existent. And this is if you are measuring all three currents....go to 2 current measurements and you have to play some tricks and limit your duty cycle (really hurts efficiency) to get your samples....go to 1 current measurement and you REALLY have to play some tricks and limit duty cycle (really hurts efficiency. And yes, you also do things like modified sine waves (space vector) to actually shape the wave pseudo-sinusoidal / trapezoidal to get more bus voltage utilization.

Which method is more efficient ?

As you can probably guess, the answer is "depends". In general, all other things being equal the BLDC is going to give you a good baseline efficiency when you talk about efficiency at the operating point of the motor (90%+ of rated speed/torque). But there are all sorts of caveats here: bi-polar, uni-polar switching techniques, PWM/inverter switching losses, motor construction (some will have more iron losses, current ripple losses), and of course use conditions / profile, and even tuning of current loops.

Especially compared to a lot of sensorless FOC implementations...which to save "cost" on current sensing end up restricting their duty cycles so that you get less torque/speed. So you end up spending WAY more on an oversized motor and more electricity costs than paying upfront for current sensing that doesn't limit you.

But an FOC implementation that is using 3 x current sense with full modulation capabilities is going to be able to match (if not exceed in many cases) the OVERALL system efficiency.

Plus FOC brings many other benefits: better current control (Start-up and active can reduce ratings on power components), sine wave for less acoustic noise, faster response, tighter control, ability to choose a motor size that will utilize maximum torque during bulk of operation while having the capability to to use field weakening techniques when higher speed operation is needed (which is a smaller % of their lifetime). As an example, take the case of a washing machine that typically tumbles/spins at 50 RPM (drum rotation) for most of it's cycle, and then up to 500 RPM for initial spin cycle, then a short time at 750 RPM, then 1000 RPM, then 1200 RPM, then 1500 RPM briefly. What is the best option here?

With BLDC control you need to use a motor that can spin at 1500 RPM (15,000 RPM if you use a gear) at full modulation / voltage. What efficiency will you get when you need to run at 3% of rated (50 RPM, 500 RPM Geared) for most of it's lifetime? Why not use FOC and choose a motor rated for 500 RPM (5,000 geared). Get better efficiency (smaller motor) at 50 RPM 10% rated and then use field weakening for the brief amount of time to hit the higher speeds.

Which method allows better speed resolution ?

FOC because you have direct control of the torque. The output of a speed loop is a torque reference. Typically the speed loop runs at a 10x slower rate, so the torque loop has 10 cycles to control to the same set-point. FOC allows faster torque response to system changes and hence better speed control (you still need to tune speed loops in either case). Sensorless FOC can be challenging because the speed of the motor is completely estimate and most estimators introduce phase delay. So low speed and highest speed operation are very dependent on the quality of the sensing and the observer. If either are poor the speed loop tuning won't matter much, in which case BLDC would have been more robust.

Not exactly. The GUI allows you to tune the commutation and then (if you desire) run and tune velocity, current/torque, or velocity+torque.

You then take the source+library code provided, and can hard-code these settings (or allow some other means of tuning; or sets of values for different use cases).

It does NOT auto generate the updated code, that is still manual.

I'm primarily interested in FOC. I have many potential applications. One that stands out is a direct-drive router motor, which may have two or even one-tooth tooling. The rotational inertia of this system would be low. As such the load and accompanying phase lag is highly variable with rotor angle. As I understand it, FOC will give more reliable results than a BEMF system in this scenario.

What sort of FOC speed is achievable with the Stellaris LM3S818 when doing FOC? From what I've seen, the limiting factor here is processing loop time, as FOC is relatively calculating-intense. I have some motors which would be "nice" to get to the 20,000RPM range, as a 7-pole motor, so poles would need to be processed at 2.333KHz.

What are the liabilities of running a brushless motor at a significantly lower voltage than the free-running speed? For example, I have an 800KV motor here, rated for "3 lipo cells"= 3.7v * 3 = 11.1v = 8880RPM. I have a 24V power supply, that's the basic situation. I also would need to support lesser speeds, so I'd like to look at the electrical situation for that.

I used an inductance meter on a motor and see that it's about 30uH. If this was a 50KHz switching frequency at 50% duty, the ON-time is 10us. I am a bit unclear on how to model the motor, if I assume the BEMF is negligible (low speed) and had it on for 10us, I would expect the delta-current to be 10us*24v/30uH= +8A from the start of the ON-time to the end of a single PWM cycle. Is this calculation appropriate?

This strikes me as rather high, it is a lot to ask from the input cap and transistors. But won't an FOC have trouble measuring phase current with such a high ripple in the current? I see that the DRV8301 could go up to 500KHz, which would be substantially less. Does this increase the computational issues for a FOC system, or is it just greater switching losses to worry about?

Is there any difference in the overall situation if I were to use a motor intended for 11.1v on a 24v supply, but with a BEMF solution? This strikes me as less reliable, as the phase current is not the feedback, the BEMF is. If I'm correct in understanding how fast the phase current rises during a PWM ON-time, without measuring phase current, I'd be concerned that in some situations the currents could end up quite high and cause additional problems.

Also, I'm using the DRV8301. The 2 amps they have on-board, these are primarily for FOC, correct? Aren't 2 all that are needed, since the sum of all 3 must equal 0?