Нашел решение снижения потребления этого чипа.
Надеюсь что кому-то пригодится.
Необходимо включить PLL48 и дать возможность USB периферии проинициализироваться. Это важно даже если она не будет использоваться или как в моем случае еще до того как она будет использована.
Что-то такое:
void USBinit_and_off(void)
{
//4. USB run to clear
// set the pull up - P0.31 pin17
FIO0MASK &= ~(1‹‹31);
FIO0DIR |= (1‹‹31);
FIO0CLR |= (1‹‹31);
PCONP |= 0x80000000; /* Turn On USB PCLK */
/* Configure 48MHz USB Clock; FOsc = 12MHz, M = 4, P = 2 */
PLL48CFG = 0x23; /* M = 4, P = 2 */
PLL48CON = PLLCON_PLLE; /* PLL Enable */
PLL48FEED = 0xAA; /* Feed Sequence 1 */
PLL48FEED = 0x55; /* Feed Sequence 2 */
while ((PLL48STAT & PLLSTAT_LOCK) == 0); /* Wait for PLL Lock */
PLL48CON = PLLCON_PLLE | PLLCON_PLLC; /* PLL Enable & Connect */
PLL48FEED = 0xAA; /* Feed Sequence 1 */
PLL48FEED = 0x55; /* Feed Sequence 2 */
//wait while need clock is set
while ( (USBSTINT & 0x00000100) != 0x0 );
//switch off need of USB
PCONP &= ~0x80000000;
}
Нужно иметь ввиду что D- должен быть в этот момент подтянут к "1", а D+ к "0"
подтяжкой к 1 задействован выход P0.31:
// set the pull up - P0.31 pin17
D+ притянут 100К к земле
собственно и D- тоже притянут 100К к земле - как замечено это еще лучше сказывается на потреблении
Владимир
|