Analog input with AD converter calibration for STM32F1 and STM32F3 boards.
AnalogInCal.h@1:e4bcfca7d2df, 2017-11-20 (annotated)
- Committer:
- hudakz
- Date:
- Mon Nov 20 18:37:17 2017 +0000
- Revision:
- 1:e4bcfca7d2df
- Parent:
- 0:99f4dfbbb498
Updated.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
hudakz | 0:99f4dfbbb498 | 1 | #ifndef ANALOGINCAL_H |
hudakz | 0:99f4dfbbb498 | 2 | #define ANALOGINCAL_H |
hudakz | 0:99f4dfbbb498 | 3 | |
hudakz | 0:99f4dfbbb498 | 4 | /* Analog input with AD converter calibration for STM32F1 and STM32F3 boards. |
hudakz | 1:e4bcfca7d2df | 5 | * |
hudakz | 0:99f4dfbbb498 | 6 | * Substitutes AnalogIn. |
hudakz | 0:99f4dfbbb498 | 7 | * |
hudakz | 0:99f4dfbbb498 | 8 | */ |
hudakz | 0:99f4dfbbb498 | 9 | |
hudakz | 1:e4bcfca7d2df | 10 | #include "AnalogIn.h" |
hudakz | 0:99f4dfbbb498 | 11 | |
hudakz | 0:99f4dfbbb498 | 12 | class AnalogInCal : public AnalogIn |
hudakz | 0:99f4dfbbb498 | 13 | { |
hudakz | 0:99f4dfbbb498 | 14 | public: |
hudakz | 0:99f4dfbbb498 | 15 | |
hudakz | 1:e4bcfca7d2df | 16 | /** Creates an AnalogInCal, connected to the specified pin |
hudakz | 0:99f4dfbbb498 | 17 | * |
hudakz | 0:99f4dfbbb498 | 18 | * @param pin AnalogIn pin to connect to |
hudakz | 0:99f4dfbbb498 | 19 | * @param cal Flag to request calibration. Defaults to true. |
hudakz | 0:99f4dfbbb498 | 20 | */ |
hudakz | 0:99f4dfbbb498 | 21 | AnalogInCal(PinName pin, bool cal = true) : AnalogIn(pin) { |
hudakz | 0:99f4dfbbb498 | 22 | if (cal) |
hudakz | 0:99f4dfbbb498 | 23 | calibrate(); |
hudakz | 0:99f4dfbbb498 | 24 | } |
hudakz | 0:99f4dfbbb498 | 25 | |
hudakz | 0:99f4dfbbb498 | 26 | /** Calibrates the associated AD Convertor |
hudakz | 0:99f4dfbbb498 | 27 | * |
hudakz | 0:99f4dfbbb498 | 28 | */ |
hudakz | 0:99f4dfbbb498 | 29 | void calibrate() { |
hudakz | 0:99f4dfbbb498 | 30 | lock(); |
hudakz | 0:99f4dfbbb498 | 31 | #if defined(TARGET_STM32F1) |
hudakz | 1:e4bcfca7d2df | 32 | while (HAL_ADCEx_Calibration_Start(&(_adc.handle)) != HAL_OK); |
hudakz | 0:99f4dfbbb498 | 33 | #elif defined(TARGET_STM32F3) |
hudakz | 1:e4bcfca7d2df | 34 | while (HAL_ADCEx_Calibration_Start(&(_adc.handle), ADC_SINGLE_ENDED) != HAL_OK); |
hudakz | 0:99f4dfbbb498 | 35 | #endif |
hudakz | 0:99f4dfbbb498 | 36 | unlock(); |
hudakz | 0:99f4dfbbb498 | 37 | } |
hudakz | 0:99f4dfbbb498 | 38 | }; |
hudakz | 0:99f4dfbbb498 | 39 | |
hudakz | 0:99f4dfbbb498 | 40 | #endif // ANALOGINCAL_H |