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

AnalogInCal.h

Committer:
hudakz
Date:
2017-11-20
Revision:
1:e4bcfca7d2df
Parent:
0:99f4dfbbb498

File content as of revision 1:e4bcfca7d2df:

#ifndef ANALOGINCAL_H
#define ANALOGINCAL_H

/* Analog input with AD converter calibration for STM32F1 and STM32F3 boards.
 *
 * Substitutes AnalogIn.
 *
 */

#include "AnalogIn.h"

class AnalogInCal : public AnalogIn
{
public:

    /** Creates an AnalogInCal, connected to the specified pin
     *
     * @param pin AnalogIn pin to connect to
     * @param cal Flag to request calibration. Defaults to true.
     */
    AnalogInCal(PinName pin, bool cal = true) : AnalogIn(pin) {
        if (cal)
            calibrate();
    }

    /** Calibrates the associated AD Convertor
     *
     */
    void calibrate()  {
        lock();
#if defined(TARGET_STM32F1)
        while (HAL_ADCEx_Calibration_Start(&(_adc.handle)) != HAL_OK);
#elif defined(TARGET_STM32F3)
        while (HAL_ADCEx_Calibration_Start(&(_adc.handle), ADC_SINGLE_ENDED) != HAL_OK);
#endif
        unlock();
    }
};

#endif // ANALOGINCAL_H