ads1259

Dependents:   Chromatograph_Mobile Chromatograph_Mobile

PGA280.h

Committer:
vitlog
Date:
2020-06-22
Revision:
1:533ce2102fcc
Parent:
0:f9ba28ab9f4c

File content as of revision 1:533ce2102fcc:

#ifndef _PGA280_ARDUINO_H    /* Guard against multiple inclusion */
#define _PGA280_ARDUINO_H
#include <stdint.h>
#include "PerifConfig.h"
//#include <stdbool.h>
//#include <stddef.h>
//#include <stdlib.h>

/* Provide C++ Compatibility */
#ifdef __cplusplus
extern "C" {
#endif

// commands
#define WRITE_BUF_PGA280      0x60
#define WRITE_PGA280          0x40
#define READ_PGA280           0x80
#define CS_DIRECT_BUF_PGA280  0xE0
#define CS_DIRECT_PGA280      0xC0

// registers адреса регистров
#define PGA280_MUX_GAIN_ADR       0x00
#define PGA280_RESET_ADR          0x01
#define PGA280_SPI_MODE_ADR       0x02
#define PGA280_BUF_TIMEOUT_ADR    0x03
#define PGA280_ERROR_ADR          0x04
#define PGA280_GPIO_DATA_ADR      0x05
#define PGA280_INPUT_SWITCH0_ADR  0x06
#define PGA280_INPUT_SWITCH1_ADR  0x07
#define PGA280_GPIO_DIR_ADR       0x08
#define PGA280_CS_MODE_ADR        0x09
#define PGA280_CONFIG0_ADR        0x0A
#define PGA280_CONFIG1_ADR        0x0B
#define PGA280_SP_FUNCTION_ADR    0x0C

// Gain
#define GAIN_1_8_PGA280       0x00       
#define GAIN_1_4_PGA280       0x01
#define GAIN_1_2_PGA280       0x02
#define GAIN_1_PGA280         0x03
#define GAIN_2_PGA280         0x04
#define GAIN_4_PGA280         0x05
#define GAIN_8_PGA280         0x06
#define GAIN_16_PGA280        0x07
#define GAIN_32_PGA280        0x08
#define GAIN_64_PGA280        0x09
#define GAIN_128_PGA280       0x0A

namespace pga280{};
using namespace pga280;

/*Удобное обращение к регистрам если не требуется высокая скорость*/

//Register 0 - Gain and Optional MUX Register (название из даташита)
typedef union {
    struct {
        uint8_t
         MUX0:1,
         MUX1:1,
         MUX2:1,
         G0:1,
         G1:1,
         G2:1,
         G3:1,
         G4:1;
    };
    struct {
        uint8_t MUX:3;
        uint8_t GAIN:4;
        uint8_t :1;
    };    
    uint8_t w;
    
}__PGA280_MUX_GAIN_t;                          //это объявление типа.
extern __PGA280_MUX_GAIN_t PGA280_MUX_GAIN;            //объявление переменной

//Register 2 - SPI: MODE Selection to GPIO-Pin (название из даташита)
typedef union {
    struct {
        uint8_t
         CP0:1,
         CP1:1,
         CP2:1,
         CP3:1,
         CP4:1,
         CP5:1,
         CP6:1,
         :1;
    };
    struct {
        uint8_t CP:7;
        uint8_t :1;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_SPI_MODE_t;                          //это объявление типа.
extern __PGA280_SPI_MODE_t PGA280_SPI_MODE;            //объявление переменной

//Register 3 - BUF Timeout Register (название из даташита)
typedef union {
    struct {
        uint8_t
         BUFTIM0:1,
         BUFTIM1:1,
         BUFTIM2:1,
         BUFTIM3:1,
         BUFTIM4:1,
         BUFTIM5:1,
         :2;
    };
    struct {
        uint8_t BUFTIM:6;
        uint8_t :2;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_BUF_TIMEOUT_t;                          //это объявление типа.
extern __PGA280_BUF_TIMEOUT_t PGA280_BUF_TIMEOUT;            //объявление переменной

//Register 4 -  Error Register (название из даташита)
typedef union {
    struct {
        uint8_t
         IOVerr:1,                          //Input Overvoltage
         GAINerr:1,                         //Gain Network Overload
         OUTerr:1,                          //Output Stage Error (allow approximately 6µs activation delay).
         EF:1,                              //Error Flag. Logic OR combination of error bits of Register 10. This bit can be connected to GPIO3 pin if the bit is configured for output (Register 8) and as a special function (Register 12).
         ICAerr:1,                          //Input Clamp Active
         BUFA:1,                            // Buffer Active
         IARerr:1,                          //Input Amplifier Saturation
         CHKerr:1;                          //Checksum error in SPI. This bit is only active if checksum is enabled.
                                            //This bit is set to 1 when the checksum byte is incorrect.
    };    
    struct {
        uint8_t ERR:8;
    };
}__PGA280_ERROR_t;                          //это объявление типа.
extern __PGA280_ERROR_t PGA280_ERROR;            //объявление переменной

//Register 5 -  GPIO Register (название из даташита)
typedef union {
    struct {
        uint8_t
         GPIO0:1,
         GPIO1:1,
         GPIO2:1,
         GPIO3:1,
         GPIO4:1,
         GPIO5:1,
         GPIO6:1,
         :1;
    };
    struct {
        uint8_t GPIO:7;
        uint8_t :1;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_GPIO_t;                       //это объявление типа.
extern __PGA280_GPIO_t PGA280_GPIO;            //объявление переменной

//Register 6 -  Input Switch Control Register 1 (название из даташита)
typedef union {
    struct {
        uint8_t
         SW_D12:1,
         SW_C2:1,
         SW_C1:1,
         SW_B2:1,
         SW_B1:1,
         SW_A2:1,
         SW_A1:1,
         :1;
    };
    struct {
        uint8_t SWCR0:7;
        uint8_t :1;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_INPUT_SWITCH0_t;                       //это объявление типа.
extern __PGA280_INPUT_SWITCH0_t PGA280_INPUT_SWITCH0;            //объявление переменной

//Register 7 -  Input Switch Control Register 2 (название из даташита)
typedef union {
    struct {
        uint8_t
         SW_G2:1,
         SW_G1:1,
         SW_F2:1,
         SW_F1:1,
         :4;
    };
    struct {
        uint8_t SWCR1:4;
        uint8_t :4;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_INPUT_SWITCH1_t;                       //это объявление типа.
extern __PGA280_INPUT_SWITCH1_t PGA280_INPUT_SWITCH1;            //объявление переменной

//Register 8 -  GPIO Configuration Register (название из даташита)
typedef union {
    struct {
        uint8_t
         DIR0:1,
         DIR1:1,
         DIR2:1,
         DIR3:1,
         DIR4:1,
         DIR5:1,
         DIR6:1,
         :1;
    };
    struct {
        uint8_t DIR:7;
        uint8_t :1;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_GPIO_DIR_t;                       //это объявление типа.
extern __PGA280_GPIO_DIR_t PGA280_GPIO_DIR;        //объявление переменной

//Register 9 -  CS Configuration Mode Register (название из даташита)
typedef union {
    struct {
        uint8_t
         ECS0:1,
         ECS1:1,
         ECS2:1,
         ECS3:1,
         ECS4:1,
         ECS5:1,
         ECS6:1,
         :1;
    };
    struct {
        uint8_t ECS:7;
        uint8_t :1;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_CS_MODE_t;                       //это объявление типа.
extern __PGA280_CS_MODE_t PGA280_CS_MODE;        //объявление переменной

//Register 10 -  Configuration Register 1 (название из даташита)
typedef union {
    struct {
        uint8_t
         IOVerr:1,                          //Input Overvoltage
         GAINerr:1,                         //Gain Network Overload
         OUTerr:1,                          //Output Stage Error (allow approximately 6µs activation delay).
         EDBUFA:1,                         
         ICAerr:1,                          //Input Clamp Active
         BUFAPOL:1,                        
         IARerr:1,                          //Input Amplifier Saturation
         MUX_D:1;                     
    };    
    struct {
        uint8_t CFG0:8;
    };
}__PGA280_CONFIG0_t;                          //это объявление типа.
extern __PGA280_CONFIG0_t PGA280_CONFIG0;            //объявление переменной

//Register 11 -  Configuration Register 1 (название из даташита)
typedef union {
    struct {
        uint8_t
         CHKsumE:1,
         :1,       
         FLGTIM0:1,                         
         FLGTIM1:1,                         
         FLGTIM2:1,                         
         FLGTIM3:1,                   
         :1,                          
         LTD:1;                          
                                           
    };
    struct {
        uint8_t
        :2,
        FLGTIM:4,
        :2;
    };
    struct {
        uint8_t CFG1:8;
    };
}__PGA280_CONFIG1_t;                          //это объявление типа.
extern __PGA280_CONFIG1_t PGA280_CONFIG1;            //объявление переменной

//Register 12 - Special Functions Register (название из даташита)
typedef union {
    struct {
        uint8_t
        /*If the GPIO pins are configured as outputs and these bits are set to 1, the GPIO pins are
        *controlled from Register 0 (if MUX-D = 0).*/
        MUX0:1,
        MUX1:1,
        MUX2:1,
        
        /*A logic OR combination of error bits; see Register 10. This flag can control GPIO3 if this pin is
        *configured as an output and EFout = 1.*/
        EFout:1,
        
        /*The current buffer can be triggered externally by pin GPIO4, if configured as an input. The low-to-
        *high edge of a pulse starts the buffer with a delay of three to four clock cycles. If held high, the buffer [BUFA]
        *remains active. The active time is extended by a minimum of three to four clock cycles plus the time set with FLAGTIM.*/
        BUFTin:1,
        
        /*Pin GPIO5 indicates a buffer active condition (if configured as an output). The BUFA output signal
        * is active high by default, but can be inverted to active low by BUFA Pol.*/
        BUFAout:1,
        
        //External connection for external oscillator input to pin GPIO6 (GPIO6 configured as an input).
        SYNCin:1,                      
        
        //Internal oscillator connected to pin GPIO6 for output (GPIO6 configured as an output).
        OSCout:1;
    };
    struct {
        uint8_t MUX:3;
        uint8_t :5;
    };
    struct {
        uint8_t w:8;
    };
}__PGA280_SP_FUNCTION_t;                          //это объявление типа.
extern __PGA280_SP_FUNCTION_t PGA280_SP_FUNCTION;        //объявление переменной

void pga280_setAdress ( unsigned char adr );
void pga280_resetAdress ( void );
char pga280_sendCommandDevice ( unsigned char command, unsigned char adr );
unsigned char pga280_readOneRegisterDevice ( unsigned char reg, unsigned char adr );
void pga280_writeOneRegisterDevice ( unsigned char reg, unsigned char data, unsigned char adr );
void pga280_writeBufOneRegisterDevice ( unsigned char reg, unsigned char data, unsigned char adr );
void pga280_directCS ( unsigned char ex_cs, unsigned char adr );
void pga280_resetDevice ( unsigned char adr );
void pga280_setMUX (unsigned char mux, unsigned char adr );
void pga280_setGAIN ( unsigned char gain, unsigned char adr );
void pga280_directCsBegin ( unsigned char exCS, unsigned char adr );
void pga280_directCsEnd ( void );
void pga280_setGPIO ( unsigned char num, unsigned char adr );
void pga280_resetGPIO ( unsigned char num, unsigned char adr );

    
    /* Provide C++ Compatibility */
#ifdef __cplusplus
}
#endif

#endif /* _EXAMPLE_FILE_NAME_H */

/* *****************************************************************************
 End of File
 */