Analog input with AD converter calibration for STM32F1 and STM32F3 boards.
AnalogInCal.h@0:99f4dfbbb498, 2017-11-18 (annotated)
- Committer:
- hudakz
- Date:
- Sat Nov 18 14:26:35 2017 +0000
- Revision:
- 0:99f4dfbbb498
- Child:
- 1:e4bcfca7d2df
Initial release.
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 | 0:99f4dfbbb498 | 5 | * Substitutes AnalogIn. |
hudakz | 0:99f4dfbbb498 | 6 | * |
hudakz | 0:99f4dfbbb498 | 7 | */ |
hudakz | 0:99f4dfbbb498 | 8 | |
hudakz | 0:99f4dfbbb498 | 9 | #include "mbed.h" |
hudakz | 0:99f4dfbbb498 | 10 | |
hudakz | 0:99f4dfbbb498 | 11 | class AnalogInCal : public AnalogIn |
hudakz | 0:99f4dfbbb498 | 12 | { |
hudakz | 0:99f4dfbbb498 | 13 | public: |
hudakz | 0:99f4dfbbb498 | 14 | |
hudakz | 0:99f4dfbbb498 | 15 | /** Creates an AnalogIn, connected to the specified pin |
hudakz | 0:99f4dfbbb498 | 16 | * |
hudakz | 0:99f4dfbbb498 | 17 | * @param pin AnalogIn pin to connect to |
hudakz | 0:99f4dfbbb498 | 18 | * @param cal Flag to request calibration. Defaults to true. |
hudakz | 0:99f4dfbbb498 | 19 | */ |
hudakz | 0:99f4dfbbb498 | 20 | AnalogInCal(PinName pin, bool cal = true) : AnalogIn(pin) { |
hudakz | 0:99f4dfbbb498 | 21 | if (cal) |
hudakz | 0:99f4dfbbb498 | 22 | calibrate(); |
hudakz | 0:99f4dfbbb498 | 23 | } |
hudakz | 0:99f4dfbbb498 | 24 | |
hudakz | 0:99f4dfbbb498 | 25 | /** Calibrates the associated AD Convertor |
hudakz | 0:99f4dfbbb498 | 26 | * |
hudakz | 0:99f4dfbbb498 | 27 | */ |
hudakz | 0:99f4dfbbb498 | 28 | void calibrate() { |
hudakz | 0:99f4dfbbb498 | 29 | lock(); |
hudakz | 0:99f4dfbbb498 | 30 | #if defined(TARGET_STM32F1) |
hudakz | 0:99f4dfbbb498 | 31 | while(HAL_ADCEx_Calibration_Start(&(_adc.handle)) != HAL_OK); |
hudakz | 0:99f4dfbbb498 | 32 | #elif defined(TARGET_STM32F3) |
hudakz | 0:99f4dfbbb498 | 33 | while(HAL_ADCEx_Calibration_Start(&(_adc.handle), ADC_SINGLE_ENDED) != HAL_OK); |
hudakz | 0:99f4dfbbb498 | 34 | #endif |
hudakz | 0:99f4dfbbb498 | 35 | unlock(); |
hudakz | 0:99f4dfbbb498 | 36 | } |
hudakz | 0:99f4dfbbb498 | 37 | |
hudakz | 0:99f4dfbbb498 | 38 | }; |
hudakz | 0:99f4dfbbb498 | 39 | |
hudakz | 0:99f4dfbbb498 | 40 | #endif // ANALOGINCAL_H |