AnsweredAssumed Answered

bf70x USB hangs up

Question asked by sgeorge on Apr 14, 2017
Latest reply on Sep 22, 2017 by sgeorge

Hello.

We're using own USB CDC&HID driver (non-rtos). The case described below also applicable for CLD CDC driver.

 

We're working on reducing power consumption by changing cclk/sclk frequencies (all tests were on BLIP board):

1. Set core_freq: 400000000; sys_clk: 200000000:

 

ADI_PWR_RESULT pwr_res = adi_pwr_Init(0, 25000000);
assert(pwr_res == ADI_PWR_SUCCESS);

 

uint32_t cclk, sclk, sclk0, sclk1, dclk;
if (mode == pm_sleep) {
cclk = 200000000;
sclk = 200000000;
}
else {
cclk = 400000000;
sclk = 200000000;
}

pwr_res = adi_pwr_SetFreq(0, cclk, sclk);
assert(pwr_res == ADI_PWR_SUCCESS);

 

2. init and start usb controller (CDC&HID using IAD - composite device). USB PLL is configured:

 

uint8_t usb_pll_m = (uint8_t)ceilf(480000000.0/25000000.0);
*pREG_USB0_PLL_OSC = (usb_pll_m << BITP_USB_PLL_OSC_PLLM) | BITM_USB_PLL_OSC_PLLMSEL;

 

(CLKIN for calculating PLLM - USB_CLKIN or SYS_CLKIN????)

 

3. Send data from host over bulk(out) and receive answer. 

4. Set core_freq: 200000000; sys_clk: 200000000:

5. Send data from host over bulk(out) and receive answer.

6. Set core_freq: 400000000; sys_clk: 200000000.

 

Repeat 3-6 about 10-15 times - USB hangs up. There is timeout about 5sec 4->5 and 6->3.

 

We think that the reason is sync issue between BF PLL and USB XTAL.

 

Is there USB settings to pass this issue?

 

Thank you.

Outcomes