Analog input with AD converter calibration for STM32F1 and STM32F3 boards.

Committer:
hudakz
Date:
Mon Nov 20 18:37:17 2017 +0000
Revision:
1:e4bcfca7d2df
Parent:
0:99f4dfbbb498
Updated.

Who changed what in which revision?

UserRevisionLine numberNew 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