Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: USB Host LPC2387
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Wano
День добрый.
Может кто подскажет по настройке первого USB порта как Host.
Ноги настроил так:
P0.29 - USB_D+
P0.30 - USB_D-

P1.18 - USB_UP_LED
P1.19 - USB_PPWR1 - подача питания на USB
P1.22 - USB_PWRD1 - состояние питания
P1.27 - USB_OVRCR1 - перегрузка питания, режим вывода без подтягивающих резисторов

в остальном как по примеру NXP

CODE
PCONP |= 0x80000000;
VICIntEnClr = (1 << 22); /* Enable the USB interrupt source */
VICSoftIntClr = (1 << 22);


OTG_CLK_CTRL|= 0x01;
while(OTG_CLK_STAT != 0x01);
pinsel = HC_REVISION;

/* P0[29] = USB_D+1 */
/* P0[30] = USB_D-1 */
PINSEL1&=0xC3FFFFFF;
PINSEL1|=0x14000000;

/* P1[18] = USB_UP_LED1 01 */
/* P1[19] = USB_PPWR1 10 */
/* P1[22] = USB_PWRD1 10 */
/* P1[27] = USB_OVRCR1 10 */
PINSEL3&=0xFF3FCF0F;
PINSEL3|=0x00802090;
PINMODE3|=0x00800000;

Hcca = (volatile HCCA *)0x7FD00000;
TDHead = (volatile HCTD *)0x7FD00100;
TDTail = (volatile HCTD *)0x7FD00110;
EDCtrl = (volatile HCED *)0x7FD00120;
EDBulkIn = (volatile HCED *)0x7FD00130;
EDBulkOut = (volatile HCED *)0x7FD00140;
TDBuffer = (volatile USB_INT08U *)0x7FD00150;
FATBuffer = (volatile USB_INT08U *)0x7FD001D0;
/* Initialize all the TDs, EDs and HCCA to 0 */
Host_EDInit(EDCtrl);
Host_EDInit(EDBulkIn);
Host_EDInit(EDBulkOut);
Host_TDInit(TDHead);
Host_TDInit(TDTail);
Host_HCCAInit(Hcca);


Host_DelayMS(50); /* Wait 50 ms before apply reset */
HcControl = 0; /* HARDWARE RESET */
HcControlHeadED = 0; /* Initialize Control list head to Zero */
HcBulkHeadED = 0; /* Initialize Bulk list head to Zero */

/* SOFTWARE RESET */
HcCommandStatus = OR_CMD_STATUS_HCR;
HcFmInterval = DEFAULT_FMINTERVAL; /* Write Fm Interval and Largest Data Packet Counter */

/* Put HC in operational state */
HcControl = (HcControl & (~OR_CONTROL_HCFS)) | OR_CONTROL_HC_OPER;
HcRhStatus = OR_RH_STATUS_LPSC;/* Set Global Power */

HcHCCA = (USB_INT32U)Hcca;
HcInterruptStatus |= HcInterruptStatus;/* Clear Interrrupt Status */
/* Enable interrupts */
HcInterruptEnable = OR_INTR_ENABLE_MIE |
OR_INTR_ENABLE_WDH |
OR_INTR_ENABLE_RHSC;

VICIntSelect &= ~(1 << 22); /* Configure the ISR handler */
VICVectPriority22 = 2;
VICVectAddr22 = (USB_INT32U)Host_Isr; /* Set the vector address */
VICIntEnable = (1 << 22); /* Enable the USB interrupt source */


После прохождения HcRhStatus = OR_RH_STATUS_LPSC; никаких признаков жизни на ножках будто порт вообще не подключен.
DpInRock
Цитата
P1.18 - USB_UP_LED
P1.19 - USB_PPWR1 - подача питания на USB
P1.22 - USB_PWRD1 - состояние питания
P1.27 - USB_OVRCR1 - перегрузка питания, режим вывода без подтягивающих резисторов

Зачем? Есть внешняя схемная поддержка?
Wano
Цитата(DpInRock @ Mar 14 2011, 13:58) *
Зачем? Есть внешняя схемная поддержка?


Да я подвесил контроллер питания MIC2025 .

Короче вопрос решился такими строчками :
USBPortSel &= ~0x03;
USBPortSel |= 0x01;
которые чудесным образом подключают первый порт к хосту. Только описаны они чего-то в разделе OTG , а в разделе HOST ни слова.
DpInRock
Особенность NXP даташитов.
Там в примерах имхо есть небольшая лажа для хоста, в месте в котором определяется подсоединение-отсоединение девайса.

Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.