/****************************************************************************** * \attention * *

© COPYRIGHT 2020 STMicroelectronics

* * Licensed under ST MYLIBERTY SOFTWARE LICENSE AGREEMENT (the "License"); * You may not use this file except in compliance with the License. * You may obtain a copy of the License at: * * www.st.com/myliberty * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, * AND SPECIFICALLY DISCLAIMING THE IMPLIED WARRANTIES OF MERCHANTABILITY, * FITNESS FOR A PARTICULAR PURPOSE, AND NON-INFRINGEMENT. * See the License for the specific language governing permissions and * limitations under the License. * ******************************************************************************/ /* * PROJECT: ST25R3916 firmware * Revision: * LANGUAGE: ISO C99 */ /*! \file st25r3916_aat.h * * \author * * \brief ST25R3916 Antenna Tuning * * The antenna tuning algorithm tries to find the optimal settings for * the AAT_A and AAT_B registers, which are connected to variable capacitors * to tune the antenna matching. * */ #ifndef ST25R3916_AAT_H #define ST25R3916_AAT_H #include "platform.h" #include "st_errno.h" /* ****************************************************************************** * GLOBAL DATATYPES ****************************************************************************** */ /*! * struct representing input parameters for the antenna tuning */ struct st25r3916AatTuneParams{ uint8_t aat_a_min; /*!< min value of A cap */ uint8_t aat_a_max; /*!< max value of A cap */ uint8_t aat_a_start; /*!< start value of A cap */ uint8_t aat_a_stepWidth; /*!< increment stepWidth for A cap */ uint8_t aat_b_min; /*!< min value of B cap */ uint8_t aat_b_max; /*!< max value of B cap */ uint8_t aat_b_start; /*!< start value of B cap */ uint8_t aat_b_stepWidth; /*!< increment stepWidth for B cap */ uint8_t phaTarget; /*!< target phase */ uint8_t phaWeight; /*!< weight of target phase */ uint8_t ampTarget; /*!< target amplitude */ uint8_t ampWeight; /*!< weight of target amplitude */ bool doDynamicSteps; /*!< dynamically reduce step size in algo */ uint8_t measureLimit; /*!< max number of allowed steps/measurements */ }; /*! * struct representing out parameters for the antenna tuning */ struct st25r3916AatTuneResult{ uint8_t aat_a; /*!< serial cap after tuning */ uint8_t aat_b; /*!< parallel cap after tuning */ uint8_t pha; /*!< phase after tuning */ uint8_t amp; /*!< amplitude after tuning */ uint16_t measureCnt; /*!< number of measures performed */ }; /*! ***************************************************************************** * \brief Perform antenna tuning * * This function starts an antenna tuning procedure by modifying the serial * and parallel capacitors of the antenna matching circuit via the AAT_A * and AAT_B registers. * * \param[in] tuningParams : Input parameters for the tuning algorithm. If NULL * default values will be used. * \param[out] tuningStatus : Result information of performed tuning. If NULL * no further information is returned, only registers * ST25R3916 (AAT_A,B) will be adapted. * * \return ERR_IO : Error during communication. * \return ERR_PARAM : Invalid input parameters * \return ERR_NONE : No error. * ***************************************************************************** */ extern ReturnCode st25r3916AatTune(const struct st25r3916AatTuneParams *tuningParams, struct st25r3916AatTuneResult *tuningStatus); #endif /* ST25R3916_AAT_H */