USB Host mode Host init error 3 LPC54605J256

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

USB Host mode Host init error 3 LPC54605J256

231 Views
SOOTY1
Contributor I

Hi friends,

I'm having a problem trying to init the usb host.  No matter what I try, it keeps giving error 3 - can't locate driver instance?  Any insight welcome.  thank you.

LPC54605J256.  Custom board.

I have some parts of the usb seemingly operational -
here's the main, and prints of the usb system.

I am a newcomer to embedded so I have probably overlooked something, perhaps in the usb numbering, or the extra usb init in main.  I have tried to only use the config tools. 

Clocks, pins and peripherals are all looking good, relevant usb pins, host mode, nvic, enabled.  fsl-power.h is included.  USB is taking PLL at 48Mhz.  I have the correct resistor REXT value.  All config tools defined USB pins and USBHSH are defined as demanded by tool.

USBID is, not tied in any direction, but that can be forced with portmode as I understood it? 


Power is provided to the keypad.  VUSB - 4.5v.  LED lights on the keypad, but as init fails, nothing more happens : )

I have checked the controller ID.  I'm using for High Speed Host.
#define CONTROLLER_ID kUSB_ControllerIp3516Hs0
it is declared in host config.h as 1U


int main(void)
{
vPortDefineHeapRegions(xHeapRegions);

BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitBootPeripherals();

SEGGER_RTT_Init();

PRINTF("System Booting...\r\n");

/* USB1 HS PHY POWER */
POWER_DisablePD(kPDRUNCFG_PD_USB1_PHY);

/* ENABLE USB1 HS HOST CLOCK */
CLOCK_EnableClock(kCLOCK_Usbh1);
CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);

/* FORCE USB1 INTO HOST MODE */
USBHSH->PORTMODE &= ~(1UL << 16);
USBHSH->PORTMODE |= (1UL << 16);

/* Small delay for PHY */
for (volatile uint32_t d = 0; d < 180000; d++) __NOP();

PRINTF("USB PORTMODE = 0x%08lX\r\n", USBHSH->PORTMODE);
PRINTF("USBHSH->PORTSC1 = 0x%08lX\r\n", USBHSH->PORTSC1);
PRINTF("USBHSH->USBSTS = 0x%08lX\r\n", USBHSH->USBSTS);
PRINTF("USBHSH->USBCMD = 0x%08lX\r\n", USBHSH->USBCMD);

/* START USB HOST STACK */
usb_status_t usbStatus = USB_HostInit(CONTROLLER_ID, &g_HostHandle, USB_HostEvent);

if (usbStatus == kStatus_USB_Success)
{
PRINTF("USB HOST INIT OK\r\n");
}
else
{
PRINTF("USB HOST INIT FAILED: %d\r\n", (int)usbStatus);
}

Process: JLinkGDBServerCLExe
System Booting...
USB PORTMODE = 0x00050000
USBHSH->PORTSC1 = 0x00001000
USBHSH->USBSTS = 0x00000000
USBHSH->USBCMD = 0x00000501
USB HOST INIT FAILED: 3
Starting scheduler...

Labels (1)
0 Kudos
Reply
8 Replies

18 Views
SOOTY1
Contributor I

@carlos_o  hi, just to show the register value is not changing even after setting with config tools and visible in clockconfig.c generated file -

System Booting...
Core clock = 96000000 Hz
After BOARD_InitBootClocks:
USB PLL freq = 0 Hz
Clock enable returned: 1
USB PLL freq = 0 Hz
USB1CLK freq = 0 Hz
USB PORTMODE = 0x00050000
USBHSH->PORTSC1 = 0x00001000
USBHSH->USBSTS = 0x00000000
USBHSH->USBCMD = 0x00000501

--- USB CLOCK DIAGNOSTICS ---
USBPLLCTRL : 0x00000D3F
USBPLLSTAT : 0x00000001
USB1CLKSEL : 0x00000002
USB1CLKDIV : 0x00000000
PDRUNCFG : 0x40000610
--- END USB CLOCK DIAGNOSTICS ---

USB_HostInit failed with status 3

look we can see that, even though the clockconfig.c states USB1CLK is set to MAINCLKSELA -

it is not actually changing the register value - 

void BOARD_BootClockRUN(void)
{
/*!< Set up the clock sources */
/*!< Set up FRO */
POWER_DisablePD(kPDRUNCFG_PD_FRO_EN); /*!< Ensure FRO is on */
CLOCK_AttachClk(kFRO12M_to_MAIN_CLK); /*!< Switch to FRO 12MHz first to ensure we can change voltage without accidentally
being below the voltage for current speed */
POWER_DisablePD(kPDRUNCFG_PD_SYS_OSC); /*!< Enable System Oscillator Power */
SYSCON->SYSOSCCTRL = ((SYSCON->SYSOSCCTRL & ~SYSCON_SYSOSCCTRL_FREQRANGE_MASK) | SYSCON_SYSOSCCTRL_FREQRANGE(1U)); /*!< Set system oscillator range */
/*!< Need to make sure ROM and OTP has power(PDRUNCFG0[17,29]= 0U)
before calling this API since this API is implemented in ROM code */
CLOCK_SetupFROClocking(12000000U); /*!< Set up FRO to the 12 MHz, just for sure */
POWER_SetVoltageForFreq(96000000U); /*!< Set voltage for the one of the fastest clock outputs: System clock output */
CLOCK_SetFLASHAccessCyclesForFreq(96000000U); /*!< Set FLASH wait states for core */

/*!< Set up SYS PLL */
const pll_setup_t pllSetup = {
.pllctrl = SYSCON_SYSPLLCTRL_SELI(16U) | SYSCON_SYSPLLCTRL_SELP(8U) | SYSCON_SYSPLLCTRL_SELR(0U),
.pllmdec = (SYSCON_SYSPLLMDEC_MDEC(8191U)),
.pllndec = (SYSCON_SYSPLLNDEC_NDEC(770U)),
.pllpdec = (SYSCON_SYSPLLPDEC_PDEC(98U)),
.pllRate = 180000000U,
.flags = PLL_SETUPFLAG_WAITLOCK | PLL_SETUPFLAG_POWERUP
};
CLOCK_AttachClk(kEXT_CLK_to_SYS_PLL); /*!< Set sys pll clock source*/
CLOCK_SetPLLFreq(&pllSetup); /*!< Configure PLL to the desired value */
/*!< Set up AUDIO PLL */
const pll_setup_t audio_pllSetup = {
.pllctrl = SYSCON_AUDPLLCTRL_SELI(59U) | SYSCON_AUDPLLCTRL_SELP(31U) | SYSCON_AUDPLLCTRL_SELR(0U),
.pllmdec = (SYSCON_AUDPLLMDEC_MDEC(30583U)),
.pllndec = (SYSCON_AUDPLLNDEC_NDEC(1U)),
.pllpdec = (SYSCON_AUDPLLPDEC_PDEC(5U)),
.pllRate = 48000000U,
.flags = PLL_SETUPFLAG_WAITLOCK | PLL_SETUPFLAG_POWERUP
};
CLOCK_AttachClk(kEXT_CLK_to_AUDIO_PLL); /*!< Set audio pll clock source*/
CLOCK_SetAudioPLLFreq(&audio_pllSetup); /*!< Configure PLL to the desired value */

/*!< Set up USB PLL */
const usb_pll_setup_t usb_pllSetup = {
.msel = 95U,
.nsel = 3U,
.psel = 0U,
.direct = true,
.bypass = false,
.fbsel = false,
.inputRate = 12000000U,
};
CLOCK_SetUsbPLLFreq(&usb_pllSetup); /*!< Configure PLL to the desired value */

/*!< Need to make sure ROM and OTP has power(PDRUNCFG0[17,29]= 0U)
before calling this API since this API is implemented in ROM code */
CLOCK_SetupFROClocking(96000000U); /*!< Set up high frequency FRO output to selected frequency */

/*!< Set up dividers */
CLOCK_SetClkDiv(kCLOCK_DivAhbClk, 1U, false); /*!< Reset divider counter and set divider to value 1 */
CLOCK_SetClkDiv(kCLOCK_DivUsb0Clk, 0U, true); /*!< Reset USB0CLKDIV divider counter and halt it */
CLOCK_SetClkDiv(kCLOCK_DivUsb0Clk, 6U, false); /*!< Set USB0CLKDIV divider to value 6 */
CLOCK_SetClkDiv(kCLOCK_DivUsb1Clk, 0U, true); /*!< Reset USB1CLKDIV divider counter and halt it */
CLOCK_SetClkDiv(kCLOCK_DivUsb1Clk, 2U, false); /*!< Set USB1CLKDIV divider to value 2 */
CLOCK_SetClkDiv(kCLOCK_DivSctClk, 0U, true); /*!< Reset SCTCLKDIV divider counter and halt it */
CLOCK_SetClkDiv(kCLOCK_DivSctClk, 48U, false); /*!< Set SCTCLKDIV divider to value 48 */

/*!< Set up clock selectors - Attach clocks to the peripheries */
CLOCK_AttachClk(kFRO_HF_to_MAIN_CLK); /*!< Switch MAIN_CLK to FRO_HF */
SYSCON->ASYNCAPBCTRL = SYSCON_ASYNCAPBCTRL_ENABLE_MASK; /*!< Enable ASYNC APB subsystem */
CLOCK_AttachClk(kMAIN_CLK_to_ASYNC_APB); /*!< Switch ASYNC_APB to MAIN_CLK */
CLOCK_AttachClk(kUSB_PLL_to_USB0_CLK); /*!< Switch USB0_CLK to USB_PLL */
CLOCK_AttachClk(kFRO_HF_to_USB1_CLK); /*!< Switch USB1_CLK to MAIN_CLK */
CLOCK_AttachClk(kAUDIO_PLL_to_FLEXCOMM2); /*!< Switch FLEXCOMM2 to AUDIO_PLL */
CLOCK_AttachClk(kAUDIO_PLL_to_FLEXCOMM3); /*!< Switch FLEXCOMM3 to AUDIO_PLL */
CLOCK_AttachClk(kAUDIO_PLL_to_FLEXCOMM5); /*!< Switch FLEXCOMM5 to AUDIO_PLL */
CLOCK_AttachClk(kAUDIO_PLL_to_FLEXCOMM7); /*!< Switch FLEXCOMM7 to AUDIO_PLL */
CLOCK_AttachClk(kAUDIO_PLL_to_SCT_CLK); /*!< Switch SCT_CLK to AUDIO_PLL */
/*!< Set SystemCoreClock variable. */
SystemCoreClock = BOARD_BOOTCLOCKRUN_CORE_CLOCK;
}

(from main shown here)
int main(void)
{
vPortDefineHeapRegions(xHeapRegions);

BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitBootPeripherals();

SEGGER_RTT_Init();

PRINTF("System Booting...\r\n");
PRINTF("Core clock = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_CoreSysClk));
PRINTF("After BOARD_InitBootClocks:\n");
PRINTF("USB PLL freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));

/* === Recommended Power-up Order === */
POWER_DisablePD(kPDRUNCFG_PD_VD2_ANA); // Crystal analog domain - FIRST
POWER_DisablePD(kPDRUNCFG_PD_VD3); // PLL domain
POWER_DisablePD(kPDRUNCFG_PD_VD5); // PHY domain
POWER_DisablePD(kPDRUNCFG_PD_USB_PLL);
POWER_DisablePD(kPDRUNCFG_PD_USB1_PHY);


SDK_DelayAtLeastUs(15000, SystemCoreClock); // 15ms — give crystal time to stabilize

/* Force crystal oscillator */
SYSCON->SYSOSCCTRL = 0x00000000;

// CLOCK_EnableClock(kCLOCK_Usbh1);

status_t clkStatus = CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);
PRINTF("Clock enable returned: %d\r\n", clkStatus);

PRINTF("USB PLL freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));
PRINTF("USB1CLK freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbClk));

/* Force Host mode - bit 16 */
USBHSH->PORTMODE &= ~(1UL << 16);
USBHSH->PORTMODE |= (1UL << 16);

PRINTF("USB PORTMODE = 0x%08lX\r\n", USBHSH->PORTMODE);
PRINTF("USBHSH->PORTSC1 = 0x%08lX\r\n", USBHSH->PORTSC1);
PRINTF("USBHSH->USBSTS = 0x%08lX\r\n", USBHSH->USBSTS);
PRINTF("USBHSH->USBCMD = 0x%08lX\r\n", USBHSH->USBCMD);
PRINTF("\r\n--- USB CLOCK DIAGNOSTICS ---\r\n");

/* USB PLL state */
PRINTF("USBPLLCTRL : 0x%08lX\r\n", SYSCON->USBPLLCTRL);
PRINTF("USBPLLSTAT : 0x%08lX\r\n", SYSCON->USBPLLSTAT);

/* USB1 clock mux + divider */
PRINTF("USB1CLKSEL : 0x%08lX\r\n", SYSCON->USB1CLKSEL);
PRINTF("USB1CLKDIV : 0x%08lX\r\n", SYSCON->USB1CLKDIV);

/* Power gating snapshot */
PRINTF("PDRUNCFG : 0x%08lX\r\n", SYSCON->PDRUNCFG);


/* Optional SDK-level view (if available) */
// PRINTF("USB1CLK freq: %lu\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));

PRINTF("--- END USB CLOCK DIAGNOSTICS ---\r\n\r\n");

/* Init stack */
usb_status_t status = USB_HostInit(CONTROLLER_ID, &g_HostHandle, USB_HostEvent);
if (status != kStatus_USB_Success) {
PRINTF("USB_HostInit failed with status %d\r\n", status);
}

0 Kudos
Reply

112 Views
SOOTY1
Contributor I

I tried some more and it seems USB clock is failing to attach properly and run.  It is selected correctly in clock config with 48Mhz input, from USBPLL.

int main(void)
{
vPortDefineHeapRegions(xHeapRegions);

BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitBootPeripherals();

SEGGER_RTT_Init();

PRINTF("System Booting...\r\n");
PRINTF("Core clock = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_CoreSysClk));

/* Power and Clock */
POWER_DisablePD(kPDRUNCFG_PD_USB1_PHY);
POWER_DisablePD(kPDRUNCFG_PD_VD2_ANA); // External crystal analog domain
POWER_DisablePD(kPDRUNCFG_PD_VD3); // USB PLL domain
POWER_DisablePD(kPDRUNCFG_PD_VD5); // USB PHY domain
SDK_DelayAtLeastUs(1500, SystemCoreClock);
CLOCK_EnableClock(kCLOCK_Usbh1);
CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);  [I don't know should it be 48M or 480M here neither work anyway]

PRINTF("USB PLL freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));
PRINTF("USB1CLK freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbClk));
/* Force Host mode - bit 16 */
USBHSH->PORTMODE &= ~(1UL << 16);
USBHSH->PORTMODE |= (1UL << 16);

PRINTF("USB PORTMODE = 0x%08lX\r\n", USBHSH->PORTMODE);
PRINTF("USBHSH->PORTSC1 = 0x%08lX\r\n", USBHSH->PORTSC1);
PRINTF("USBHSH->USBSTS = 0x%08lX\r\n", USBHSH->USBSTS);
PRINTF("USBHSH->USBCMD = 0x%08lX\r\n", USBHSH->USBCMD);
PRINTF("\r\n--- USB CLOCK DIAGNOSTICS ---\r\n");

/* USB PLL state */
PRINTF("USBPLLCTRL : 0x%08lX\r\n", SYSCON->USBPLLCTRL);
PRINTF("USBPLLSTAT : 0x%08lX\r\n", SYSCON->USBPLLSTAT);

/* USB1 clock mux + divider */
PRINTF("USB1CLKSEL : 0x%08lX\r\n", SYSCON->USB1CLKSEL);
PRINTF("USB1CLKDIV : 0x%08lX\r\n", SYSCON->USB1CLKDIV);

/* Power gating snapshot */
PRINTF("PDRUNCFG : 0x%08lX\r\n", SYSCON->PDRUNCFG);


/* Optional SDK-level view (if available) */
// PRINTF("USB1CLK freq: %lu\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));

PRINTF("--- END USB CLOCK DIAGNOSTICS ---\r\n\r\n");

/* Init stack */
usb_status_t status = USB_HostInit(CONTROLLER_ID, &g_HostHandle, USB_HostEvent);
if (status != kStatus_USB_Success) {
PRINTF("USB_HostInit failed with status %d)\r\n", status);
}

gives - 

Process: JLinkGDBServerCLExe
System Booting...
Core clock = 180000000 Hz
USB PLL freq = 0 Hz
USB1CLK freq = 0 Hz
USB PORTMODE = 0x00050000
USBHSH->PORTSC1 = 0x00001000
USBHSH->USBSTS = 0x00000000
USBHSH->USBCMD = 0x00000501

--- USB CLOCK DIAGNOSTICS ---
USBPLLCTRL : 0x00000D3F
USBPLLSTAT : 0x00000001
USB1CLKSEL : 0x00000002
USB1CLKDIV : 0x00000000
PDRUNCFG : 0x40000610
--- END USB CLOCK DIAGNOSTICS ---

USB_HostInit failed with status 3)

Is it something in the powerup sequence is incorrect?  I really don't know now.
I have tried so long on this.  I think the incorrect driver/not found is also a separate thing.
I have even less of an idea with that - I have it registered in the .map, enabled in the host_config, included in the build, present in the workspace . .

0 Kudos
Reply

196 Views
SOOTY1
Contributor I

I put in some more print statements to look at the clock.  It's set up right in clocks tool, but seems not to be running normally?

/* ====================== MAIN ====================== */
int main(void)
{
vPortDefineHeapRegions(xHeapRegions);

BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitBootPeripherals();

SEGGER_RTT_Init();

PRINTF("System Booting...\r\n");

/* USB1 HS PHY POWER */
// POWER_DisablePD(kPDRUNCFG_PD_USB1_PHY);

/* ENABLE USB1 HS HOST CLOCK */
// CLOCK_EnableClock(kCLOCK_Usbh1);

// CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);
// status_t status;

// status = CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 480000000U);

// PRINTF("USB host clock init status = %d\r\n", status);

/* FORCE USB1 INTO HOST MODE */
USBHSH->PORTMODE &= ~(1UL << 16);
USBHSH->PORTMODE |= (1UL << 16);

/* Small delay for PHY */
for (volatile uint32_t d = 0; d < 180000; d++) __NOP();

PRINTF("USB PORTMODE = 0x%08lX\r\n", USBHSH->PORTMODE);
PRINTF("USBHSH->PORTSC1 = 0x%08lX\r\n", USBHSH->PORTSC1);
PRINTF("USBHSH->USBSTS = 0x%08lX\r\n", USBHSH->USBSTS);
PRINTF("USBHSH->USBCMD = 0x%08lX\r\n", USBHSH->USBCMD);
PRINTF("\r\n--- USB CLOCK DIAGNOSTICS ---\r\n");

/* USB PLL state */
PRINTF("USBPLLCTRL : 0x%08lX\r\n", SYSCON->USBPLLCTRL);
PRINTF("USBPLLSTAT : 0x%08lX\r\n", SYSCON->USBPLLSTAT);

/* USB1 clock mux + divider */
PRINTF("USB1CLKSEL : 0x%08lX\r\n", SYSCON->USB1CLKSEL);
PRINTF("USB1CLKDIV : 0x%08lX\r\n", SYSCON->USB1CLKDIV);

/* Power gating snapshot */
PRINTF("PDRUNCFG : 0x%08lX\r\n", SYSCON->PDRUNCFG);


/* SDK-level view */
PRINTF("USB1CLK freq: %lu\r\n", CLOCK_GetFreq(kCLOCK_UsbClk));

PRINTF("--- END USB CLOCK DIAGNOSTICS ---\r\n\r\n");

/* START USB HOST STACK */
usb_status_t usbStatus = USB_HostInit(CONTROLLER_ID, &g_HostHandle, USB_HostEvent);

if (usbStatus == kStatus_USB_Success)
{
PRINTF("USB HOST INIT OK\r\n");
}
else
{
PRINTF("USB HOST INIT FAILED: %d\r\n", (int)usbStatus);
}

System Booting...
USB PORTMODE = 0x00050000
USBHSH->PORTSC1 = 0x00001000
USBHSH->USBSTS = 0x00000000
USBHSH->USBCMD = 0x00000501

--- USB CLOCK DIAGNOSTICS ---
USBPLLCTRL : 0x00001017
USBPLLSTAT : 0x00000001
USB1CLKSEL : 0x00000002
USB1CLKDIV : 0x00000005
PDRUNCFG : 0x40000610
USB1CLK freq: 0
--- END USB CLOCK DIAGNOSTICS ---



0 Kudos
Reply

44 Views
SOOTY1
Contributor I

@carlos_o 

I'm still having the problems with the SDK (see thread for more details)


I have today changed SDK to 25.06.00 and updated the Config Tools to 26.03 also

I still get the USB Host init fail error code 3.  PLL is not starting, even though it seems configured by the book in the config tools clock tree.  


Any insight is very welcome.
thanks,

0 Kudos
Reply

41 Views
carlos_o
NXP TechSupport
NXP TechSupport

Hi @SOOTY1 

Apologize the late reply and thank you for the detailed testing you have done.

Could you please remove the call to

CLOCK_EnableClock(kCLOCK_Usbh1);

before calling
 
CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);
 
The reason is that the clock enable is already handled inside CLOCK_EnableUsbhs0HostClock(). Additionally, some peripherals must be disabled before changing their configuration, and enabling the clock beforehand may prevent proper reconfiguration.
 
Let me know your results. 
0 Kudos
Reply

33 Views
SOOTY1
Contributor I

@carlos_o hi, no worries, thanks for getting back to me!

Ok I removed the clock call as suggested.   It is still failing though.
What's strange is that it reports the USB1CLKDIV as 0x0 every time. (its div by 6 derived from 288Mhz USBPLL) but maybe that's because its not running PLL yet?  Even without any of this power up sequence it wasn't starting up PLL.  I do have a 12Mz xtal on the board. 

I also tried to change the settings away from USBPLL, to MAINCLKSELA - with 96Mhz divided down to feed USB1CLK, but although I could see Core clock Freq. change to 96Mhz, USBCLKDIV remained 0x0 (selected was /2) and USBCLKSEL 0x00000002. (should have changed value to reflect MAINCLKSELA)
I don't know what to make of that.

System Booting...
Core clock = 180000000 Hz
After BOARD_InitBootClocks:
USB PLL freq = 0 Hz
Clock enable returned: 1
USB PLL freq = 0 Hz
USB1CLK freq = 0 Hz
USB PORTMODE = 0x00050000
USBHSH->PORTSC1 = 0x00001000
USBHSH->USBSTS = 0x00000000
USBHSH->USBCMD = 0x00000501

--- USB CLOCK DIAGNOSTICS ---
USBPLLCTRL : 0x00000D3F
USBPLLSTAT : 0x00000001
USB1CLKSEL : 0x00000002
USB1CLKDIV : 0x00000000
PDRUNCFG : 0x40000610
--- END USB CLOCK DIAGNOSTICS ---

USB_HostInit failed with status 3



current main is 

int main(void)
{
vPortDefineHeapRegions(xHeapRegions);

BOARD_InitBootPins();
BOARD_InitBootClocks();
BOARD_InitBootPeripherals();

SEGGER_RTT_Init();

PRINTF("System Booting...\r\n");
PRINTF("Core clock = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_CoreSysClk));
PRINTF("After BOARD_InitBootClocks:\n");
PRINTF("USB PLL freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));

/* === Recommended Power-up Order === */
POWER_DisablePD(kPDRUNCFG_PD_VD2_ANA); // Crystal analog domain - FIRST
POWER_DisablePD(kPDRUNCFG_PD_SYS_OSC);
POWER_DisablePD(kPDRUNCFG_PD_VD3); // PLL domain
POWER_DisablePD(kPDRUNCFG_PD_VD5); // PHY domain
POWER_DisablePD(kPDRUNCFG_PD_USB_PLL);
POWER_DisablePD(kPDRUNCFG_PD_USB1_PHY);


SDK_DelayAtLeastUs(15000, SystemCoreClock); // 15ms — give crystal time to stabilize

/* Force crystal oscillator */
SYSCON->SYSOSCCTRL = 0x00000000;

// CLOCK_EnableClock(kCLOCK_Usbh1);

status_t clkStatus = CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);
PRINTF("Clock enable returned: %d\r\n", clkStatus);

PRINTF("USB PLL freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));
PRINTF("USB1CLK freq = %lu Hz\r\n", CLOCK_GetFreq(kCLOCK_UsbClk));

/* Force Host mode - bit 16 */
USBHSH->PORTMODE &= ~(1UL << 16);
USBHSH->PORTMODE |= (1UL << 16);

PRINTF("USB PORTMODE = 0x%08lX\r\n", USBHSH->PORTMODE);
PRINTF("USBHSH->PORTSC1 = 0x%08lX\r\n", USBHSH->PORTSC1);
PRINTF("USBHSH->USBSTS = 0x%08lX\r\n", USBHSH->USBSTS);
PRINTF("USBHSH->USBCMD = 0x%08lX\r\n", USBHSH->USBCMD);
PRINTF("\r\n--- USB CLOCK DIAGNOSTICS ---\r\n");

/* USB PLL state */
PRINTF("USBPLLCTRL : 0x%08lX\r\n", SYSCON->USBPLLCTRL);
PRINTF("USBPLLSTAT : 0x%08lX\r\n", SYSCON->USBPLLSTAT);

/* USB1 clock mux + divider */
PRINTF("USB1CLKSEL : 0x%08lX\r\n", SYSCON->USB1CLKSEL);
PRINTF("USB1CLKDIV : 0x%08lX\r\n", SYSCON->USB1CLKDIV);

/* Power gating snapshot */
PRINTF("PDRUNCFG : 0x%08lX\r\n", SYSCON->PDRUNCFG);


/* Optional SDK-level view (if available) */
// PRINTF("USB1CLK freq: %lu\r\n", CLOCK_GetFreq(kCLOCK_UsbPll));

PRINTF("--- END USB CLOCK DIAGNOSTICS ---\r\n\r\n");

/* Init stack */
usb_status_t status = USB_HostInit(CONTROLLER_ID, &g_HostHandle, USB_HostEvent);
if (status != kStatus_USB_Success) {
PRINTF("USB_HostInit failed with status %d\r\n", status);
}

0 Kudos
Reply

209 Views
carlos_o
NXP TechSupport
NXP TechSupport

Hi @SOOTY1,

Thanks for your post!

Could please share which SDK version you are using?

Please review the return value of CLOCK_EnableUsbhs0HostClock.

You could refer to the USB Host examples at the SDK for the LPCXpresso54608 board but that examples use USB FS instead of HS. 

To have high-speed USB operating, the CPU clock must be configured to a
minimum frequency of 60 MHz.

BR.

 

0 Kudos
Reply

206 Views
SOOTY1
Contributor I

Hi Carlos, thanks for your quick reply. 

I'm using SDK 2.14.0 (I tried to use more modern, but it failed on a, I believe also a USB driver actually - IDE stated mismatch between SDK (latest) and needed (older) driver) Sorry I don't remember the details of that now.

I'm using a CPU system clock of 180Mhz. 

with this - 

CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);
status_t status;

status = CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll, 48000000U);

PRINTF("USB host clock init status = %d\r\n", status);


I return -
USB host clock init status = 1

does that help?

 

0 Kudos
Reply
%3CLINGO-SUB%20id%3D%22lingo-sub-2363586%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3EUSB%20Host%20mode%20Host%20init%20error%203%20LPC54605J256%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2363586%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20friends%2C%3C%2FP%3E%3CP%3EI'm%20having%20a%20problem%20trying%20to%20init%20the%20usb%20host.%26nbsp%3B%20No%20matter%20what%20I%20try%2C%20it%20keeps%20giving%20error%203%20-%20can't%20locate%20driver%20instance%3F%26nbsp%3B%20Any%20insight%20welcome.%26nbsp%3B%20thank%20you.%3C%2FP%3E%3CP%3ELPC54605J256.%26nbsp%3B%20Custom%20board.%3CBR%20%2F%3E%3CBR%20%2F%3EI%20have%20some%20parts%20of%20the%20usb%20seemingly%20operational%20-%3CBR%20%2F%3Ehere's%20the%20main%2C%20and%20prints%20of%20the%20usb%20system.%3CBR%20%2F%3E%3CBR%20%2F%3EI%20am%20a%20newcomer%20to%20embedded%20so%20I%20have%20probably%20overlooked%20something%2C%20perhaps%20in%20the%20usb%20numbering%2C%20or%20the%20extra%20usb%20init%20in%20main.%26nbsp%3B%20I%20have%20tried%20to%20only%20use%20the%20config%20tools.%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3EClocks%2C%20pins%20and%20peripherals%20are%20all%20looking%20good%2C%20relevant%20usb%20pins%2C%20host%20mode%2C%20nvic%2C%20enabled.%26nbsp%3B%20fsl-power.h%20is%20included.%26nbsp%3B%20USB%20is%20taking%20PLL%20at%2048Mhz.%26nbsp%3B%20I%20have%20the%20correct%20resistor%20REXT%20value.%26nbsp%3B%20All%20config%20tools%20defined%20USB%20pins%20and%20USBHSH%20are%20defined%20as%20demanded%20by%20tool.%3CBR%20%2F%3E%3CBR%20%2F%3EUSBID%20is%2C%20not%20tied%20in%20any%20direction%2C%20but%20that%20can%20be%20forced%20with%20portmode%20as%20I%20understood%20it%3F%26nbsp%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EPower%20is%20provided%20to%20the%20keypad.%26nbsp%3B%20VUSB%20-%204.5v.%26nbsp%3B%20LED%20lights%20on%20the%20keypad%2C%20but%20as%20init%20fails%2C%20nothing%20more%20happens%20%3A%20)%3CBR%20%2F%3E%3CBR%20%2F%3EI%20have%20checked%20the%20controller%20ID.%26nbsp%3B%20I'm%20using%20for%20High%20Speed%20Host.%3CBR%20%2F%3E%23define%20CONTROLLER_ID%20kUSB_ControllerIp3516Hs0%3CBR%20%2F%3Eit%20is%20declared%20in%20host%20config.h%20as%201U%3CBR%20%2F%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3Eint%20main(void)%3CBR%20%2F%3E%7B%3CBR%20%2F%3EvPortDefineHeapRegions(xHeapRegions)%3B%3C%2FP%3E%3CP%3EBOARD_InitBootPins()%3B%3CBR%20%2F%3EBOARD_InitBootClocks()%3B%3CBR%20%2F%3EBOARD_InitBootPeripherals()%3B%3C%2FP%3E%3CP%3ESEGGER_RTT_Init()%3B%3C%2FP%3E%3CP%3EPRINTF(%22System%20Booting...%5Cr%5Cn%22)%3B%3C%2FP%3E%3CP%3E%2F*%20USB1%20HS%20PHY%20POWER%20*%2F%3CBR%20%2F%3EPOWER_DisablePD(kPDRUNCFG_PD_USB1_PHY)%3B%3C%2FP%3E%3CP%3E%2F*%20ENABLE%20USB1%20HS%20HOST%20CLOCK%20*%2F%3CBR%20%2F%3ECLOCK_EnableClock(kCLOCK_Usbh1)%3B%3CBR%20%2F%3ECLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll%2C%2048000000U)%3B%3C%2FP%3E%3CP%3E%2F*%20FORCE%20USB1%20INTO%20HOST%20MODE%20*%2F%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTMODE%20%26amp%3B%3D%20~(1UL%20%26lt%3B%26lt%3B%2016)%3B%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTMODE%20%7C%3D%20(1UL%20%26lt%3B%26lt%3B%2016)%3B%3C%2FP%3E%3CP%3E%2F*%20Small%20delay%20for%20PHY%20*%2F%3CBR%20%2F%3Efor%20(volatile%20uint32_t%20d%20%3D%200%3B%20d%20%26lt%3B%20180000%3B%20d%2B%2B)%20__NOP()%3B%3C%2FP%3E%3CP%3EPRINTF(%22USB%20PORTMODE%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BPORTMODE)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BPORTSC1%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BPORTSC1)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BUSBSTS%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BUSBSTS)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BUSBCMD%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BUSBCMD)%3B%3C%2FP%3E%3CP%3E%2F*%20START%20USB%20HOST%20STACK%20*%2F%3CBR%20%2F%3Eusb_status_t%20usbStatus%20%3D%20USB_HostInit(CONTROLLER_ID%2C%20%26amp%3Bg_HostHandle%2C%20USB_HostEvent)%3B%3C%2FP%3E%3CP%3Eif%20(usbStatus%20%3D%3D%20kStatus_USB_Success)%3CBR%20%2F%3E%7B%3CBR%20%2F%3EPRINTF(%22USB%20HOST%20INIT%20OK%5Cr%5Cn%22)%3B%3CBR%20%2F%3E%7D%3CBR%20%2F%3Eelse%3CBR%20%2F%3E%7B%3CBR%20%2F%3EPRINTF(%22USB%20HOST%20INIT%20FAILED%3A%20%25d%5Cr%5Cn%22%2C%20(int)usbStatus)%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3EProcess%3A%20JLinkGDBServerCLExe%3CBR%20%2F%3ESystem%20Booting...%3CBR%20%2F%3EUSB%20PORTMODE%20%3D%200x00050000%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTSC1%20%3D%200x00001000%3CBR%20%2F%3EUSBHSH-%26gt%3BUSBSTS%20%3D%200x00000000%3CBR%20%2F%3EUSBHSH-%26gt%3BUSBCMD%20%3D%200x00000501%3CBR%20%2F%3EUSB%20HOST%20INIT%20FAILED%3A%203%3CBR%20%2F%3EStarting%20scheduler...%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-2363586%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CLINGO-LABEL%3ELPC546xx%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2363851%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20USB%20Host%20mode%20Host%20init%20error%203%20LPC54605J256%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2363851%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20put%20in%20some%20more%20print%20statements%20to%20look%20at%20the%20clock.%26nbsp%3B%20It's%20set%20up%20right%20in%20clocks%20tool%2C%20but%20seems%20not%20to%20be%20running%20normally%3F%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3E%2F*%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20MAIN%20%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%3D%20*%2F%3CBR%20%2F%3Eint%20main(void)%3CBR%20%2F%3E%7B%3CBR%20%2F%3EvPortDefineHeapRegions(xHeapRegions)%3B%3C%2FP%3E%3CP%3EBOARD_InitBootPins()%3B%3CBR%20%2F%3EBOARD_InitBootClocks()%3B%3CBR%20%2F%3EBOARD_InitBootPeripherals()%3B%3C%2FP%3E%3CP%3ESEGGER_RTT_Init()%3B%3C%2FP%3E%3CP%3EPRINTF(%22System%20Booting...%5Cr%5Cn%22)%3B%3C%2FP%3E%3CP%3E%2F*%20USB1%20HS%20PHY%20POWER%20*%2F%3CBR%20%2F%3E%2F%2F%20POWER_DisablePD(kPDRUNCFG_PD_USB1_PHY)%3B%3C%2FP%3E%3CP%3E%2F*%20ENABLE%20USB1%20HS%20HOST%20CLOCK%20*%2F%3CBR%20%2F%3E%2F%2F%20CLOCK_EnableClock(kCLOCK_Usbh1)%3B%3C%2FP%3E%3CP%3E%2F%2F%20CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll%2C%2048000000U)%3B%3CBR%20%2F%3E%2F%2F%20status_t%20status%3B%3C%2FP%3E%3CP%3E%2F%2F%20status%20%3D%20CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll%2C%20480000000U)%3B%3C%2FP%3E%3CP%3E%2F%2F%20PRINTF(%22USB%20host%20clock%20init%20status%20%3D%20%25d%5Cr%5Cn%22%2C%20status)%3B%3C%2FP%3E%3CP%3E%2F*%20FORCE%20USB1%20INTO%20HOST%20MODE%20*%2F%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTMODE%20%26amp%3B%3D%20~(1UL%20%26lt%3B%26lt%3B%2016)%3B%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTMODE%20%7C%3D%20(1UL%20%26lt%3B%26lt%3B%2016)%3B%3C%2FP%3E%3CP%3E%2F*%20Small%20delay%20for%20PHY%20*%2F%3CBR%20%2F%3Efor%20(volatile%20uint32_t%20d%20%3D%200%3B%20d%20%26lt%3B%20180000%3B%20d%2B%2B)%20__NOP()%3B%3C%2FP%3E%3CP%3EPRINTF(%22USB%20PORTMODE%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BPORTMODE)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BPORTSC1%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BPORTSC1)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BUSBSTS%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BUSBSTS)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BUSBCMD%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BUSBCMD)%3B%3CBR%20%2F%3EPRINTF(%22%5Cr%5Cn---%20USB%20CLOCK%20DIAGNOSTICS%20---%5Cr%5Cn%22)%3B%3C%2FP%3E%3CP%3E%2F*%20USB%20PLL%20state%20*%2F%3CBR%20%2F%3EPRINTF(%22USBPLLCTRL%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSBPLLCTRL)%3B%3CBR%20%2F%3EPRINTF(%22USBPLLSTAT%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSBPLLSTAT)%3B%3C%2FP%3E%3CP%3E%2F*%20USB1%20clock%20mux%20%2B%20divider%20*%2F%3CBR%20%2F%3EPRINTF(%22USB1CLKSEL%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSB1CLKSEL)%3B%3CBR%20%2F%3EPRINTF(%22USB1CLKDIV%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSB1CLKDIV)%3B%3C%2FP%3E%3CP%3E%2F*%20Power%20gating%20snapshot%20*%2F%3CBR%20%2F%3EPRINTF(%22PDRUNCFG%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BPDRUNCFG)%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%2F*%20SDK-level%20view%20*%2F%3CBR%20%2F%3EPRINTF(%22USB1CLK%20freq%3A%20%25lu%5Cr%5Cn%22%2C%20CLOCK_GetFreq(kCLOCK_UsbClk))%3B%3C%2FP%3E%3CP%3EPRINTF(%22---%20END%20USB%20CLOCK%20DIAGNOSTICS%20---%5Cr%5Cn%5Cr%5Cn%22)%3B%3C%2FP%3E%3CP%3E%2F*%20START%20USB%20HOST%20STACK%20*%2F%3CBR%20%2F%3Eusb_status_t%20usbStatus%20%3D%20USB_HostInit(CONTROLLER_ID%2C%20%26amp%3Bg_HostHandle%2C%20USB_HostEvent)%3B%3C%2FP%3E%3CP%3Eif%20(usbStatus%20%3D%3D%20kStatus_USB_Success)%3CBR%20%2F%3E%7B%3CBR%20%2F%3EPRINTF(%22USB%20HOST%20INIT%20OK%5Cr%5Cn%22)%3B%3CBR%20%2F%3E%7D%3CBR%20%2F%3Eelse%3CBR%20%2F%3E%7B%3CBR%20%2F%3EPRINTF(%22USB%20HOST%20INIT%20FAILED%3A%20%25d%5Cr%5Cn%22%2C%20(int)usbStatus)%3B%3CBR%20%2F%3E%7D%3C%2FP%3E%3CP%3ESystem%20Booting...%3CBR%20%2F%3EUSB%20PORTMODE%20%3D%200x00050000%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTSC1%20%3D%200x00001000%3CBR%20%2F%3EUSBHSH-%26gt%3BUSBSTS%20%3D%200x00000000%3CBR%20%2F%3EUSBHSH-%26gt%3BUSBCMD%20%3D%200x00000501%3C%2FP%3E%3CP%3E---%20USB%20CLOCK%20DIAGNOSTICS%20---%3CBR%20%2F%3EUSBPLLCTRL%20%3A%200x00001017%3CBR%20%2F%3EUSBPLLSTAT%20%3A%200x00000001%3CBR%20%2F%3EUSB1CLKSEL%20%3A%200x00000002%3CBR%20%2F%3EUSB1CLKDIV%20%3A%200x00000005%3CBR%20%2F%3EPDRUNCFG%20%3A%200x40000610%3CBR%20%2F%3EUSB1CLK%20freq%3A%200%3CBR%20%2F%3E---%20END%20USB%20CLOCK%20DIAGNOSTICS%20---%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2363621%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20USB%20Host%20mode%20Host%20init%20error%203%20LPC54605J256%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2363621%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%20Carlos%2C%20thanks%20for%20your%20quick%20reply.%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3EI'm%20using%20SDK%202.14.0%20(I%20tried%20to%20use%20more%20modern%2C%20but%20it%20failed%20on%20a%2C%20I%20believe%20also%20a%20USB%20driver%20actually%20-%20IDE%20stated%20mismatch%20between%20SDK%20(latest)%20and%20needed%20(older)%20driver)%20Sorry%20I%20don't%20remember%20the%20details%20of%20that%20now.%3CBR%20%2F%3E%3CBR%20%2F%3EI'm%20using%20a%20CPU%20system%20clock%20of%20180Mhz.%26nbsp%3B%3CBR%20%2F%3E%3CBR%20%2F%3Ewith%20this%20-%26nbsp%3B%3C%2FP%3E%3CP%3ECLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll%2C%2048000000U)%3B%3CBR%20%2F%3Estatus_t%20status%3B%3C%2FP%3E%3CP%3Estatus%20%3D%20CLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll%2C%2048000000U)%3B%3C%2FP%3E%3CP%3E%3CSPAN%3EPRINTF(%22USB%20host%20clock%20init%20status%20%3D%20%25d%5Cr%5Cn%22%2C%20status)%3B%3C%2FSPAN%3E%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EI%20return%20-%3CBR%20%2F%3EUSB%20host%20clock%20init%20status%20%3D%201%3CBR%20%2F%3E%3CBR%20%2F%3Edoes%20that%20help%3F%3C%2FP%3E%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2363619%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20USB%20Host%20mode%20Host%20init%20error%203%20LPC54605J256%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2363619%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F262626%22%20target%3D%22_blank%22%3E%40SOOTY1%3C%2FA%3E%2C%3C%2FP%3E%0A%3CP%3EThanks%20for%20your%20post!%3C%2FP%3E%0A%3CP%3ECould%20please%20share%20which%20SDK%20version%20you%20are%20using%3F%3C%2FP%3E%0A%3CP%3EPlease%20review%20the%20return%20value%20of%26nbsp%3BCLOCK_EnableUsbhs0HostClock.%3C%2FP%3E%0A%3CP%3EYou%20could%20refer%20to%20the%20USB%20Host%20examples%20at%20the%20SDK%20for%20the%20LPCXpresso54608%20board%20but%20that%20examples%20use%20USB%20FS%20instead%20of%20HS.%26nbsp%3B%3C%2FP%3E%0A%3CP%3ETo%20have%20high-speed%20USB%20operating%2C%20the%20CPU%20clock%20must%20be%20configured%20to%20a%20%3CBR%20%2F%3Eminimum%20frequency%20of%2060%20MHz.%3C%2FP%3E%0A%3CP%3EBR.%3C%2FP%3E%0A%3CBR%20%2F%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2364289%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20USB%20Host%20mode%20Host%20init%20error%203%20LPC54605J256%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2364289%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EI%20tried%20some%20more%20and%20it%20seems%20USB%20clock%20is%20failing%20to%20attach%20properly%20and%20run.%26nbsp%3B%20It%20is%20selected%20correctly%20in%20clock%20config%20with%2048Mhz%20input%2C%20from%20USBPLL.%3CBR%20%2F%3E%3CBR%20%2F%3E%3C%2FP%3E%3CP%3Eint%20main(void)%3CBR%20%2F%3E%7B%3CBR%20%2F%3EvPortDefineHeapRegions(xHeapRegions)%3B%3C%2FP%3E%3CP%3EBOARD_InitBootPins()%3B%3CBR%20%2F%3EBOARD_InitBootClocks()%3B%3CBR%20%2F%3EBOARD_InitBootPeripherals()%3B%3C%2FP%3E%3CP%3ESEGGER_RTT_Init()%3B%3C%2FP%3E%3CP%3EPRINTF(%22System%20Booting...%5Cr%5Cn%22)%3B%3CBR%20%2F%3EPRINTF(%22Core%20clock%20%3D%20%25lu%20Hz%5Cr%5Cn%22%2C%20CLOCK_GetFreq(kCLOCK_CoreSysClk))%3B%3C%2FP%3E%3CP%3E%2F*%20Power%20and%20Clock%20*%2F%3CBR%20%2F%3EPOWER_DisablePD(kPDRUNCFG_PD_USB1_PHY)%3B%3CBR%20%2F%3EPOWER_DisablePD(kPDRUNCFG_PD_VD2_ANA)%3B%20%2F%2F%20External%20crystal%20analog%20domain%3CBR%20%2F%3EPOWER_DisablePD(kPDRUNCFG_PD_VD3)%3B%20%2F%2F%20USB%20PLL%20domain%3CBR%20%2F%3EPOWER_DisablePD(kPDRUNCFG_PD_VD5)%3B%20%2F%2F%20USB%20PHY%20domain%3CBR%20%2F%3ESDK_DelayAtLeastUs(1500%2C%20SystemCoreClock)%3B%3CBR%20%2F%3ECLOCK_EnableClock(kCLOCK_Usbh1)%3B%3CBR%20%2F%3ECLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll%2C%2048000000U)%3B%26nbsp%3B%20%5BI%20don't%20know%20should%20it%20be%2048M%20or%20480M%20here%20neither%20work%20anyway%5D%3C%2FP%3E%3CP%3EPRINTF(%22USB%20PLL%20freq%20%3D%20%25lu%20Hz%5Cr%5Cn%22%2C%20CLOCK_GetFreq(kCLOCK_UsbPll))%3B%3CBR%20%2F%3EPRINTF(%22USB1CLK%20freq%20%3D%20%25lu%20Hz%5Cr%5Cn%22%2C%20CLOCK_GetFreq(kCLOCK_UsbClk))%3B%3CBR%20%2F%3E%2F*%20Force%20Host%20mode%20-%20bit%2016%20*%2F%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTMODE%20%26amp%3B%3D%20~(1UL%20%26lt%3B%26lt%3B%2016)%3B%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTMODE%20%7C%3D%20(1UL%20%26lt%3B%26lt%3B%2016)%3B%3C%2FP%3E%3CP%3EPRINTF(%22USB%20PORTMODE%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BPORTMODE)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BPORTSC1%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BPORTSC1)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BUSBSTS%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BUSBSTS)%3B%3CBR%20%2F%3EPRINTF(%22USBHSH-%26gt%3BUSBCMD%20%3D%200x%2508lX%5Cr%5Cn%22%2C%20USBHSH-%26gt%3BUSBCMD)%3B%3CBR%20%2F%3EPRINTF(%22%5Cr%5Cn---%20USB%20CLOCK%20DIAGNOSTICS%20---%5Cr%5Cn%22)%3B%3C%2FP%3E%3CP%3E%2F*%20USB%20PLL%20state%20*%2F%3CBR%20%2F%3EPRINTF(%22USBPLLCTRL%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSBPLLCTRL)%3B%3CBR%20%2F%3EPRINTF(%22USBPLLSTAT%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSBPLLSTAT)%3B%3C%2FP%3E%3CP%3E%2F*%20USB1%20clock%20mux%20%2B%20divider%20*%2F%3CBR%20%2F%3EPRINTF(%22USB1CLKSEL%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSB1CLKSEL)%3B%3CBR%20%2F%3EPRINTF(%22USB1CLKDIV%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BUSB1CLKDIV)%3B%3C%2FP%3E%3CP%3E%2F*%20Power%20gating%20snapshot%20*%2F%3CBR%20%2F%3EPRINTF(%22PDRUNCFG%20%3A%200x%2508lX%5Cr%5Cn%22%2C%20SYSCON-%26gt%3BPDRUNCFG)%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3E%2F*%20Optional%20SDK-level%20view%20(if%20available)%20*%2F%3CBR%20%2F%3E%2F%2F%20PRINTF(%22USB1CLK%20freq%3A%20%25lu%5Cr%5Cn%22%2C%20CLOCK_GetFreq(kCLOCK_UsbPll))%3B%3C%2FP%3E%3CP%3EPRINTF(%22---%20END%20USB%20CLOCK%20DIAGNOSTICS%20---%5Cr%5Cn%5Cr%5Cn%22)%3B%3C%2FP%3E%3CP%3E%2F*%20Init%20stack%20*%2F%3CBR%20%2F%3Eusb_status_t%20status%20%3D%20USB_HostInit(CONTROLLER_ID%2C%20%26amp%3Bg_HostHandle%2C%20USB_HostEvent)%3B%3CBR%20%2F%3Eif%20(status%20!%3D%20kStatus_USB_Success)%20%7B%3CBR%20%2F%3EPRINTF(%22USB_HostInit%20failed%20with%20status%20%25d)%5Cr%5Cn%22%2C%20status)%3B%3CBR%20%2F%3E%7D%3CBR%20%2F%3E%3CBR%20%2F%3Egives%20-%26nbsp%3B%3C%2FP%3E%3CP%3EProcess%3A%20JLinkGDBServerCLExe%3CBR%20%2F%3ESystem%20Booting...%3CBR%20%2F%3ECore%20clock%20%3D%20180000000%20Hz%3CBR%20%2F%3EUSB%20PLL%20freq%20%3D%200%20Hz%3CBR%20%2F%3EUSB1CLK%20freq%20%3D%200%20Hz%3CBR%20%2F%3EUSB%20PORTMODE%20%3D%200x00050000%3CBR%20%2F%3EUSBHSH-%26gt%3BPORTSC1%20%3D%200x00001000%3CBR%20%2F%3EUSBHSH-%26gt%3BUSBSTS%20%3D%200x00000000%3CBR%20%2F%3EUSBHSH-%26gt%3BUSBCMD%20%3D%200x00000501%3C%2FP%3E%3CP%3E---%20USB%20CLOCK%20DIAGNOSTICS%20---%3CBR%20%2F%3EUSBPLLCTRL%20%3A%200x00000D3F%3CBR%20%2F%3EUSBPLLSTAT%20%3A%200x00000001%3CBR%20%2F%3EUSB1CLKSEL%20%3A%200x00000002%3CBR%20%2F%3EUSB1CLKDIV%20%3A%200x00000000%3CBR%20%2F%3EPDRUNCFG%20%3A%200x40000610%3CBR%20%2F%3E---%20END%20USB%20CLOCK%20DIAGNOSTICS%20---%3C%2FP%3E%3CP%3EUSB_HostInit%20failed%20with%20status%203)%3CBR%20%2F%3E%3CBR%20%2F%3EIs%20it%20something%20in%20the%20powerup%20sequence%20is%20incorrect%3F%26nbsp%3B%20I%20really%20don't%20know%20now.%3CBR%20%2F%3EI%20have%20tried%20so%20long%20on%20this.%26nbsp%3B%20I%20think%20the%20incorrect%20driver%2Fnot%20found%20is%20also%20a%20separate%20thing.%3CBR%20%2F%3EI%20have%20even%20less%20of%20an%20idea%20with%20that%20-%20I%20have%20it%20registered%20in%20the%20.map%2C%20enabled%20in%20the%20host_config%2C%20included%20in%20the%20build%2C%20present%20in%20the%20workspace%20.%20.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2365115%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20USB%20Host%20mode%20Host%20init%20error%203%20LPC54605J256%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2365115%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3E%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F241501%22%20target%3D%22_blank%22%3E%40carlos_o%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%3CP%3EI'm%20still%20having%20the%20problems%20with%20the%20SDK%20(see%20thread%20for%20more%20details)%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EI%20have%20today%20changed%20SDK%20to%2025.06.00%20and%20updated%20the%20Config%20Tools%20to%2026.03%20also%3CBR%20%2F%3E%3CBR%20%2F%3EI%20still%20get%20the%20USB%20Host%20init%20fail%20error%20code%203.%26nbsp%3B%20PLL%20is%20not%20starting%2C%20even%20though%20it%20seems%20configured%20by%20the%20book%20in%20the%20config%20tools%20clock%20tree.%26nbsp%3B%26nbsp%3B%3C%2FP%3E%3CP%3E%3CBR%20%2F%3EAny%20insight%20is%20very%20welcome.%3CBR%20%2F%3Ethanks%2C%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-2365117%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%20translate%3D%22no%22%3ERe%3A%20USB%20Host%20mode%20Host%20init%20error%203%20LPC54605J256%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-2365117%22%20slang%3D%22en-US%22%20mode%3D%22CREATE%22%3E%3CP%3EHi%26nbsp%3B%3CA%20href%3D%22https%3A%2F%2Fcommunity.nxp.com%2Ft5%2Fuser%2Fviewprofilepage%2Fuser-id%2F262626%22%20target%3D%22_blank%22%3E%40SOOTY1%3C%2FA%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3EApologize%20the%20late%20reply%20and%20thank%20you%20for%20the%20detailed%20testing%20you%20have%20done.%3C%2FP%3E%0A%3CP%3ECould%20you%20please%20remove%20the%20call%20to%3C%2FP%3E%0A%3CP%3ECLOCK_EnableClock(kCLOCK_Usbh1)%3B%3C%2FP%3E%0A%3CDIV%3Ebefore%20calling%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%3CSPAN%3ECLOCK_EnableUsbhs0HostClock(kCLOCK_UsbSrcUsbPll%2C%2048000000U)%3B%3C%2FSPAN%3E%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3E%3CSPAN%3EThe%20reason%20is%20that%20the%20clock%20enable%20is%20already%20handled%20inside%20CLOCK_EnableUsbhs0HostClock().%20Additionally%2C%20some%20peripherals%20must%20be%20disabled%20before%20changing%20their%20configuration%2C%20and%20enabling%20the%20clock%20beforehand%20may%20prevent%20proper%20reconfiguration.%3CBR%20%2F%3E%3C%2FSPAN%3E%3C%2FDIV%3E%0A%3CDIV%3E%26nbsp%3B%3C%2FDIV%3E%0A%3CDIV%3ELet%20me%20know%20your%20results.%26nbsp%3B%3C%2FDIV%3E%3C%2FLINGO-BODY%3E