[6] | 1 | /****************************************************************************** |
---|
| 2 | * |
---|
| 3 | * @file ads1260.h |
---|
| 4 | * @author ECS, Joseph Zimmer |
---|
| 5 | * @version V1.0.0 |
---|
| 6 | * @date 25-04-2019 |
---|
| 7 | * @brief |
---|
| 8 | * |
---|
| 9 | ******************************************************************************/ |
---|
| 10 | #ifndef _ADS_1260_H |
---|
| 11 | #define _ADS_1260_H |
---|
| 12 | |
---|
| 13 | //--- INCLUDEs ----------------------------------------------------------------- |
---|
| 14 | #include "main.h" |
---|
| 15 | #include "sysdata.h" |
---|
| 16 | //--- GLOBALE TYPE DEFS -------------------------------------------------------- |
---|
| 17 | typedef enum |
---|
| 18 | { |
---|
| 19 | ADC_STATE_INITIALIZE = 0, |
---|
| 20 | ADC_STATE_CONVERSION_STOPPED = 1, |
---|
| 21 | ADC_STATE_CONVERSION_RUNNING = 2, |
---|
| 22 | ADC_STATE_READY_FOR_CONVERSION = 3, |
---|
| 23 | ADC_STATE_SELF_OFFSET_CALIBRATION = 4, |
---|
| 24 | ADC_STATE_SYSTEM_OFFSET_CALIBRATION = 5, |
---|
| 25 | ADC_STATE_GAIN_CALIBRATION = 6, |
---|
| 26 | ADC_STATE_ERROR = 7 |
---|
| 27 | }adc_state_enum_t; |
---|
| 28 | |
---|
| 29 | typedef union |
---|
| 30 | { |
---|
| 31 | uint32_t w; |
---|
| 32 | int32_t sw; |
---|
| 33 | uint16_t hw[2]; |
---|
| 34 | int16_t shw[2]; |
---|
| 35 | uint8_t s[4]; |
---|
| 36 | int8_t ss[4]; |
---|
| 37 | }convert_union_t; |
---|
| 38 | //--- GLOBALE DEFINES ---------------------------------------------------------- |
---|
| 39 | |
---|
| 40 | //--- GLOBALE VARIABLEN PROTOTYPEN --------------------------------------------- |
---|
| 41 | extern volatile uint32_t newCurrentValue; |
---|
| 42 | |
---|
| 43 | //--- GLOBALE FUNKTIONS PROTOTYPEN --------------------------------------------- |
---|
| 44 | |
---|
| 45 | /* |
---|
| 46 | * @brief |
---|
| 47 | * @param kein |
---|
| 48 | * @retval kein |
---|
| 49 | */ |
---|
| 50 | void ADS1260_init(void); |
---|
| 51 | |
---|
| 52 | /* |
---|
| 53 | * @brief |
---|
| 54 | * @param kein |
---|
| 55 | * @retval kein |
---|
| 56 | */ |
---|
| 57 | void ADS1260_StartConversion(void); |
---|
| 58 | |
---|
| 59 | |
---|
| 60 | /* |
---|
| 61 | * @brief |
---|
| 62 | * @param kein |
---|
| 63 | * @retval kein |
---|
| 64 | */ |
---|
| 65 | void ADS1260_ReadConversion(void); |
---|
| 66 | |
---|
| 67 | /* |
---|
| 68 | * @brief set conversion state |
---|
| 69 | * @param kein |
---|
| 70 | * @retval kein |
---|
| 71 | */ |
---|
| 72 | void ADS1260_ConversionFinished(void); |
---|
| 73 | |
---|
| 74 | |
---|
| 75 | |
---|
| 76 | /*****************************************Softwarekalibrierung*************************************************/ |
---|
| 77 | |
---|
| 78 | |
---|
| 79 | /* |
---|
| 80 | * @brief Gain Calibration |
---|
| 81 | * |
---|
| 82 | * Diese Funktion dient zum kalibrieren der Verstärkung. |
---|
| 83 | * Funktion sollte nach Offset Korrektur und Offset Commonmode Korrektur ausgeführt werden |
---|
| 84 | * Für die Kalibrierung muss der Sensor in kalten Zustand gehalten werden, also zunächst Bypass zuschalten, Strom einstellen, warten bis Lasten stabil, dann bypass abschalten und unverzüglich kalibrierung starten |
---|
| 85 | * @param kein |
---|
| 86 | * @retval kein |
---|
| 87 | */ |
---|
| 88 | void ADS_1260_BatteryCurrentGainCalibrationStart(sys_data_t * data); |
---|
| 89 | |
---|
| 90 | |
---|
| 91 | /* |
---|
| 92 | * @brief Offset kalibrieren. |
---|
| 93 | * |
---|
| 94 | * Nennspannung an Shunt 12V |
---|
| 95 | * Messstrom abschalten, warten bis Sensor kalt und Mittelwertbildung stabil. Dann Starten |
---|
| 96 | * @param kein |
---|
| 97 | * @retval kein |
---|
| 98 | */ |
---|
| 99 | void ADS_1260_BatteryCurrentOffsetCalibrationStart(sys_data_t * data); |
---|
| 100 | |
---|
| 101 | |
---|
| 102 | /* |
---|
| 103 | * @brief Common Mode Error korrektur |
---|
| 104 | * |
---|
| 105 | * Diese Funktion eliminiert den Common-Mode error. |
---|
| 106 | * Die Spannung am Messwiderstand (also Batteriesspannung, wenn der Shunt in der positiven Leitung eingesetzt wird) ruft einen sogenannten Common Mode Fehler hervor. |
---|
| 107 | * Die Busspannung wird zur Kaibrierung erhöht und damit der Fehler pro mV Busspannung berechnet |
---|
| 108 | * @param kein |
---|
| 109 | * @retval kein |
---|
| 110 | */ |
---|
| 111 | void ADS_1260_BatteryCurrentOffsetCommonModeErrorComepensationStart(sys_data_t * data); |
---|
| 112 | |
---|
| 113 | /* |
---|
| 114 | * @brief Calibrierung der Offset Temperaturdrift |
---|
| 115 | * |
---|
| 116 | * Offset Kalibrierung und Commonmode Calibrierung muss bereits ausgeführt sein. |
---|
| 117 | * Diese Funktion bei erhöter Temperatur. Zum Beispiel 80°C ausführen |
---|
| 118 | * Es darf kein Strom fließen. |
---|
| 119 | * Berechnet Offset Drift mit Temperatur und speichert ein Kompensationswert |
---|
| 120 | * @param kein |
---|
| 121 | * @retval kein |
---|
| 122 | */ |
---|
| 123 | void ADS_1260_BatteryCurrentOffsetTemperatureErrorComepensationStart(void); |
---|
| 124 | |
---|
| 125 | void ADS_1260_BatteryCurrentGainTemperatureCalibrationShuntStart(void); |
---|
| 126 | /* |
---|
| 127 | * @brief |
---|
| 128 | * @param kein |
---|
| 129 | * @retval kein |
---|
| 130 | */ |
---|
| 131 | void ADS_1260_SetDigitalFilter(SPI_HandleTypeDef * hspi, uint8_t digitalFilter); |
---|
| 132 | /* |
---|
| 133 | * @brief |
---|
| 134 | * @param kein |
---|
| 135 | * @retval kein |
---|
| 136 | */ |
---|
| 137 | void ADS_1260_SetDataRate(SPI_HandleTypeDef * hspi, uint8_t dataRate); |
---|
| 138 | |
---|
| 139 | #endif // !_ADS_1260_H |
---|