Hi
I would like to give some information about USB support for the various LPC devices.
For the moment USB device mode is being extended to include the LPC214X, LPC23XX and LPC17XX.
- The LPC214X is the smallest USB capable device, supporting device but not host mode.
- The LPC23XX and LPC17XX support device, host and OTG modes.
The USB device controllers are FIFO based but most of the devices have also additional, optional DMA support, with an area of RAM specifically for this use.
The present state of development allows the FIFO based operation (CDC class as reference) to operate on the LPC2148, LPC2378 and LPC1766 reference boards. The USB device controller is almost identical in all of these chips, with just some differences in the set up of the ports and also the configuration of the USB clock [the LPC2148 and LPC1766 derive it from a dedicated PLL and the LPC2378 derives it from the processor's main clock].
Although the control of the serial interface engine (SIE) via a command interface requires a bit of learning (and experimentation), the USB controller proved to be highly autonomous. This means that it doesn't need much software control of things like data toggling, which can be a bit tricky with some devices and require keeping backups of various flags to get it all right.
With the 3 references operating correctly as standard CDC devices (allowing menu interface, RS232<->USB etc.) in basic FIFO mode the next step is to add DMA support for the devices which allow this (which are most - just the simpler ones like LPC2141/2/4 don't).
In parallel, a USB mass storage device class is being worked on to go with general SD card support, allowing the SD card to be seen as a hard disk at the PC host.
It is thus anticipated that this important addition to both the LPC2XXX and LPC17XX projects will be able to be released in the fairly near future. Not only will this give an interesting improvement of functionality but will shoot the LPC17XX project up to a mature status (thanks to the fact that has been used successfully in some first projects and because its peripherals are highly compatible with existing ones from the LPC2XXX project)!!
Regards
Mark