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.
Dependencies: mbed BMI160 max32630fthr
Revision 1:a3fa54415b4e, committed 2016-12-14
- Comitter:
- j3
- Date:
- Wed Dec 14 23:56:30 2016 +0000
- Parent:
- 0:0db9a7ed2e63
- Child:
- 2:0d7433075663
- Commit message:
- Update Libs
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/BMI160.lib Wed Dec 14 23:56:30 2016 +0000 @@ -0,0 +1,1 @@ +https://developer.mbed.org/users/j3/code/BMI160/#35e032c8d8aa
--- a/main.cpp Wed Dec 07 19:51:44 2016 +0000
+++ b/main.cpp Wed Dec 14 23:56:30 2016 +0000
@@ -34,55 +34,69 @@
#include "mbed.h"
#include "SDFileSystem.h"
#include "max32630fthr.h"
-#include "mbed-dev/targets/TARGET_Maxim/TARGET_MAX32630/mxc/adc.h"
-#include "mbed-dev/targets/TARGET_Maxim/TARGET_MAX32630/mxc/mxc_errors.h"
-
#include "bmi160.h"
-void dumpPmicRegisters(MAX32630FTHR &pegasus);
-int readBatteryRaw(uint16_t *data);
-float getBatteryVolts(uint16_t data);
+
void dumpImuRegisters(BMI160 &imu);
void printRegister(BMI160 &imu, BMI160::Registers reg);
-void printBlock(BMI160 &imu, BMI160::Registers startReg, BMI160::Registers stopReg, uint8_t *buff);
+void printBlock(BMI160 &imu, BMI160::Registers startReg, BMI160::Registers stopReg);
+
+typedef int32_t (MAX32630FTHR::*GetVoltageMbrFxPointer_t)(float *);
+void printVoltage(const char *msg, MAX32630FTHR &pegasus, GetVoltageMbrFxPointer_t mbrFxPtr);
int main()
{
- MAX32630FTHR pegasus(MAX32630FTHR::VIO_3V3);
- pegasus.init();
- //connect battery to monitor pin AIN_0
- pegasus.max14690.monSet(MAX14690::MON_BAT, MAX14690::MON_DIV1);
- dumpPmicRegisters(pegasus);
+ MAX32630FTHR pegasus;
+ pegasus.init(MAX32630FTHR::VIO_3V3);
DigitalOut rLED(LED1, LED_OFF);
DigitalOut gLED(LED2, LED_OFF);
DigitalOut bLED(LED3, LED_ON);
- BMI160 imu(pegasus.i2c, BMI160::I2C_ADRS_SDO_LO);
+ I2C i2cBus(P5_7, P6_0);
+ BMI160_I2C imu(i2cBus, BMI160_I2C::I2C_ADRS_SDO_LO);
dumpImuRegisters(imu);
- uint16_t battRawData;
uint32_t loopCnt = 0;
+ imu.setSensorPowerMode(BMI160::GYRO, BMI160::NORMAL);
+ wait_ms(100);
+ imu.setSensorPowerMode(BMI160::ACC, BMI160::NORMAL);
+ wait_ms(5);
+ printRegister(imu, BMI160::PMU_STATUS);
+
+ float imuTemperature;
+
while(1)
{
if(loopCnt == 0)
{
- if(readBatteryRaw(&battRawData) == E_NO_ERROR)
+ printf("/***********************/\n\n");
+ printVoltage(" Battery voltage = %05.3f\n\n", pegasus, &MAX32630FTHR::getBatteryVoltage);
+ printVoltage(" System voltage = %05.3f\n\n", pegasus, &MAX32630FTHR::getSysVoltage);
+ printVoltage(" Buck1 voltage = %05.3f\n\n", pegasus, &MAX32630FTHR::getBuck1Voltage);
+ printVoltage(" Buck2 voltage = %05.3f\n\n", pegasus, &MAX32630FTHR::getBuck2Voltage);
+ printVoltage(" LDO1 voltage = %05.3f\n\n", pegasus, &MAX32630FTHR::getLDO1Voltage);
+ printVoltage(" LDO2 voltage = %05.3f\n\n", pegasus, &MAX32630FTHR::getLDO2Voltage);
+ printVoltage(" LDO3 voltage = %05.3f\n\n", pegasus, &MAX32630FTHR::getLDO3Voltage);
+
+ if(imu.getTemperature(&imuTemperature) == BMI160::RTN_NO_ERROR)
{
- printf("Battery voltage = %05.3f\n\n", getBatteryVolts(battRawData));
+ printf("IMU temperature = %05.3f\n\n", imuTemperature);
}
else
{
- printf("Battery voltage = Overflow\n\n");
+ printf("Failed to read temperature.\n\n");
}
+
+ printf("/***********************/\n\n\n\n");
}
wait(1.0);
bLED = !bLED;
loopCnt++;
- if(loopCnt >= 15)
+ if(loopCnt >= 5)
{
loopCnt = 0;
}
@@ -91,38 +105,29 @@
//*****************************************************************************
-void dumpPmicRegisters(MAX32630FTHR &pegasus)
+void printVoltage(const char *msg, MAX32630FTHR &pegasus, GetVoltageMbrFxPointer_t mbrFxPtr)
{
- char reg_val[32];
- size_t len = sizeof(reg_val);
+ float volts;
- if(pegasus.max14690.readAllReg(reg_val, len) == 0)
+ if((pegasus.*mbrFxPtr)(&volts) == 0)
{
- for(uint8_t idx = 0; idx < len; idx++)
- {
- printf("PMIC Register 0x%02x = 0x%02x\n", idx, reg_val[idx]);
- }
- printf("\n");
+ printf(msg, volts);
}
else
{
- printf("Failed to read PMIC registers\n\n");
+ printf("Failed to get voltage\n\n");
}
-
}
//*****************************************************************************
void dumpImuRegisters(BMI160 &imu)
{
- //dumps registers defined by datasheet
- uint8_t buff[0x30];
-
printRegister(imu, BMI160::CHIP_ID);
- printBlock(imu, BMI160::ERR_REG,BMI160::FIFO_DATA, buff);
- printBlock(imu, BMI160::ACC_CONF, BMI160::FIFO_CONFIG_1, buff);
- printBlock(imu, BMI160::MAG_IF_0, BMI160::SELF_TEST, buff);
- printBlock(imu, BMI160::NV_CONF, BMI160::STEP_CONF_1, buff);
+ printBlock(imu, BMI160::ERR_REG,BMI160::FIFO_DATA);
+ printBlock(imu, BMI160::ACC_CONF, BMI160::FIFO_CONFIG_1);
+ printBlock(imu, BMI160::MAG_IF_0, BMI160::SELF_TEST);
+ printBlock(imu, BMI160::NV_CONF, BMI160::STEP_CONF_1);
printRegister(imu, BMI160::CMD);
printf("\n");
}
@@ -132,7 +137,7 @@
void printRegister(BMI160 &imu, BMI160::Registers reg)
{
uint8_t data;
- if(imu.readRegister(reg, &data) == BMI160::NO_ERROR)
+ if(imu.readRegister(reg, &data) == BMI160::RTN_NO_ERROR)
{
printf("IMU Register 0x%02x = 0x%02x\n", reg, data);
}
@@ -144,12 +149,13 @@
//*****************************************************************************
-void printBlock(BMI160 &imu, BMI160::Registers startReg, BMI160::Registers stopReg, uint8_t *buff)
+void printBlock(BMI160 &imu, BMI160::Registers startReg, BMI160::Registers stopReg)
{
uint8_t numBytes = ((stopReg - startReg) + 1);
+ uint8_t buff[numBytes];
uint8_t offset = static_cast<uint8_t>(startReg);
- if(imu.readBlock(startReg, stopReg, buff) == BMI160::NO_ERROR)
+ if(imu.readBlock(startReg, stopReg, buff) == BMI160::RTN_NO_ERROR)
{
for(uint8_t idx = offset; idx < (numBytes + offset); idx++)
{
@@ -161,34 +167,3 @@
printf("Failed to read block\n");
}
}
-
-
-//*****************************************************************************
-int readBatteryRaw(uint16_t *data)
-{
- static bool init = false;
- int rtnVal = E_NULL_PTR;
-
- if(!init)
- {
- if(ADC_Init() == E_NO_ERROR)
- {
- init = true;
- }
- }
-
- if(init)
- {
- ADC_StartConvert(ADC_CH_0_DIV_5, 1, 0);
- rtnVal = ADC_GetData(data);
- }
-
- return rtnVal;
-}
-
-
-//*****************************************************************************
-float getBatteryVolts(uint16_t data)
-{
- return((((0x03FF & data) * 6.0F)/1023.0F));
-}
--- a/max32630fthr.lib Wed Dec 07 19:51:44 2016 +0000 +++ b/max32630fthr.lib Wed Dec 14 23:56:30 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/j3/code/max32630fthr/#ec5a9c82903d +https://developer.mbed.org/users/j3/code/max32630fthr/#54d31920a9b5
--- a/mbed-dev.lib Wed Dec 07 19:51:44 2016 +0000 +++ b/mbed-dev.lib Wed Dec 14 23:56:30 2016 +0000 @@ -1,1 +1,1 @@ -https://developer.mbed.org/users/j3/code/mbed-dev/#82fa07cf8148 +https://developer.mbed.org/users/j3/code/mbed-dev/#16f54ee1a230