Support setting the samd charge rate

We default to the fast one, and do not try setting the charge rate bit
on older samd versions
custom
jacqueline 11 months ago
parent 00d6c2eca2
commit 4c9b77ea13
  1. 1
      src/drivers/include/drivers/samd.hpp
  2. 13
      src/drivers/samd.cpp

@ -56,6 +56,7 @@ class Samd {
auto UpdateUsbStatus() -> void; auto UpdateUsbStatus() -> void;
auto ResetToFlashSamd() -> void; auto ResetToFlashSamd() -> void;
auto SetFastChargeEnabled(bool) -> void;
auto PowerDown() -> void; auto PowerDown() -> void;
auto UsbMassStorage(bool en) -> void; auto UsbMassStorage(bool en) -> void;

@ -51,6 +51,7 @@ Samd::Samd() {
UpdateChargeStatus(); UpdateChargeStatus();
UpdateUsbStatus(); UpdateUsbStatus();
SetFastChargeEnabled(true);
} }
Samd::~Samd() {} Samd::~Samd() {}
@ -125,6 +126,18 @@ auto Samd::ResetToFlashSamd() -> void {
ESP_ERROR_CHECK(transaction.Execute(3)); ESP_ERROR_CHECK(transaction.Execute(3));
} }
auto Samd::SetFastChargeEnabled(bool en) -> void {
if (version_ < 4) {
return;
}
I2CTransaction transaction;
transaction.start()
.write_addr(kAddress, I2C_MASTER_WRITE)
.write_ack(Registers::kPowerControl, (en << 1))
.stop();
ESP_ERROR_CHECK(transaction.Execute(3));
}
auto Samd::PowerDown() -> void { auto Samd::PowerDown() -> void {
I2CTransaction transaction; I2CTransaction transaction;
transaction.start() transaction.start()

Loading…
Cancel
Save