EugenyAM 0 24 сентября, 2010 Опубликовано 24 сентября, 2010 · Жалоба Экспериментирую с платой 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 снова пропадает передача. Может есть другой рабочий пример для изучения? Поделитесь, кто чем пользуется. :) Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться