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 1 year 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 ResetToFlashSamd() -> void;
auto SetFastChargeEnabled(bool) -> void;
auto PowerDown() -> void;
auto UsbMassStorage(bool en) -> void;

@ -51,6 +51,7 @@ Samd::Samd() {
UpdateChargeStatus();
UpdateUsbStatus();
SetFastChargeEnabled(true);
}
Samd::~Samd() {}
@ -125,6 +126,18 @@ auto Samd::ResetToFlashSamd() -> void {
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 {
I2CTransaction transaction;
transaction.start()

Loading…
Cancel
Save