SOF / keep alives for recalibrating the internal RC
Posted: Wed Jun 25, 2014 10:38 pm
Hi all,
First of all, let me say something about the terminology. After searching for hours how the SOF handling in VUSB can actually work, i've found that there are actually no SOF packets for low speed devices. (It puzzled me how a SOF packet is recognized by only looking at the sync field, because SOF packets have the very same sync fields as all other packets.) Instead there are only keep alive pulses (low speed EOPs), details can be found in the USB specification by searching for keep alive strobes.
@obdevs: please consider updating the documentation/header/source code, because IMHO the term SOF is very misleading.
But now on the topic I'm looking into how to calibrate the internal RC on-the-fly. Eg. the FunkUSB module uses these keep alive pulses to recalibrate the RC. But there seems to be one catch: the keep alive pulses are defined as "at least one in every frame" (see 11.8.4.1 in USB 2.0 spec). Therefore, there might be multiple keep alives in one 1ms frame. I don't see any code in the FunkUSB firmware which accomplishes this. At least not the fact, that there might be more than one pulses per millisecond.
But maybe i get something very wrong
-michael
First of all, let me say something about the terminology. After searching for hours how the SOF handling in VUSB can actually work, i've found that there are actually no SOF packets for low speed devices. (It puzzled me how a SOF packet is recognized by only looking at the sync field, because SOF packets have the very same sync fields as all other packets.) Instead there are only keep alive pulses (low speed EOPs), details can be found in the USB specification by searching for keep alive strobes.
@obdevs: please consider updating the documentation/header/source code, because IMHO the term SOF is very misleading.
But now on the topic I'm looking into how to calibrate the internal RC on-the-fly. Eg. the FunkUSB module uses these keep alive pulses to recalibrate the RC. But there seems to be one catch: the keep alive pulses are defined as "at least one in every frame" (see 11.8.4.1 in USB 2.0 spec). Therefore, there might be multiple keep alives in one 1ms frame. I don't see any code in the FunkUSB firmware which accomplishes this. At least not the fact, that there might be more than one pulses per millisecond.
But maybe i get something very wrong
-michael