The issue is that the USB is very time critical and really needs to be interrupt driven. SERIN does not use interrupts, so if you are in the middle of receiving something with SERIN, and the USB demands attention, you drop the packet, or worse, part of the packet on the floor. HSERIN can use interrupts, and so you can manage the 2 independent flows, by requesting a pause, or bouncing back and forth between the two workflows.
Still tricky to acomplish, but at least there's hope of success. A lot depends on your application. For example, you might be able to only have information sent by request, and only request when you are sure you'll have uninterrupted time to process, and thereby get away with SERIN. But a truly asynchronous SERIN or SERIN2 and an asynchronous USB is bound to be unreliable and error prone.
Bookmarks