frederic blanc / AD8556

Dependents:   AD8556_HelloWolrd

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers AD8556.h Source File

AD8556.h

00001 /**
00002  * @brief AD8556:  Digitally Programmable Sensor Signal Amplifier with EMI Filters
00003  * http://www.analog.com/en/specialty-amplifiers/instrumentation-amplifiers/ad8556/products/product.html
00004  * @date 05/09/2013
00005  * @author F.BLANC LAAS-CNRS
00006  * http://homepages.laas.fr/fblanc/
00007  */
00008 #ifndef AD8556_H
00009 
00010 #define AD8556_H
00011 
00012 #include "mbed.h"
00013 enum ADC_MODE {
00014     ADC_MODE_SENSE_CURENT = 0x00,
00015     ADC_MODE_SIMULATION = 0x01,
00016     ADC_MODE_FUSE = 0x02,
00017     ADC_MODE_READ = 0x03
00018 };
00019 enum ADC_FUNCTION {
00020     ADC_Change_Sense_Current = 0x00,
00021     ADC_Simulate_Parameter_Value = 0x01,
00022     ADC_Program_Parameter_Value = 0x02,
00023     ADC_Read_Parameter_Value = 0x03
00024 };
00025 enum ADC_PARAMETER {
00026     ADC_Second_Stage_Gain_Code = 0x00,
00027     ADC_First_Stage_Gain_Code = 0x01,
00028     ADC_Output_Offset_Code = 0x02,
00029     ADC_Other_Functions = 0x03
00030 };
00031 /** AD8556 class.
00032  *  Used for controlling a AD8556 Instrumentation Amplifiers  connected via Single-wire serial interface.
00033  *
00034  */
00035 class AD8556
00036 {
00037 protected:
00038 private:
00039     /**
00040      * @brief write_bit
00041      *
00042      * @param bit 1 or 0
00043      */
00044     void write_bit(unsigned char bit);
00045     /**
00046      * @brief read_bit
00047      *
00048      * @return bit 1 or 0
00049      */
00050     unsigned char read_bit();
00051     /**
00052     * @brief trame
00053     * @param parameter
00054     * @param mode
00055     * @param data
00056     */
00057     void trame(unsigned char parameter,unsigned char mode,unsigned char data);
00058 public:
00059     /**
00060      * @brief Constructor.
00061      * @param dig
00062      */
00063     AD8556(PinName dig);
00064     DigitalInOut _dig;
00065 
00066     /**
00067      * @brief Destructor.
00068      */
00069     ~AD8556();
00070     /**
00071     * @brief init
00072     * @param First_Stage_Gain_Code
00073     * @param Second_Stage_Gain_Code
00074     * @param Vdac_Code
00075     */
00076     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);
00077     /**
00078     * @brief prog_vdac
00079     * @param vdac consigne (volt)
00080     * @param vdd positive voltage supply (volt)
00081     * @param vss nagative voltage supply (volt)
00082     * @param mode
00083     */
00084     void prog_vdac(float vdac, float vdd=5.0 ,float vss=0.0, unsigned char mode=ADC_MODE_SIMULATION);
00085     /**
00086     * @brief prog_gain
00087     * @param gain 70 to 1280
00088 
00089     * @param mode
00090     */
00091     void prog_gain(float gain=70.0, unsigned char mode=ADC_MODE_SIMULATION);
00092 
00093 };
00094 #endif