Content originally posted in LPCWare by Tsuneo on Tue Jul 24 20:12:10 MST 2012
If you were a hobbyist who could take the risk that your board occasionally fail on USB, you might go with the internal RC OSC. But for product design, which should always work, a crystal (or a high-accuracy resonator) is required, to satisfy +/-0.25% tolerance for Full-Speed on the USB spec.
Thanking to 4x oversampling DPLL, USB engine can decode bus signal up to around +/-25% deviation. Therefore, deviated clock works in most cases. But when host schedules a transaction at the end of frame, and when the device is too slow, babble error (transaction overlaps on SOF timing) occurs.
Tsuneo