Content originally posted in LPCWare by BrunoF on Wed Mar 20 00:38:28 MST 2013
Oh, im really sorry.
I didn't knew i was receiving posts. Im currently working with Isochronous again.
In that moment it wasn't working because i was missing the first rule of USB: [B]All transactions are initialized by the Host[/B].
So, i was sending an Isoc IN packet, but the Host wasn't listening to it (no pipe handler opened). So, i wrote a simple software in Host side(PC) that creates the handler, and data began to arrive without problems.
Now i need the opposite: Isoc OUT packets. It works, but i don't know why its missing the first frame (512 byte packet). First time i send a multi-frame packet works ok, but then it wont receive the first frame again. I patched this by software, just sending the first 512 bytes with dummy data, and creating a signature in the second frame to identify the package begining, but i would like to fix this.
I do have the code for OUT transactions. I think i lost the code for IN transactions. But IN transactions are even easier.
@claire chen
Two years later, here i go:
Using FIQ (USB high priority) is pretty similar to using IRQ (USB low priority),
just make sure you have:
USB_SOF_EVENT and USB_FIQ_EVENTset to 1 in usbcfg.h file.
and of course, you will need a proper usb descriptor, declaring EP 0x84 as Isoc.
Be sure your USB is configured before trying writing/reading to/from an endpoint, checking for USB_Configuration variable.
Remember that EP numbers for Isoc are fixed(0x04 (OUT) and 0x84 (IN)) and size is fixed too: 512 bytes.
So, max speed per EP for this device is 512 bytes in 1ms frame intervals. That's 4mbps(512kBps).
With LPC1768/69 you could achieve almost 8mbps(1023kBps).
Good luck!