pga.h 4.1 KB
/***********************************************************************************************************************
* Copyright (C) All rights reserved.
***********************************************************************************************************************/

/***********************************************************************************************************************
* @file    pga.h
* @brief   This file implements device driver for PGA module.
* @version 1.0.0
* @date    2019/12/24
***********************************************************************************************************************/
#ifndef PGA_H
#define PGA_H

/***********************************************************************************************************************
Macro definitions (Register bit)
***********************************************************************************************************************/
/*
    PGA control register (PGACTL) 
*/
/* PGA operation selection (PGAEN) */
#define _00_PGA_OPERATION_STOP                        (0x00U) /* PGA operation stopped */
#define _80_PGA_OPERATION_ENABLE                      (0x80U) /* PGA operation enabled */
/* GND selection of feedback resistance of the programmable gain amplifier (PVRVS) */
#define _00_PGA_VSS_SELECTED                          (0x00U) /* selects VSS */
#define _08_PGA_PGAGND_SELECTED                       (0x08U) /* selects PGAGND */
/* Selected PGA amplification (PGAVG1,PGAVG0) */
#define _00_PGA_AMPLIFICATION_X4                      (0x00U) /* *4 is selected as the gain */
#define _01_PGA_AMPLIFICATION_X8                      (0x01U) /* *8 is selected as the gain */
#define _02_PGA_AMPLIFICATION_X10                     (0x02U) /* *10 is selected as the gain */
#define _03_PGA_AMPLIFICATION_X12                     (0x03U) /* *12 is selected as the gain */
#define _04_PGA_AMPLIFICATION_X14                     (0x04U) /* *14 is selected as the gain */
#define _05_PGA_AMPLIFICATION_X16                     (0x05U) /* *16 is selected as the gain */
#define _06_PGA_AMPLIFICATION_X32                     (0x06U) /* *32 is selected as the gain */
#define _07_PGA_AMPLIFICATION_X32                     (0x07U) /* *32 is selected as the gain */

#define PGAEN                                         (0x80U) /* PGA operation enabled */
#define C0MON                                         (1<<3U) /* CMP0 monitor flag */
#define C1MON                                         (1<<7U) /* CMP1 monitor flag */

/***********************************************************************************************************************
Macro definitions
***********************************************************************************************************************/

/***********************************************************************************************************************
Typedef definitions
***********************************************************************************************************************/
typedef enum 
{
    PGA_CHANNEL_0 = 1U,  // PGA0
    PGA_CHANNEL_1 = 2U,  // PGA1
    PGA_CHANNEL_A = 3U   // PGA0 & PGA1
} pga_channel_t;

typedef enum 
{
    PGA_VSS_REFERENCE_VOLTAGE    = 0U,  // Select VSS as GROUND of feedback resistance string 
    PGA_PGAGND_REFERENCE_VOLTAGE = 1U   // Select PGAGND as GROUND of feedback resistance string 
} pga_vref_t;

typedef enum 
{
    PGA_GAIN_X4   = 0U,  // X4
    PGA_GAIN_X8   = 1U,  // X8
    PGA_GAIN_X10  = 2U,  // X10
    PGA_GAIN_X12  = 3U,  // X12
    PGA_GAIN_X14  = 4U,  // X14
    PGA_GAIN_X16  = 5U,  // X16
    PGA_GAIN_X32  = 6U  // X32
} pga_gain_t;

/***********************************************************************************************************************
Global functions
***********************************************************************************************************************/
void PGA_Init(pga_channel_t ch, pga_vref_t vref, pga_gain_t gain);
void PGA_Start(pga_channel_t ch);
void PGA_Stop(pga_channel_t ch);
/* Start user code for function. Do not edit comment generated here */
/* End user code. Do not edit comment generated here */
#endif