max20303 private fork
Fork of max20303 by
Diff: MAX20303.cpp
- Revision:
- 2:39e05cf7ef7d
- Parent:
- 1:d85b06dc60a3
--- 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;
}
