Levi Mariën
/
STC3100
Custom project for driving a STC3100 sensor
Diff: STC3100Sensor.h
- Revision:
- 0:014d4be7a437
diff -r 000000000000 -r 014d4be7a437 STC3100Sensor.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/STC3100Sensor.h Sun Oct 29 00:11:17 2017 +0000 @@ -0,0 +1,96 @@ +#ifndef STC3100Sensor_H_ +#define STC3100Sensor_H_ + +/** + * I2C Device address + * ------------------ + * The mbed API uses 8 bit addresses, so make sure to thake the 7 bit address + * and left shift it by 1 before passing it. + * The eight bit presents a R/W bit, see datasheet STC3100 page 12. + */ +#define STC3100_ADDRESS_READ 0b11100000 +#define STC3100_ADRESS_WRITE 0b11100001 + +/** + * INTERNAL REGISTER MAP + * --------------------- + * For this application the RAM registers are not used + */ +#define REG_MODE 0 // Mode register (R/W) +#define REG_CTRL 1 // Control and status register (R/W) +#define REG_CHARGE_LOW 2 // Gas gauge charge data, bits 0-7 (R) +#define REG_CHARGE_HIGH 3 // Gas gauge charge data, bits 8-15 (R) +#define REG_COUNTER_LOW 4 // Number of conversions, bits 0-7 (R) +#define REG_COUNTER_HIGH 5 // Number of conversions, bits 8-15 (R) +#define REG_CURRENT_LOW 6 // Battery current value, bits 0-7 (R) +#define REG_CURRENT_HIGH 7 // Battery current value, bits 8-15 (R) +#define REG_VOLTAGE_LOW 8 // Battery voltage value, bits 0-7 (R) +#define REG_VOLTAGE_HIGH 9 // Battery voltage value, bits 8-15 (R) +//#define REG_TEMPERATURE_LOW 10 // Temperature value, bits 0-7 (R) +//#define REG_TEMPERATURE_HIGH 11 // Temperature value, bits 8-15 (R) + +//The following registers are the Device ID registers (R) +//#define REG_ID0 24 +//#define REG_ID1 25 +//#define REG_ID2 26 +//#define REG_ID3 27 +//#define REG_ID4 28 +//#define REG_ID5 29 +//#define REG_ID6 30 +//#define REG_ID7 31 + +typedef union STC3100Data { + + // Reading of the chip will be stored in the byteArray + unsigned char byteArray[10]; + + struct { + unsigned char Mode; + unsigned char ControlStatus; + unsigned char ChargeLow; + unsigned char ChargeHigh; + unsigned char CounterLow; + unsigned char CounterHigh; + unsigned char CurrentLow; + unsigned char CurrentHigh; + unsigned char VoltageLow; + unsigned char VoltageHigh; +// unsigned char TemperatureLow; +// unsigned char TemperatureHigh; +// unsigned char Reserved[13]; +// unsigned char ID0; +// unsigned char ID1; +// unsigned char ID2; +// unsigned char ID3; +// unsigned char ID4; +// unsigned char ID5; +// unsigned char ID6; +// unsigned char ID7; + }; +}; +/** + * Struct that stores the updated values. + */ +typedef struct STC3100ActualData { + // Voltage in mV + float voltage; + // Current in mA + float current; + // Current charge of the battery mAh + float charge; +// // Temperature in °C +// float temperature; +}; + +STC3100ActualData stc3100ActualData; +STC3100Data stc3100Data; + +void stc3100Configure(void); +void stc3100ReadChip(void); +void updateData(void); +float getVoltage(void); +float getCurrent(void); +float getCharge(void); +//float getTemperature(void); + +#endif /* STC3100Sensor_H_ */