@@ -527,31 +527,32 @@ void AXP192::SetLCDRSet(bool state)
527527 Write1Byte (reg_addr, data);
528528}
529529
530+ // Select source for BUS_5V
531+ // 0 : use internal boost
532+ // 1 : powered externally
530533void AXP192::SetBusPowerMode (uint8_t state)
531534{
532535 uint8_t data;
533536 if (state == 0 )
534537 {
538+ // Set GPIO to 3.3V (LDO OUTPUT mode)
535539 data = Read8bit (0x91 );
536- Write1Byte (0x91 , (data & 0X0F ) | 0XF0 );
537-
540+ Write1Byte (0x91 , (data & 0x0F ) | 0xF0 );
541+ // Set GPIO0 to LDO OUTPUT, pullup N_VBUSEN to disable VBUS supply from BUS_5V
538542 data = Read8bit (0x90 );
539- Write1Byte (0x90 , (data & 0XF8 ) | 0X02 ); // set GPIO0 to LDO OUTPUT , pullup N_VBUSEN to disable supply from BUS_5V
540-
541- data = Read8bit (0x91 );
542-
543- data = Read8bit (0x12 ); // read reg 0x12
544- Write1Byte (0x12 , data | 0x40 ); // set EXTEN to enable 5v boost
543+ Write1Byte (0x90 , (data & 0xF8 ) | 0x02 );
544+ // Set EXTEN to enable 5v boost
545+ data = Read8bit (0x10 );
546+ Write1Byte (0x10 , data | 0x04 );
545547 }
546548 else
547549 {
548- data = Read8bit (0x12 ); // read reg 0x10
549- Write1Byte (0x12 , data & 0XBF ); // set EXTEN to disable 5v boost
550-
551- // delay(2000);
552-
550+ // Set EXTEN to disable 5v boost
551+ data = Read8bit (0x10 );
552+ Write1Byte (0x10 , data & ~0x04 );
553+ // Set GPIO0 to float, using enternal pulldown resistor to enable VBUS supply from BUS_5V
553554 data = Read8bit (0x90 );
554- Write1Byte (0x90 , (data & 0xF8 ) | 0X01 ); // set GPIO0 to float , using enternal pulldown resistor to enable supply from BUS_5VS
555+ Write1Byte (0x90 , (data & 0xF8 ) | 0x07 );
555556 }
556557}
557558
0 commit comments