|
USB LPC2142. проблема с приемом, постоянно приходит EOP error |
|
|
|
Aug 31 2008, 11:27
|
Группа: Новичок
Сообщений: 4
Регистрация: 31-08-08
Пользователь №: 39 906

|
Здравствуйте. Помогите кто может На сайте keil'a есть пару примеров под LPC2148 для USB. Пытаюсь запустить один из них (HID устройство) на LPC2142. Пока что безуспешно. Итак, ближе к делу. Инициализирую USB следующим образом: Код void USB_Init (void) { DWORD val = 0;
PCONP |= 0x80000000; /* Turn On USB PCLK */
// Configure 48MHz USB Clock; FOsc = 12MHz, M = 4, P = 2 PLL1CFG = 0x23; /* M = 4, P = 2 */ PLL1CON = PLLCON_PLLE; /* PLL Enable */ PLL1FEED = 0xAA; /* Feed Sequence 1 */ PLL1FEED = 0x55; /* Feed Sequence 2 */ while ((PLL1STAT & PLLSTAT_PLOCK) == 0); /* Wait for PLL Lock */
PLL1CON = PLLCON_PLLE | PLLCON_PLLC; /* PLL Enable & Connect */ PLL1FEED = 0xAA; /* Feed Sequence 1 */ PLL1FEED = 0x55; /* Feed Sequence 2 */
PINSEL1 = 0x80000000; /* select LED USB */
VICVectAddr0 = (unsigned long)USB_ISR; /* USB Interrupt -> Vector 0 */ VICVectCntl0 = 0x20 | 22; /* USB Interrupt -> IRQ Slot 0 */ VICIntEnable |= 1 << 22; /* Enable USB Interrupt */
USBDevIntEn = (1<<DEV_STAT); /* Enable Device Status Interrupt */
USB_Reset(); USB_SetAddress(0); } //Ресетю следующим образом: Код void USB_Reset (void) {
USBEpInd = 0; USBMaxPSize = USB_MAX_PACKET0; USBEpInd = 1; USBMaxPSize = USB_MAX_PACKET0; while ((USBDevIntSt & EP_RLZED_INT) == 0);
USBEpIntClr = 0xFFFFFFFF; USBEpIntEn = 0xFFFFFFFF; USBEpIntClr = 0xFFFFFFFF; USBDevIntClr = 0xFFFFFFFF; USBDevIntEn = DEV_STAT_INT | EP_SLOW_INT | (USB_SOF_EVENT ? FRAME_INT : 0) | ERR_INT; } В обработчике прерывания проверяю источник, вызвавший его. Получаю только ERR_INT - ошибка шины. Проверяю код ошибки - EOP, что обозначает ошибку конца пакета. Прерываниями от нулевой контрольной точки не пахнет и близко. Ведь она должна принимать пакеты SETUP'a по умолчанию ? Ребята плиз помогите. Уже не знаю что и думать.
--------------------

|
|
|
|
|
 |
Ответов
|
Dec 2 2013, 05:57
|
Группа: Новичок
Сообщений: 6
Регистрация: 29-11-13
Пользователь №: 79 430

|
Цитата(kovigor @ Dec 2 2013, 02:11)  Все так, но вот эта самая подтяжка выполняется именно устройством (Для LS нужно подтянуть (через сопротивление на 1.5КОм) к питанию линию "D-", а для FS нужно подтянуть к питанию линию "D+"). Хост же всегда подтягивает обе линии к земле через сопротивление в 15КОм. А у автора вопроса устройство неизвестно что и куда тянет ... все известно, в том и вопрос, если затянуть d+, все работает, если d- - нет.. хост четко скорость воспринимает, смотрел осциллом.. Цитата(Golikov A. @ Dec 2 2013, 01:17)  если не ошибаюсь скорость обмена задается хостом, определяется по тому куда подтянута какая то из линий данных, к 0 или к 1. И в дескрипторах тоже присутствует вроде как. до запроса дескриптора дело даже не доходит (
|
|
|
|
|
Dec 2 2013, 09:29
|
Группа: Новичок
Сообщений: 6
Регистрация: 29-11-13
Пользователь №: 79 430

|
Цитата(kovigor @ Dec 2 2013, 12:06)  Так в том-то и дело. Вчера ответил на ваш вопрос, а сегодня просто дополню, что этот МК LS .................... не поддерживает ! http://www.nxp.com/documents/user_manual/UM10360.pdfА зачем вам LS ? Я никогда за всю свою жизнь не видел хоста, который не поддерживал как минимум FS ... Да, меня тоже смутила фраза "The USB device controller on the LPC17xx enables full-speed (12 Mb/s) data exchange with a USB host controller.". Но в то же время, в распиновке выводов значится "Pad provides digital I/O and USB functions. It is designed in accordance with the USB specification, revision 2.0 (Full-speed and Low-speed mode only).". Более про low speed ни слова, и понимай, как хочешь. LS, я думаю, как обычно, для удешевления. Девайс серийный, поэтому экономят на всем, чем только можно. Да и объемы данных смешные.
|
|
|
|
|
Dec 2 2013, 09:32
|
Гуру
     
Группа: Свой
Сообщений: 5 273
Регистрация: 30-03-10
Пользователь №: 56 295

|
Цитата(jake.spb @ Dec 2 2013, 12:29)  Девайс серийный, поэтому экономят на всем, чем только можно. Да и объемы данных смешные. Смешно экономить на LS. И непонятно, как таким путем достигнуть экономии. Разве что за счет некондиционного кабеля, на котором, вероятно, сможет работать LS. Можно взять AVR вместо ARM (Cortex) и на нем реализовать программный LS. См. проекты Игоря Чешко. Решение никудышнее, но как-то работать будет ... Еще про экономию. Производителям сложнее реализовывать в МК обе скорости, ибо это усложняет и удорожает SIE. И, наконец, поддержка LS в таком мощном МК полностью лишена смысла ...
|
|
|
|
|
Dec 2 2013, 10:09
|
Группа: Новичок
Сообщений: 6
Регистрация: 29-11-13
Пользователь №: 79 430

|
Цитата(kovigor @ Dec 2 2013, 12:32)  Смешно экономить на LS. И непонятно, как таким путем достигнуть экономии. Хотя знаю - можно взять AVR вместо ARM (Cortex) и на нем реализовать программный LS. См. проекты Игоря Чешко. Решение никудышнее, но как-то работать будет ... Не могу точно сказать, наверное, чтобы избежать дополнительных фильтров. Девайс используется в плохих условиях в плане эмп. Но вопрос не в этом. Ясно, что если этот режим действительно не поддерживается, придется переделывать плату.
|
|
|
|
Сообщений в этой теме
o_bender USB LPC2142. проблема с приемом Aug 31 2008, 11:27 zltigo Цитата(o_bender @ Aug 31 2008, 13:27) На ... Aug 31 2008, 16:03 o_bender Цитата(zltigo @ Aug 31 2008, 19:03) Давай... Aug 31 2008, 20:48 zltigo В приложении банально собранный пример мышки для L... Sep 1 2008, 09:03 o_bender Залил прошивку. Подключил USB - никак не опряделяе... Sep 1 2008, 09:33  zltigo Цитата(o_bender @ Sep 1 2008, 11:33) Може... Sep 1 2008, 09:39 o_bender Ура!! Устройство заработало.
Причина как... Sep 1 2008, 14:52 jake.spb народ, сори за некропост! но столкнулся с анал... Dec 1 2013, 11:57        jake.spb Цитата(kovigor @ Dec 2 2013, 14:11) Я не ... Dec 2 2013, 11:40         kovigor Цитата(jake.spb @ Dec 2 2013, 14:40) Нали... Dec 2 2013, 12:14          jake.spb Цитата(kovigor @ Dec 2 2013, 15:14) После... Dec 2 2013, 13:27 Tahoe А в какой из библиотек/примеров, приличнее всего о... Dec 2 2013, 14:53
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|