244 lines
7.1 KiB
C
244 lines
7.1 KiB
C
/*!
|
|
* \file xc_drv_pga.c
|
|
*
|
|
* \brief Target pga implementation
|
|
*
|
|
* \copyright Revised BSD License, see section \ref LICENSE.
|
|
*
|
|
* \code
|
|
*
|
|
* _ __ _ ________ _
|
|
* | |/ /(_)___ / ____/ /_ (_)___
|
|
* | // / __ \/ / / __ \/ / __ \
|
|
* / |/ / / / / /___/ / / / / /_/ /
|
|
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
|
* /_/
|
|
* (C) 2022-2025 XinChip
|
|
*
|
|
* \endcode
|
|
*
|
|
* \author ( XinChip ) Alex-J
|
|
*
|
|
* \author ( XinChip )
|
|
*/
|
|
|
|
/*-----------------------------------------------------------------------------------
|
|
INCLUDE HEADE FILES
|
|
------------------------------------------------------------------------------------*/
|
|
#include "xc_drv_pga.h"
|
|
#include "xc60xx.h"
|
|
#include "xc_reg_cpr.h"
|
|
|
|
/*------------------------------------------------------------------------------------
|
|
Macros
|
|
-------------------------------------------------------------------------------------*/
|
|
|
|
|
|
/*------------------------------------------------------------------------------------
|
|
Global Variables
|
|
-------------------------------------------------------------------------------------*/
|
|
|
|
/**
|
|
* @brief xc_pga_init
|
|
* @details
|
|
* @param void
|
|
* @retval void
|
|
*/
|
|
|
|
void xc_pga_init(PGA_InitCfg_t *pga_cfg)
|
|
{
|
|
/*opa level 1 gain +20DB*/
|
|
cpr_opa_ctrl_reg__micgain_2__setf(pga_cfg->gain2);
|
|
/*opa level 2 gain +22.6DB*/
|
|
cpr_opa_ctrl_reg__volr_2__setf(pga_cfg->volr2);
|
|
/*bias register controls current and difference MIC*/
|
|
cpr_opa_ctrl_reg__resadj__setf(pga_cfg->resadj);
|
|
/*Comparator hysteresis voltage control*/
|
|
cpr_opa_ctrl_reg__cmp_ctrl__setf(pga_cfg->cmp_ctrl);
|
|
/*Comparator current control*/
|
|
cpr_opa_ctrl_reg__cmp_ibc__setf(pga_cfg->cmp_ibc);
|
|
/*temperature sensor*/
|
|
cpr_opa_ctrl_reg__en_temp_sensor__setf(pga_cfg->en_temp_sensor);
|
|
/*open pdbias*/
|
|
cpr_opa_ctrl_reg__pdbias__setf(pga_cfg->bias);
|
|
cpr_opa_ctrl_reg__opa_ctrl__setf(pga_cfg->opa_ctrl);
|
|
/*opa pd signal*/
|
|
cpr_opa_ctrl_reg__pdopa__setf(pga_cfg->pdopa);
|
|
cpr_opa_ctrl_reg__micgain__setf(pga_cfg->micgain);
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_micgain_2_set
|
|
* @details
|
|
* @param micgain2 (BIT0) £ºinput First-order gain ( PGA_MIC_GAIN2_ENABLE - PGA_MIC_GAIN2_DISABLE)
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_micgain_2_set(uint8_t micgain2)
|
|
{
|
|
cpr_opa_ctrl_reg__micgain_2__setf(micgain2);
|
|
}
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_volr2_set
|
|
* @details
|
|
* @param volr2 (BIT0 - BIT3) £ºinput Two-stage gain ( PGA_VOLR2_GAIN_0_0DB - PGA_VOLR2_GAIN_0_0DB)
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_volr2_set(uint8_t volr2)
|
|
{
|
|
cpr_opa_ctrl_reg__volr_2__setf(volr2);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_resadj_set
|
|
* @details
|
|
* @param resadj (BIT0 - BIT4) BIT2 -BIT4 :ELECTRICITY (PGA_ELECTRICITY_LEVEL0 - PGA_ELECTRICITY_LEVEL7)
|
|
BIT1:pga input (SINGLE or PGA_DIFFERENCE)
|
|
BIT0:unused
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_resadj_set(uint8_t resadj)
|
|
{
|
|
cpr_opa_ctrl_reg__resadj__setf(resadj);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_cmp_ctrl_set
|
|
* @details
|
|
* @param cmp_ctrl : CMP_CTRL_VOLTAGE_LEVEL0 - CMP_CTRL_VOLTAGE_LEVEL3
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_cmp_ctrl_set(uint8_t cmp_ctrl)
|
|
{
|
|
cpr_opa_ctrl_reg__cmp_ctrl__setf(cmp_ctrl);
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_cmp_ibc_set
|
|
* @details
|
|
* @param cmp_ibc : CMP_IBC_ELECTRICITY_LEVEL0 - CMP_IBC_ELECTRICITY_LEVEL3
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_cmp_ibc_set(uint8_t cmp_ibc)
|
|
{
|
|
cpr_opa_ctrl_reg__cmp_ibc__setf(cmp_ibc);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_temp_sensor_enable
|
|
* @details
|
|
* @param en_temp_sensor : TEMP_SENSOR_ENABLE / TEMP_SENSOR_DISABLE
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_temp_sensor_enable(uint8_t en_temp_sensor)
|
|
{
|
|
cpr_opa_ctrl_reg__en_temp_sensor__setf(en_temp_sensor);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_volr_set
|
|
* @details unused
|
|
* @param volr
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_volr_set(uint8_t volr)
|
|
{
|
|
cpr_opa_ctrl_reg__volr__setf(volr);
|
|
}
|
|
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_pdbias_set
|
|
* @details
|
|
* @param pdbias :pdbias signal : 1:PD 0:EN
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_pdbias_set(uint8_t pdbias)
|
|
{
|
|
cpr_opa_ctrl_reg__pdbias__setf(pdbias);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
********************************************************************************************
|
|
* @brief xc_pga_opa_ctrl_set
|
|
* @details
|
|
* @param opa_ctrl (BIT0 - BIT2) BIT2:(pdopa signal : 1:pd 0:en)
|
|
BIT1:(pdopa signal input swap: 1:enable 0:disable)
|
|
BIT0:(pdopa CTRL ELECTRICITY: 1:min 0:max)
|
|
* @retval void
|
|
*********************************************************************************************
|
|
**/
|
|
void xc_pga_opa_ctrl_set(uint8_t opa_ctrl)
|
|
{
|
|
cpr_opa_ctrl_reg__opa_ctrl__setf(opa_ctrl);
|
|
}
|
|
|
|
|
|
/**
|
|
**********************************************************************************************
|
|
* @brief xc_pga_pdopa_set
|
|
* @details
|
|
* @param pdopa signal : 1:pd 0:en
|
|
* @retval void
|
|
**********************************************************************************************
|
|
*/
|
|
void xc_pga_pdopa_set(uint8_t pdopa)
|
|
{
|
|
cpr_opa_ctrl_reg__pdopa__setf(pdopa);
|
|
}
|
|
|
|
|
|
|
|
/**
|
|
**********************************************************************************************
|
|
* @brief xc_pga_micgain_set
|
|
* @details unused
|
|
* @param micgain
|
|
* @retval void
|
|
**********************************************************************************************
|
|
*/
|
|
void xc_pga_micgain_set(uint8_t micgain)
|
|
{
|
|
cpr_opa_ctrl_reg__micgain__setf(micgain);
|
|
}
|
|
|
|
|
|
|
|
|
|
|