MXC-A36_2024.04.17/MXC-Screen_display/components/drivers/device/fr30xx/trim_fr30xx.c

82 lines
2.3 KiB
C

/*
******************************************************************************
* @file trim_fr30xx.c
* @author FreqChip Firmware Team
* @version V1.0.0
* @date 2023
* @brief Config Chip analog/digit/RF using Chip Probing(CP) and
Final Test(FT) trim parameters.
******************************************************************************
* @attention
*
* Copyright (c) 2022 FreqChip.
* All rights reserved.
******************************************************************************
*/
#include "fr30xx.h"
#include "crc32.h"
static struct_ADC_Cal_Param_t ADC_Cal_Param;
/*********************************************************************
* @fn trim_cp_config
*
* @brief Config Chip analog/digit/RF using Chip Probing(CP) trim parameters.
*
* @param none.
* @return none.
*/
void trim_cp_config(void)
{
/* ------------------------- */
/* FT trim */
/* ------------------------- */
}
/*********************************************************************
* @fn trim_ft_config
*
* @brief Config Chip analog/digit/RF using Final Test(FT) trim parameters.
*
* @param none.
* @return none.
*/
void trim_ft_config(void)
{
uint32_t FT_CRC;
struct_FT_Trim_t FT_Trim_Param;
flash_OTP_read(QSPI0,0x1000,sizeof(FT_Trim_Param),(uint8_t*)&FT_Trim_Param);
FT_CRC = crc32(0x00000000, (void *)&FT_Trim_Param, (uint32_t)&FT_Trim_Param.u32_crc - (uint32_t)&FT_Trim_Param);
if(FT_CRC == FT_Trim_Param.u32_crc)
{
if(FT_Trim_Param.u16_Version == 0xA001)
{
/* configure IOLDO output to 3.3v */
ool_write(PMU_REG_IOLDO1_CTRL_0, 0x0a);
/* config SBG */
ool_write(PMU_REG_SBG_CFG,FT_Trim_Param.u16_ioldo);
//Get the adc calibration value
ADC_Cal_Param.u16_slopeA = FT_Trim_Param.Param.V1.u16_SlopeA;
ADC_Cal_Param.u16_slopeB = FT_Trim_Param.Param.V1.u16_SlopeB;
ADC_Cal_Param.s32_constantA = FT_Trim_Param.Param.V1.s32_ConstantA;
ADC_Cal_Param.s32_constantB = FT_Trim_Param.Param.V1.s32_ConstantB;
}
}
}
/*********************************************************************
* @fn trim_get_adc_cal_param
*
* @brief get adc ft calibration param.
*/
struct_ADC_Cal_Param_t *trim_get_adc_cal_param(void)
{
return &ADC_Cal_Param;
}