Skip to content

Instantly share code, notes, and snippets.

@kvalv
Created March 12, 2016 16:16
Show Gist options
  • Select an option

  • Save kvalv/79bba0ffd924810b0d68 to your computer and use it in GitHub Desktop.

Select an option

Save kvalv/79bba0ffd924810b0d68 to your computer and use it in GitHub Desktop.
enum ltc6804_RegisterGroup
{
RegisterGroup_CONFIG,
RegisterGroup_CELLA,
RegisterGroup_CELLB,
RegisterGroup_CELLC,
RegisterGroup_CELLD,
ReigsterGroup_AUXA,
RegisterGroup_AUXB,
RegisterGroup_STATA,
RegisterGroup_STATB
};
enum ltc6804_Command
{
Command_ADCV, /* Start Cell Voltage ADC Conversion and Poll status */
Command_ADOW, /* Start Open Wire ADC Conversion and Poll Status */
Command_CVST, /* Start Self-Test Cell Voltage Conversion and Poll Status */
Command_ADAX, /* Start GPIOs ADC Conversion and Poll Status */
Command_AXST, /* Start Self-Test GPIOs Conversion and Poll Status */
Command_ADSTAT, /* Start Status group ADC Conversion and Poll Status */
Command_STATST, /* Start Self-Test Status group Conversion and Pol Status */
Command_ADCVAX, /* Start Combined Cell VOltage and GPIO1, GPIO2 Conversion and Poll Status */
Command_Diagn /* Diagnose MUX and Poll Status */
};
enum ltc6804_DischargeTimeOutValue
{
DischargeTimeout_DISABLED,
DischargeTimeout_SEC30,
DischargeTimeout_MIN1,
DischargeTimeout_MIN2,
DischargeTimeout_MIN3,
DischargeTimeout_MIN4,
DischargeTimeout_MIN5,
DischargeTimeout_MIN10,
DischargeTimeout_MIN15,
DischargeTimeout_MIN20,
DischargeTimeout_MIN30,
DischargeTimeout_MIN40,
DischargeTimeout_MIN60,
DischargeTimeout_MIN75,
DischargeTimeout_MIN90,
DischargeTimeout_MIN120
};
enum ltc6804_MuxFailStatus
{
MuxStatus_NO_FAILURE,
MuxStatus_FAILURE
};
enum ltc6804_ThermalShutdownStatus
{
ThermalStatus_NO_SHUTDOWN,
ThermalStatus_SHUTDOWN
};
typedef union ltc6804_RegisterData
{
uint8_t rawData[8];
struct {
uint8_t adcModeOpt : 1;
uint8_t swtrd : 1;
uint8_t refon : 1;
uint8_t gpioValue : 5;
uint8_t UNUSED1;
uint16_t UNUSED2;
uint16_t dischargeEnable_bf : 12;
enum ltc6804_DischargeTimeOutValue dischargeTimeout : 4;
} config;
struct {
uint16_t cellVoltage1;
uint16_t cellVoltage2;
uint16_t cellVoltage3;
} cvA;
struct {
uint16_t cellVoltage4;
uint16_t cellVoltage5;
uint16_t cellVoltage6;
} cvB;
struct {
uint16_t cellVoltage7;
uint16_t cellVoltage8;
uint16_t cellVoltage9;
} cvC;
struct {
uint16_t cellVoltage10;
uint16_t cellVoltage11;
uint16_t cellVoltage12;
} cvD;
struct {
uint16_t gpioVoltage1;
uint16_t gpioVoltage2;
uint16_t gpioVoltage3;
} auxA;
struct {
uint16_t gpioVoltage4;
uint16_t gpioVoltage5;
uint16_t refVoltage;
} auxB;
struct {
uint16_t sumOfCellsVoltage;
uint16_t internalTemperature;
uint16_t analogPowerSupplyVoltage;
} statusA;
struct {
uint16_t digitalPowerSupplyVoltage;
uint16_t UNUSED1;
uint8_t UNUSED2;
enum ltc6804_ThermalShutdownStatus thermalShutdownStatus : 1;
enum ltc6804_MuxFailStatus muxFailStatus : 1;
uint8_t UNUSED3 : 2;
uint8_t deviceRevisionCode : 4;
} statusB;
} ltc6804_RegisterData;
void ltc6804_wakeUp ( void );
void ltc6804_sendCommand ( enum ltc6804_Command command );
void ltc6804_readRegisterGroup ( enum ltc6804_RegisterGroup registerGroup );
void ltc6804_writeConfigurationRegister ( ltc6804_RegisterData configurationRegister );
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment