The AD8556 is a zero-drift, sensor signal amplifier with digitally programmable gain and output offset.

Dependents:   AD8556_HelloWolrd

AD8556.h

Committer:
fblanc
Date:
2013-09-11
Revision:
0:05eaa16f3327

File content as of revision 0:05eaa16f3327:

/**
 * @brief AD8556:  Digitally Programmable Sensor Signal Amplifier with EMI Filters
 * http://www.analog.com/en/specialty-amplifiers/instrumentation-amplifiers/ad8556/products/product.html
 * @date 05/09/2013
 * @author F.BLANC LAAS-CNRS
 * http://homepages.laas.fr/fblanc/
 */
#ifndef AD8556_H

#define AD8556_H

#include "mbed.h"
enum ADC_MODE {
    ADC_MODE_SENSE_CURENT = 0x00,
    ADC_MODE_SIMULATION = 0x01,
    ADC_MODE_FUSE = 0x02,
    ADC_MODE_READ = 0x03
};
enum ADC_FUNCTION {
    ADC_Change_Sense_Current = 0x00,
    ADC_Simulate_Parameter_Value = 0x01,
    ADC_Program_Parameter_Value = 0x02,
    ADC_Read_Parameter_Value = 0x03
};
enum ADC_PARAMETER {
    ADC_Second_Stage_Gain_Code = 0x00,
    ADC_First_Stage_Gain_Code = 0x01,
    ADC_Output_Offset_Code = 0x02,
    ADC_Other_Functions = 0x03
};
/** AD8556 class.
 *  Used for controlling a AD8556 Instrumentation Amplifiers  connected via Single-wire serial interface.
 *
 */
class AD8556
{
protected:
private:
    /**
     * @brief write_bit
     *
     * @param bit 1 or 0
     */
    void write_bit(unsigned char bit);
    /**
     * @brief read_bit
     *
     * @return bit 1 or 0
     */
    unsigned char read_bit();
    /**
    * @brief trame
    * @param parameter
    * @param mode
    * @param data
    */
    void trame(unsigned char parameter,unsigned char mode,unsigned char data);
public:
    /**
     * @brief Constructor.
     * @param dig
     */
    AD8556(PinName dig);
    DigitalInOut _dig;

    /**
     * @brief Destructor.
     */
    ~AD8556();
    /**
    * @brief init
    * @param First_Stage_Gain_Code
    * @param Second_Stage_Gain_Code
    * @param Vdac_Code
    */
    int init(unsigned char mode=ADC_MODE_SIMULATION, unsigned char First_Stage_Gain_Code=0, unsigned char Second_Stage_Gain_Code=0,unsigned char Vdac_Code=0x7F);
    /**
    * @brief prog_vdac
    * @param vdac consigne (volt)
    * @param vdd positive voltage supply (volt)
    * @param vss nagative voltage supply (volt)
    * @param mode
    */
    void prog_vdac(float vdac, float vdd=5.0 ,float vss=0.0, unsigned char mode=ADC_MODE_SIMULATION);
    /**
    * @brief prog_gain
    * @param gain 70 to 1280

    * @param mode
    */
    void prog_gain(float gain=70.0, unsigned char mode=ADC_MODE_SIMULATION);

};
#endif