Hi All.
I'm going to create some kind of usb storage device, and I'm planning to use LPC2148 microcontroller in it. I need some advices. Is this controller suitable for such task? Can external flash memory be mapped to the controllers adress space (to work with it like with internal controllers memory in the programm)? Which protocol is better to choose for this task (which one will be faster) to connect external memory chip and controller: I2C or something else?
Thanks for your answers!
"I'm not sure yet will I stop on LPC2148 or on some of the HS MCUs."
I think you've already have a LPC2148 board. As Kevin suggested, start your USB study on it. You can make a prototype on LPC2148, though your final goal is the handling of 1-2GBytes data. Once you've learned on an USB MCU, this experience is easily applicable to most of USB MCUs.
As USB spec defines the behavior of USB engines on the device in details, the implementation of the USB engine is much the same for most of USB MCUs. Therefore, 80-90% of C source code is reusable even for other chip, just replacing the low-level handler.
There are no difference on the host application, even when you change the USB MCU for the device, as long as the device has the same USB configuration.
LPC2148 is equipped FS (Full-Speed) USB engine. Then, you cannot expect so fast transfer speed.
Practical speed of FS bulk is 800 KBytes or so (Theoretically, 19 transaction/frame at most).
64 (bytes/packet) x 13 (transaction /frame) x 1000 (frame /sec) = about 800 (KBytes/sec)
As of FS HID, about 64 Kbytes/sec at most. It's the limit of interrupt transfer, on which HID is established. 64 (bytes/packet) x 1 (transaction /frame) x 1000 (frame /sec) = about 64 (KBytes/sec)
Tsuneo