Hi All,
There are already several similar topics about 'babble' problems regarding the AM3352. In those topics, we could not find the solution for the specific problem we have.
We have a custom board with a AM3352 processor running Linux. The USB1 bus is configured as host and is used to connect to peripheral devices (mainly barcode readers). One barcode reader we use (Datalogic Heron HD3430, USB Full-Speed) somehow seems to have an incompatibility with our board which sometimes causes USB 'babble' interrupts during connection of the reader. The babble interrupt causes the USB bus to reset (including VBUS reset) and re-initialize again.
The babble interrupt seems to be generated only during initialization of the barcode reader: when the barcode reader is successfully connected it remains functioning without generating babble interrupts any more. Furthermore, the babble interrupt does not always happen: sometimes the barcode reader is successfully connected without generating a single babble interrupt.
We have tested our board with several other USB Full-Speed peripherals (barcode readers and other USB devices) and we have not been able to reproduce this babble issue yet on any of them other than the HD3430.
We have connected an Oscilloscope and captured USB1 D+, D- and VBUS during both the 'Babble interrupt' and during 'Successful connection' of the barcode reader (see comments for explanation):
In the 'babble' situation, it is observed that the host (AM3352) waits for ~3ms before sending the first SOF packet after the USB reset condition has been released. After ~4 SOF packets, the babble interrupt is generated (note that VBUS dips as a result of the babble interrupt and does not cause it).
In the 'normal'/'successfully connected' situation, the host starts with sending the first SOF packet within ~1ms. After ~98 SOF packets, an USB 'Get Descriptor' Transfer takes place to initialize the barcode reader. We have reproduced this many times: If the host waits with sending SOF packets after the USB reset condition is released, the babble interrupt will occur.
We also connected an USB protocol analyser in between the host and the barcode reader, which resulted in the same conclusion. When the host waits with sending SOF packets after the USB reset condition is released, the babble interrupt will occur (host sends reset condition):
Concluding, as an upcoming babble interrupt can be recognized by the host waiting with sending the first SOF packet, the root cause of the babble must be triggered before the first SOF is send by the host. Visualised:
Can anybody help me finding the root cause of the babble issue? More specific: how can the barcode reader (HD3430) influence the host (AM3352) in such a way that the host waits with sending SOF packages after the USB reset?
Many thanks in advance,
Jelmer Graat