217 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
		
		
			
		
	
	
			217 lines
		
	
	
		
			10 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| 
								 | 
							
								/****************************************************************************
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
							 | 
						||
| 
								 | 
							
								 * be copied by any method or incorporated into another program without
							 | 
						||
| 
								 | 
							
								 * the express written consent of Aerospace C.Power. This Information or any portion
							 | 
						||
| 
								 | 
							
								 * thereof remains the property of Aerospace C.Power. The Information contained herein
							 | 
						||
| 
								 | 
							
								 * is believed to be accurate and Aerospace C.Power assumes no responsibility or
							 | 
						||
| 
								 | 
							
								 * liability for its use in any way and conveys no license or title under
							 | 
						||
| 
								 | 
							
								 * any patent or copyright and makes no representation or warranty that this
							 | 
						||
| 
								 | 
							
								 * Information is free from patent or copyright infringement.
							 | 
						||
| 
								 | 
							
								 *
							 | 
						||
| 
								 | 
							
								 * ****************************************************************************/
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* os shim includes */
							 | 
						||
| 
								 | 
							
								#include "os_types.h"
							 | 
						||
| 
								 | 
							
								#include "os_task.h"
							 | 
						||
| 
								 | 
							
								#include "os_utils.h"
							 | 
						||
| 
								 | 
							
								#include "os_task_api.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								/* common includes */
							 | 
						||
| 
								 | 
							
								#include "iot_io.h"
							 | 
						||
| 
								 | 
							
								#include "iot_errno_api.h"
							 | 
						||
| 
								 | 
							
								#include "iot_module.h"
							 | 
						||
| 
								 | 
							
								#include "apb_glb_reg.h"
							 | 
						||
| 
								 | 
							
								#include "ahb_rf.h"
							 | 
						||
| 
								 | 
							
								#include "phy_ana_glb.h"
							 | 
						||
| 
								 | 
							
								#include "phy_dfe_reg.h"
							 | 
						||
| 
								 | 
							
								#include "phy_rxtd_reg.h"
							 | 
						||
| 
								 | 
							
								#include "phy_reg.h"
							 | 
						||
| 
								 | 
							
								#include "phy_bb.h"
							 | 
						||
| 
								 | 
							
								#include "hw_reg_api.h"
							 | 
						||
| 
								 | 
							
								#include "granite_reg.h"
							 | 
						||
| 
								 | 
							
								#include "sadc.h"
							 | 
						||
| 
								 | 
							
								#include "sadc0_reg.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								#include "adc.h"
							 | 
						||
| 
								 | 
							
								#include "mac_sys_reg.h"
							 | 
						||
| 
								 | 
							
								#include "sadc_t.h"
							 | 
						||
| 
								 | 
							
								#include "phy_ana.h"
							 | 
						||
| 
								 | 
							
								#include "ana_pmu_wrap_rf.h"
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void sadc_reg_dump()
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    iot_printf("dump sadc register:\n");
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_CHN_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_CHN_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_CHN_MUX_SEL_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_CHN_MUX_SEL_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_CHN_SAMPLE_TIME_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_CHN_SAMPLE_TIME_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_CHN_FILTER_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_CHN_FILTER_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE0_THRS_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE0_THRS_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE1_THRS_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE1_THRS_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE2_THRS_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE2_THRS_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE3_0_THRS_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE3_0_THRS_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE3_1_THRS_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE3_1_THRS_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE3_2_THRS_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE3_2_THRS_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE3_3_THRS_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE3_3_THRS_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_MTR_SEL_MUX_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_MTR_SEL_MUX_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_VCM_CH1_SEL_MUX_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_VCM_CH1_SEL_MUX_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_RST_CH1_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_RST_CH1_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_IFRED_CH1_EN_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_IFRED_CH1_EN_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_MTR2PAD_EN_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_MTR2PAD_EN_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_MTR2PAD_EN_NEG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_MTR2PAD_EN_NEG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_MTR3PAD_EN_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_MTR3PAD_EN_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_ATB2PAD_EN_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_ATB2PAD_EN_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_SCLR_CTRL_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_SCLR_CTRL_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_SUB_DC_THRS_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_SUB_DC_THRS_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_DBG_BUS0_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_DBG_BUS0_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_SUB_DC_THRS_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_SUB_DC_THRS_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_TSW_SENS_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_TSW_SENS_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_TSW_PD_PGA_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_TSW_PD_PGA_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_TSW_METER_PGA_GAIN_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_TSW_METER_PGA_GAIN_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_INT_RAW_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_INT_RAW_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_INT_ST_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_INT_ST_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_INT_ENA_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_INT_ENA_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE_EXTHRS_SEL_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE_EXTHRS_SEL_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_PHASE_DMA_OUT_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_PHASE_DMA_OUT_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_CHN_CFG1_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_CHN_CFG1_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_DBG_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC0_DBG_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC_COMMON_CFG_ADDR: 0x%x\n", SADC0_READ_REG(CFG_SADC_COMMON_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("******************************\n");
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_CHN_MUX_SEL_CFG_ADDR 0x%x: 0x%x\n",CFG_SADC0_CHN_MUX_SEL_CFG_ADDR, SADC0_READ_REG(CFG_SADC0_CHN_MUX_SEL_CFG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_MTR2PAD_EN_NEG_ADDR 0x%x: 0x%x\n",CFG_SADC0_MTR2PAD_EN_NEG_ADDR,SADC0_READ_REG(CFG_SADC0_MTR2PAD_EN_NEG_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_MTR3PAD_EN_ADDR 0x%x: 0x%x\n",CFG_SADC0_MTR3PAD_EN_ADDR,SADC0_READ_REG(CFG_SADC0_MTR3PAD_EN_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_SADC0_TSW_PD_PGA_ADDR 0x%x: 0x%x\n",CFG_SADC0_TSW_PD_PGA_ADDR,SADC0_READ_REG(CFG_SADC0_TSW_PD_PGA_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_ANA_PMU_REG_CFG2_ADDR 0x%x: 0x%x\n",CFG_ANA_PMU_REG_CFG2_ADDR,ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG2_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_ANA_PMU_REG_CFG3_ADDR 0x%x: 0x%x\n",CFG_ANA_PMU_REG_CFG3_ADDR,ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG3_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_ANA_PMU_REG_CFG8_ADDR 0x%x: 0x%x\n",CFG_ANA_PMU_REG_CFG8_ADDR,ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG8_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_ANA_PMU_REG_CFG6_ADDR 0x%x: 0x%x\n",CFG_ANA_PMU_REG_CFG6_ADDR,ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG6_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_ANA_PMU_REG_CFG5_ADDR 0x%x: 0x%x\n",CFG_ANA_PMU_REG_CFG5_ADDR,ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG5_ADDR));
							 | 
						||
| 
								 | 
							
								    iot_printf("CFG_ANA_PMU_REG_CFG10_ADDR 0x%x: 0x%x\n",CFG_ANA_PMU_REG_CFG10_ADDR,ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG10_ADDR));
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								void sadc_ana_pmu_set(sada_test_mode_t sada_test_mode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint32_t tmp = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* ana pmu 0xc */
							 | 
						||
| 
								 | 
							
								    tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG3_ADDR);
							 | 
						||
| 
								 | 
							
								    REG_FIELD_SET(METER_ADC_PD_CH1, tmp, 0);
							 | 
						||
| 
								 | 
							
								    ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG3_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								    /* vcm pad 0x8 */
							 | 
						||
| 
								 | 
							
								    tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG2_ADDR);
							 | 
						||
| 
								 | 
							
								    REG_FIELD_SET(GPIO_REFCM_DIGEN, tmp, 0);
							 | 
						||
| 
								 | 
							
								    ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG2_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								    /* ref vcm chopper on 0x18 */
							 | 
						||
| 
								 | 
							
								    tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG6_ADDR);
							 | 
						||
| 
								 | 
							
								    REG_FIELD_SET(METER_BG_PD_CLK, tmp, 0);
							 | 
						||
| 
								 | 
							
								    ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG6_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								    /* meter gpio dig en */
							 | 
						||
| 
								 | 
							
								    tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG2_ADDR);
							 | 
						||
| 
								 | 
							
								    REG_FIELD_SET(GPIO_M_DIGEN, tmp, 0x000);
							 | 
						||
| 
								 | 
							
								    ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG2_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* CP meter 0x14 */
							 | 
						||
| 
								 | 
							
								    tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG5_ADDR);
							 | 
						||
| 
								 | 
							
								    REG_FIELD_SET(METER_BG_BYP_R, tmp, 0x1);
							 | 
						||
| 
								 | 
							
								    ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG5_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								    /* ch0 chopper 0x20 */
							 | 
						||
| 
								 | 
							
								    tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG8_ADDR);
							 | 
						||
| 
								 | 
							
								    REG_FIELD_SET(TSW_FCHP_BYPS_CH1, tmp, 0x0);
							 | 
						||
| 
								 | 
							
								    ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG8_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								    if (sada_test_mode != CP) {
							 | 
						||
| 
								 | 
							
								        /* ch0 chopper 0x20 */
							 | 
						||
| 
								 | 
							
								        tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG8_ADDR);
							 | 
						||
| 
								 | 
							
								        REG_FIELD_SET(TSW_IC2PAD_EN, tmp, 0x1);
							 | 
						||
| 
								 | 
							
								        ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG8_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /* ch0 chopper 0x28 */
							 | 
						||
| 
								 | 
							
								        tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG10_ADDR);
							 | 
						||
| 
								 | 
							
								        REG_FIELD_SET(ICPTAT_CAL_EN, tmp, 0x1);
							 | 
						||
| 
								 | 
							
								        ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG10_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        /* ch0 chopper 0x20 */
							 | 
						||
| 
								 | 
							
								        tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG8_ADDR);
							 | 
						||
| 
								 | 
							
								        REG_FIELD_SET(TSW_IC2PAD_EN, tmp, 0x0);
							 | 
						||
| 
								 | 
							
								        ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG8_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        /* ch0 chopper 0x28 */
							 | 
						||
| 
								 | 
							
								        tmp = ANA_PMU_WRAP_RF_READ_REG(CFG_ANA_PMU_REG_CFG10_ADDR);
							 | 
						||
| 
								 | 
							
								        REG_FIELD_SET(ICPTAT_CAL_EN, tmp, 0x0);
							 | 
						||
| 
								 | 
							
								        ANA_PMU_WRAP_RF_WRITE_REG(CFG_ANA_PMU_REG_CFG10_ADDR, tmp);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								int32_t sadc_ref_voltg_test(uint8_t phase_num, uint8_t sel_scl,sada_test_mode_t sada_test_mode)
							 | 
						||
| 
								 | 
							
								{
							 | 
						||
| 
								 | 
							
								    uint8_t timeout = 0;
							 | 
						||
| 
								 | 
							
								    uint32_t sample_data = 0;
							 | 
						||
| 
								 | 
							
								    int32_t sum_data_tmp = 0;
							 | 
						||
| 
								 | 
							
								    int32_t sum_data = 0;
							 | 
						||
| 
								 | 
							
								    int32_t sample_tmp = 0;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* adc init */
							 | 
						||
| 
								 | 
							
								    sadc_init(ANA_SADC0, NULL);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    sadc_ana_pmu_set(sada_test_mode);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* 1 phase mode */
							 | 
						||
| 
								 | 
							
								    sadc_phase_mode_set(ANA_SADC0, 0);
							 | 
						||
| 
								 | 
							
								    sadc_phase_sel(ANA_SADC0, phase_num);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* mtr sel scl from Meter */
							 | 
						||
| 
								 | 
							
								    sadc_mtr_sel_scl_mux(phase_num, 0x0);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    sadc_mtr3pad_en(phase_num, 1);
							 | 
						||
| 
								 | 
							
								    if (sada_test_mode == CP) {
							 | 
						||
| 
								 | 
							
								        sadc_mtr2pad_en_neg(phase_num, 1);
							 | 
						||
| 
								 | 
							
								    } else {
							 | 
						||
| 
								 | 
							
								        sadc_mtr2pad_en_neg(phase_num, 0);
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* sel scl */
							 | 
						||
| 
								 | 
							
								    sadc_phase_sel_scl_mux(phase_num, sel_scl);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    sadc_tsw_meter_pga_gain(ANA_SADC0, phase_num, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* start en */
							 | 
						||
| 
								 | 
							
								    sadc_start_en(ANA_SADC0, 1);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* init discard number for crosstalk */
							 | 
						||
| 
								 | 
							
								    sadc_discard_num_set(ANA_SADC0, phase_num, 6);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    /* dump sadc register value */
							 | 
						||
| 
								 | 
							
								    //sadc_reg_dump();
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								    int loop = 500;
							 | 
						||
| 
								 | 
							
								    while (loop--) {
							 | 
						||
| 
								 | 
							
								        sample_data = sadc_poll_data_start(phase_num, \
							 | 
						||
| 
								 | 
							
								                0,
							 | 
						||
| 
								 | 
							
								                0,
							 | 
						||
| 
								 | 
							
								                &timeout);
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								        if (1 == timeout) {
							 | 
						||
| 
								 | 
							
								            iot_printf("sadc_sum_get time out!\n");
							 | 
						||
| 
								 | 
							
								        } else {
							 | 
						||
| 
								 | 
							
								            sample_data = sample_data & 0xfffff;
							 | 
						||
| 
								 | 
							
								            if (sample_data & 0x80000) {
							 | 
						||
| 
								 | 
							
								                sample_tmp = sample_data - 0x100000;
							 | 
						||
| 
								 | 
							
								            } else {
							 | 
						||
| 
								 | 
							
								                sample_tmp = sample_data;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								            sum_data_tmp +=sample_tmp;
							 | 
						||
| 
								 | 
							
								            if (loop%50 == 0) {
							 | 
						||
| 
								 | 
							
								                iot_printf("%d\n", sum_data_tmp);
							 | 
						||
| 
								 | 
							
								                sum_data = sum_data_tmp;
							 | 
						||
| 
								 | 
							
								                sum_data_tmp = 0;
							 | 
						||
| 
								 | 
							
								            }
							 | 
						||
| 
								 | 
							
								        }
							 | 
						||
| 
								 | 
							
								    }
							 | 
						||
| 
								 | 
							
								    return sum_data;
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								}
							 | 
						||
| 
								 | 
							
								
							 |