/* ****************************************************************************** * @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; }