Hi everybody
I created my project from the USB composite example for TWRK60, using KSDK 1.3.
On my custom board I have a quartz of 32KHz for the RTC (on the EXTAL32) and no oscillator.
Since external clock from the RTC can only be used as a source for the FLL, the MCG is operating in FEE mode, at 48 MHz for the USB (so I've set DMX32 and DRST_DRS bit of MCG_C4 to 1).
UART and peripherals initialization works fine, I've no problems, but during USB initialization (in particular in usb_dev_soc_init function) I have:
/* USB clock divider */ src=CLOCK_SYS_GetUsbfsSrc(usb_instance); switch(src) { case kClockUsbfsSrcExt: ret = USBERR_BAD_STATUS; break; case kClockUsbfsSrcPllFllSel: freq = CLOCK_SYS_GetPllFllClockFreq(); ret = USB_OK; switch(freq) { case 120000000U: CLOCK_SYS_SetUsbfsDiv(usb_instance, 4, 1); break; case 96000000U: CLOCK_SYS_SetUsbfsDiv(usb_instance, 1, 0); break; case 72000000U: CLOCK_SYS_SetUsbfsDiv(usb_instance, 2, 1); break; case 48000000U: CLOCK_SYS_SetUsbfsDiv(usb_instance, 0, 0); break; default: ret = USBERR_BAD_STATUS; break; } break; }
Variable freq is obtained from the ext clock (32768) multiplied by an FLL factor (1464 as reported in the datasheet), so its value is 32768*1464 = 47972352.
This value could never be identical to 48000000, so it always returns an error!
What can I do? I should replace these macros with the real values?
Thank you in advance.