Fork of MAX32630FTHR utilities library
Dependents: MAX32630FTHR_BALANCE_BOT MAX32630FTHR_iButton_uSD_Logger MAX32630FTHR_DS18B20_uSD_Logger MAX32630FTHR_BALANCE_BOT
Fork of max32630fthr by
Diff: max32630fthr.cpp
- Revision:
- 6:92b485e70885
- Parent:
- 1:15e34492fbf1
- Child:
- 8:69740ee6903a
diff -r 3f87baa11ee4 -r 92b485e70885 max32630fthr.cpp --- a/max32630fthr.cpp Thu Dec 08 00:36:05 2016 +0000 +++ b/max32630fthr.cpp Thu Dec 08 03:33:50 2016 +0000 @@ -31,77 +31,84 @@ ******************************************************************************* */ + #include "mbed.h" +#include "PinNames.h" +#include "max32630fthr.h" #include "max3263x.h" #include "ioman_regs.h" -#include "PinNames.h" -#include "max32630fthr.h" +#include "adc.h" +#include "mxc_errors.h" + //****************************************************************************** -MAX32630FTHR::MAX32630FTHR(vio_t vio) : i2c(P5_7, P6_0), max14690(&i2c) -{ - hdrVio = vio; -} - -//****************************************************************************** -MAX32630FTHR::~MAX32630FTHR() +MAX32630FTHR::MAX32630FTHR(IoVoltage vio) +: m_i2c(P5_7, P6_0), m_max14690(&m_i2c), m_hdrVio(vio) { } + //****************************************************************************** -int MAX32630FTHR::init() +int32_t MAX32630FTHR::init() { + int32_t rtnVal = -1; + // Override the default values - max14690.ldo2Millivolts = 3300; - max14690.ldo3Millivolts = 3300; - max14690.ldo2Mode = MAX14690::LDO_ENABLED; - max14690.ldo3Mode = MAX14690::LDO_ENABLED; - max14690.monCfg = MAX14690::MON_HI_Z; + m_max14690.ldo2Millivolts = 3300; + m_max14690.ldo3Millivolts = 3300; + m_max14690.ldo2Mode = MAX14690::LDO_ENABLED; + m_max14690.ldo3Mode = MAX14690::LDO_ENABLED; + m_max14690.monCfg = MAX14690::MON_HI_Z; // Note that writing the local value does directly affect the part // The buck-boost regulator will remain off until init is called // Call init to apply all settings to the PMIC - if (max14690.init() == MAX14690_ERROR) { - printf("Error initializing MAX14690"); + if (m_max14690.init() != MAX14690_ERROR) + { + // Set micro SD card pins to 3.3V + vddioh(P0_4, VIO_3V3); + vddioh(P0_5, VIO_3V3); + vddioh(P0_6, VIO_3V3); + vddioh(P0_7, VIO_3V3); + // Set LED pins to 3.3V + vddioh(P2_4, VIO_3V3); + vddioh(P2_5, VIO_3V3); + vddioh(P2_6, VIO_3V3); + // Set header pins to hdrVio + vddioh(P3_0, m_hdrVio); + vddioh(P3_1, m_hdrVio); + vddioh(P3_2, m_hdrVio); + vddioh(P3_3, m_hdrVio); + vddioh(P3_4, m_hdrVio); + vddioh(P3_5, m_hdrVio); + vddioh(P4_0, m_hdrVio); + vddioh(P4_1, m_hdrVio); + vddioh(P4_2, m_hdrVio); + vddioh(P4_3, m_hdrVio); + vddioh(P4_4, m_hdrVio); + vddioh(P4_5, m_hdrVio); + vddioh(P4_6, m_hdrVio); + vddioh(P4_7, m_hdrVio); + vddioh(P5_0, m_hdrVio); + vddioh(P5_1, m_hdrVio); + vddioh(P5_2, m_hdrVio); + vddioh(P5_3, m_hdrVio); + vddioh(P5_4, m_hdrVio); + vddioh(P5_5, m_hdrVio); + vddioh(P5_6, m_hdrVio); + + if(ADC_Init() == E_NO_ERROR) + { + rtnVal = 0; + } } - - // Set micro SD card pins to 3.3V - vddioh(P0_4, VIO_3V3); - vddioh(P0_5, VIO_3V3); - vddioh(P0_6, VIO_3V3); - vddioh(P0_7, VIO_3V3); - // Set LED pins to 3.3V - vddioh(P2_4, VIO_3V3); - vddioh(P2_5, VIO_3V3); - vddioh(P2_6, VIO_3V3); - // Set header pins to hdrVio - vddioh(P3_0, hdrVio); - vddioh(P3_1, hdrVio); - vddioh(P3_2, hdrVio); - vddioh(P3_3, hdrVio); - vddioh(P3_4, hdrVio); - vddioh(P3_5, hdrVio); - vddioh(P4_0, hdrVio); - vddioh(P4_1, hdrVio); - vddioh(P4_2, hdrVio); - vddioh(P4_3, hdrVio); - vddioh(P4_4, hdrVio); - vddioh(P4_5, hdrVio); - vddioh(P4_6, hdrVio); - vddioh(P4_7, hdrVio); - vddioh(P5_0, hdrVio); - vddioh(P5_1, hdrVio); - vddioh(P5_2, hdrVio); - vddioh(P5_3, hdrVio); - vddioh(P5_4, hdrVio); - vddioh(P5_5, hdrVio); - vddioh(P5_6, hdrVio); - - return 0; + + return rtnVal; } + //****************************************************************************** -int MAX32630FTHR::vddioh(PinName pin, vio_t vio) +int32_t MAX32630FTHR::vddioh(PinName pin, IoVoltage vio) { __IO uint32_t *use_vddioh = &((mxc_ioman_regs_t *)MXC_IOMAN)->use_vddioh_0; @@ -118,3 +125,73 @@ return 0; } + + +//****************************************************************************** +int32_t MAX32630FTHR::getBatteryVoltage(float *battVolts) +{ + return readMonVoltage(MAX14690::MON_BAT, battVolts); +} + + +//****************************************************************************** +int32_t MAX32630FTHR::getSysVoltage(float *sysVolts) +{ + return readMonVoltage(MAX14690::MON_SYS, sysVolts); +} + + +//****************************************************************************** +int32_t MAX32630FTHR::getBuck1Voltage(float *buckVolts) +{ + return readMonVoltage(MAX14690::MON_BUCK1, buckVolts); +} + + +//****************************************************************************** +int32_t MAX32630FTHR::getBuck2Voltage(float *buckVolts) +{ + return readMonVoltage(MAX14690::MON_BUCK2, buckVolts); +} + + +//****************************************************************************** +int32_t MAX32630FTHR::getLDO1Voltage(float *ldoVolts) +{ + return readMonVoltage(MAX14690::MON_LDO1, ldoVolts); +} + + +//****************************************************************************** +int32_t MAX32630FTHR::getLDO2Voltage(float *ldoVolts) +{ + return readMonVoltage(MAX14690::MON_LDO2, ldoVolts); +} + + +//****************************************************************************** +int32_t MAX32630FTHR::getLDO3Voltage(float *ldoVolts) +{ + return readMonVoltage(MAX14690::MON_LDO3, ldoVolts); +} + + +//****************************************************************************** +int32_t MAX32630FTHR::readMonVoltage(MAX14690::monCfg_t monCfg, float *volts) +{ + int32_t rtnVal = -1; + uint16_t data; + + if(m_max14690.monSet(monCfg, MAX14690::MON_DIV4) == 0) + { + wait_ms(1); + ADC_StartConvert(ADC_CH_0, 1, 0); + if(ADC_GetData(&data) == E_NO_ERROR) + { + *volts = ((((0x03FF & data) * 4.8F)/1023.0F)); + rtnVal = m_max14690.monSet(MAX14690::MON_HI_Z, MAX14690::MON_DIV1); + } + } + + return rtnVal; +}