adc.h 1.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849
  1. #ifndef ADC_H_
  2. #include "ti/driverlib/dl_i2c.h"
  3. #include "ti_msp_dl_config.h"
  4. #include "battery.h"
  5. #define ADC_TARGET_BASE_ADDRESS (0x68)
  6. #define ADC_VREF_MV (2048)
  7. #define DELAY (100000) //define timeout limit
  8. //defining the configurations
  9. //Maximum packet sizes
  10. #define I2C_TX_MAX_PACKET_SIZE (16)
  11. #define I2C_RX_MAX_PACKET_SIZE (16)
  12. //Flag for READ and WRITE
  13. extern volatile bool gRxComplete;
  14. extern volatile bool gTxComplete;
  15. extern uint8_t gTxPacket[I2C_TX_MAX_PACKET_SIZE];
  16. extern uint8_t gRxPacket[I2C_RX_MAX_PACKET_SIZE];
  17. /*Counters for Tx and Rx length and bytes sent*/
  18. extern uint32_t gTxADClen, gTxADCcount;
  19. extern uint32_t gRxADClen, gRxADCcount;
  20. //ADC states
  21. typedef enum{
  22. ADC_STATE_CONFIGURE,
  23. ADC_STATE_WAIT,
  24. ADC_STATE_READ,
  25. ADC_STATE_DONE
  26. }ADC_MeasurementState;
  27. typedef struct{
  28. uint8_t channel;
  29. uint8_t resolution;
  30. bool continuous;
  31. uint8_t gain;
  32. } ADC_PARAMS;
  33. uint8_t ADC_ConstructConfigBytes(ADC_PARAMS params);
  34. void ADC_SetConfigurationBytes(ADC_PARAMS params);
  35. bool ADC_CheckReadyBit(uint8_t slot_id, ADC_PARAMS params);
  36. int16_t ADC_ReadData(uint8_t slot_id, ADC_PARAMS params);
  37. void Battery_UpdateVoltage(ADC_PARAMS params);
  38. void Battery_UpdateCurrent(ADC_PARAMS params);
  39. void Battery_UpdateADCReading(uint8_t slot, uint8_t channel);
  40. #endif