Экспериментирую с платой SK-LPC2478 (контроллер LPC2468) и USB.
С прилагаемого диска взял пример VirtualCOM от NXP (LPC214x/Keil) с двумя виртуальными COM-портами, портировал на IAR. Устройство обнаружилось, драйвер встал без ошибок на COM5 и 6, из терминала на COM5 передача работает в UART0, обратно d USB ничего не передается. Причем и скомпилированная в IAR версия и оригинальный HEX с диска работают одинаково. Нашел версию примера, которая периодически выдает в USB текст "Hello from LPC...". В терминале наблюдаю только этот текст. Данные с UART по прежнему не передаются. Если уменьшить задержку между посылками до 0,5 сек. текст перестает передаваться.

Собственно передача реализована в функции

DWORD USB_WriteEP (BYTE EPNum, BYTE *pData, DWORD cnt) {
DWORD n;

USB_CTRL = ((EPNum & 0x0F) << 2) | CTRL_WR_EN;

TX_PLENGTH = cnt;

for (n = 0; n < (cnt + 3) / 4; n++) {
TX_DATA = *((__packed DWORD *)pData);
pData += 4;
}

USB_CTRL = 0;

WrCmd(CMD_SEL_EP(EPAdr(EPNum)));
WrCmd(CMD_VALID_BUF);

return (cnt);
}

что тут может быть не так?

для обмена используется EP#2 в режиме BULK.
Проверял обработчик прерывания от EP, на прием все генерится нормально, на передачу прерывание происходит, только когда данные реально появились в терминале.
Иногда начинает передавать текст после отключения питания на несколько секунд и последующего включения, но после RESET снова пропадает передача.

Может есть другой рабочий пример для изучения? Поделитесь, кто чем пользуется. smile.gif