Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of max20303 by
Diff: MAX20303.cpp
- Revision:
- 2:39e05cf7ef7d
- Parent:
- 1:d85b06dc60a3
diff -r d85b06dc60a3 -r 39e05cf7ef7d MAX20303.cpp
--- a/MAX20303.cpp Thu Jan 25 15:31:43 2018 +0300
+++ b/MAX20303.cpp Thu Jan 03 11:03:10 2019 +0300
@@ -68,12 +68,23 @@
appdatainoutbuffer_[1] = 0x34;
AppWrite(2);
+ return ret;
+}
-
+//******************************************************************************
+int MAX20303::LDO2Config()
+{
+ int32_t ret = 0;
+ uint8_t val;
+ appcmdoutvalue_ = 0x42;
+ appdatainoutbuffer_[0] = 0x01;
+ appdatainoutbuffer_[1] = 0x15; // 0.9V + (0.1V * number) = 3V
+ AppWrite(2);
return ret;
}
+
//******************************************************************************
int MAX20303::writeReg(registers_t reg, uint8_t value)
{
@@ -177,6 +188,20 @@
return ret;
}
//******************************************************************************
+int MAX20303::PowerOffDelaythePMIC(){
+ int ret;
+ appdatainoutbuffer_[0] = 0xB2;
+ appcmdoutvalue_ = 0x84;
+ ret = AppWrite(1);
+
+ if(appcmdoutvalue_ != 0x80){
+ ret |= MAX20303_ERROR;
+ }
+
+ return ret;
+}
+
+//******************************************************************************
int MAX20303::SoftResetthePMIC(){
int ret;
appdatainoutbuffer_[0] = 0xB3;
@@ -232,23 +257,90 @@
return MAX20303_NO_ERROR;
}
+//******************************************************************************
+char MAX20303::CheckPMICHWID(){
+ int ret;
+ uint8_t value = 0x00;
+
+ ret = readReg(MAX20303::REG_HARDWARE_ID, value);
+ if(ret != MAX20303_NO_ERROR)
+ return false;
+
+ if(value == 0x02)
+ return true;
+ else
+ return false;
+}
+
+//******************************************************************************
+int MAX20303::CheckPMICStatusRegisters(unsigned char buf_results[5]){
+ int ret;
+ ret = readReg(MAX20303::REG_STATUS0, buf_results[0]);
+ ret |= readReg(MAX20303::REG_STATUS1, buf_results[1]);
+ ret |= readReg(MAX20303::REG_STATUS2, buf_results[2]);
+ ret |= readReg(MAX20303::REG_STATUS3, buf_results[3]);
+ ret |= readReg(MAX20303::REG_SYSTEM_ERROR, buf_results[4]);
+ return ret;
+}
+
+//******************************************************************************
+int MAX20303::Max20303_BatteryGauge(unsigned char *batterylevel){
+ int ret;
+ char data[2];
+
+ data[0] = 0x04;
+ ret = m_i2c->write(MAX20303_I2C_ADDR_FUEL_GAUGE, data, 1);
+ if(ret != 0){
+ printf("Max20303_FuelGauge has failed\r\n");
+ }
+
+ ret = m_i2c->read(MAX20303_I2C_ADDR_FUEL_GAUGE | 1, data, 2);
+ if(ret != 0){
+ printf("Max20303_FuelGauge has failed\r\n");
+ }
+
+ // if the level is more than 100 assume the battery is not connected
+ if(data[0] > 100){
+ *batterylevel = 0;
+ } else{
+
+ *batterylevel = data[0];
+ }
+ return 0;
+}
//******************************************************************************
-int MAX20303::led0on(void) {
+int MAX20303::led0on(char enable) {
- writeReg(REG_LED0_DIRECT, 0x21);
-
- return MAX20303_NO_ERROR;
+ if(enable)
+ return writeReg(REG_LED0_DIRECT, 0x21);
+ else
+ return writeReg(REG_LED0_DIRECT, 0x01);
}
//******************************************************************************
-int MAX20303::BoostEnable(void) {
+int MAX20303::led1on(char enable) {
+ if(enable)
+ return writeReg(REG_LED1_DIRECT, 0x21);
+ else
+ return writeReg(REG_LED1_DIRECT, 0x01);
+}
- writeReg(REG_AP_CMDOUT, 0x30);
+//******************************************************************************
+int MAX20303::led2on(char enable) {
+ if(enable)
+ return writeReg(REG_LED2_DIRECT, 0x21);
+ else
+ return writeReg(REG_LED2_DIRECT, 0x01);
+}
+
+
+//******************************************************************************
+int MAX20303::BoostEnable(void) {
writeReg(REG_AP_DATOUT3, 0x00); // 00 : 5V
writeReg(REG_AP_DATOUT0, 0x01); // Boost Enabled
-
+ writeReg(REG_AP_CMDOUT, 0x30);
return MAX20303_NO_ERROR;
}
