@@ -551,31 +551,32 @@ void AXP192::SetLCDRSet(bool state)
551551 Write1Byte (reg_addr, data);
552552}
553553
554+ // Select source for BUS_5V
555+ // 0 : use internal boost
556+ // 1 : powered externally
554557void AXP192::SetBusPowerMode (uint8_t state)
555558{
556559 uint8_t data;
557560 if (state == 0 )
558561 {
562+ // Set GPIO to 3.3V (LDO OUTPUT mode)
559563 data = Read8bit (0x91 );
560- Write1Byte (0x91 , (data & 0X0F ) | 0XF0 );
561-
564+ Write1Byte (0x91 , (data & 0x0F ) | 0xF0 );
565+ // Set GPIO0 to LDO OUTPUT, pullup N_VBUSEN to disable VBUS supply from BUS_5V
562566 data = Read8bit (0x90 );
563- Write1Byte (0x90 , (data & 0XF8 ) | 0X02 ); // set GPIO0 to LDO OUTPUT , pullup N_VBUSEN to disable supply from BUS_5V
564-
565- data = Read8bit (0x91 );
566-
567- data = Read8bit (0x12 ); // read reg 0x12
568- Write1Byte (0x12 , data | 0x40 ); // set EXTEN to enable 5v boost
567+ Write1Byte (0x90 , (data & 0xF8 ) | 0x02 );
568+ // Set EXTEN to enable 5v boost
569+ data = Read8bit (0x10 );
570+ Write1Byte (0x10 , data | 0x04 );
569571 }
570572 else
571573 {
572- data = Read8bit (0x12 ); // read reg 0x10
573- Write1Byte (0x12 , data & 0XBF ); // set EXTEN to disable 5v boost
574-
575- // delay(2000);
576-
574+ // Set EXTEN to disable 5v boost
575+ data = Read8bit (0x10 );
576+ Write1Byte (0x10 , data & ~0x04 );
577+ // Set GPIO0 to float, using enternal pulldown resistor to enable VBUS supply from BUS_5V
577578 data = Read8bit (0x90 );
578- Write1Byte (0x90 , (data & 0xF8 ) | 0X01 ); // set GPIO0 to float , using enternal pulldown resistor to enable supply from BUS_5VS
579+ Write1Byte (0x90 , (data & 0xF8 ) | 0x07 );
579580 }
580581}
581582
0 commit comments