The way I've seen this done is via a table of time deltas. The first one or two iterations may be backwards so the table takes this into account. After the frist two entries, the time deltas decrease as the array is incrementelly accessed, with the assumption that angular acceleration is constant (however in the real world, it turns out that this table has to be tuned a bit by trial and error). In our case, Bemf should have been present after 7 or 8 "blind" steps, and the switch was made.
The iniitial algorithm started with a minimum voltage, then if the blind stepping failed to produce Bemf, the voltage was increased in small steps, and the blind step algorithm repeated. After a success full startup, the working voltage was reduced a bit to be used as the initial voltage for the next startup. There was some tweaking done of table values and voltage change during so the transition from blind to feedback loop was smooth, and by slowy adjusting the step timing versus the first sensing of Bemf.
