/** * \file talise_cals.h * \brief Contains Talise calibration related function prototypes for * talise_cals.c * * Talise API version: 3.5.0.2 * * Copyright 2015-2017 Analog Devices Inc. * Released under the AD9378-AD9379 API license, for more information see the "LICENSE.txt" file in this zip file. */ #ifndef TALISE_CALS_H_ #define TALISE_CALS_H_ #ifdef __cplusplus extern "C" { #endif #include "talise_types.h" #include "talise_cals_types.h" #include "talise_tx_types.h" #include "talise_rx_types.h" /**************************************************************************** * Initialization functions **************************************************************************** */ /** * \brief Runs the Talise initialization calibrations * * \pre This function is called after the device has been initialized, and the RF PLL has been * verified to be locked * * calMask Bit | Calibration * ------------|---------------------- * 0 | Tx BB Filter * 1 | ADC Tuner * 2 | TIA 3dB Corner * 3 | DC Offset * 4 | Tx Attenuation Delay * 5 | Rx Gain Delay * 6 | Flash Cal * 7 | Path Delay * 8 | Tx LO Leakage Internal * 9 | Tx LO Leakage External * 10 | Tx QEC Init * 11 | LoopBack Rx LO Delay * 12 | LoopBack Rx QEC Init * 13 | Rx LO Delay * 14 | Rx QEC Init * 15 | Rx Phase Correction Calibration * 16 | ORx LO Delay * 17 | ORx QEC Init * 18 | Tx DAC Init * 19 | ADC Stitching Init * [20-22] | Reserved * 23 | FHM Cals * [24-31] | Reserved * * NOTE : Please note that before running Fast Freq Hop Mode cals (FHM cals), * the frequency scan range needs to be set via TALISE_SetFhmConfig() API * * \dep_begin * \dep{device->devHalInfo} * \dep_end * \param device A pointer to the device settings structure * \param calMask A bitmask that informs the Talise ARM processor which calibrations to run * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_ERR_CHECK_TIMER Recovery action for timer time-out check required * \retval TALACT_ERR_RESET_ARM Recovery action for ARM reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_runInitCals(taliseDevice_t *device, uint32_t calMask); /** * \brief Blocking waits for the Talise initialization calibrations to complete * * \pre This function is called after TALISE_runInitCals to wait for them to finish * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device A pointer to the device settings structure * \param timeoutMs A timeout value in milliseconds to wait for the calibrations to complete * \param errorFlag A 3-bit error flag that helps identify any errors during Initial calibrations. * Error flag enumerated by taliseInitCalFlags_t. A value of 0 indicates that there * was no error. * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset * \retval TALACT_ERR_RESET_ARM Recovery action for ARM reset required * \retval TALACT_ERR_CHECK_TIMER Recovery action for timer time-out check required * \retval TALACT_ERR_RERUN_INIT_CALS Recovery action to re-run intialization calibrations * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_waitInitCals(taliseDevice_t *device, uint32_t timeoutMs, uint8_t *errorFlag); /** * \brief Immediate initialization calibration completion check * * This function is similar to TALISE_waitInitCals except it does * not block the thread waiting for the enabled init calibrations to complete. * This function returns the initialization calibration status immediately * allowing the application layer to do other work while the calibrations are * running. * * The *errorFlag parameter is optional. If not used, pass a NULL parameter * * \pre This function is called after the initialization calibrations have been * started * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device A pointer to the device settings structure * * \param areCalsRunning A pointer to a uint8_t return variable: Returns 1 if * init cals are running, 0 = init cals are not running (either complete * or have not started) * * \param errorFlag (Optional, pass NULL if unused) A pointer to a uint8_t * return variable: 3-bit value which is the initialization * calibration error code where 0 = No Error * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_ERR_RERUN_INIT_CALS Recovery action to re-run intialization calibrations * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_checkInitCalComplete(taliseDevice_t *device, uint8_t *areCalsRunning, uint8_t *errorFlag); /** * \brief Aborts an on-going ARM initialization calibration sequence * * The ARM init calibrations can take several seconds. This function is called when * the BBIC needs to intercede and stop the current initialization calibration sequence. * The *calsCompleted uint32_t parameter is optional and will return the completed initialization calibration * bit-mask before the abort command was received. If *calsCompleted is passed as a null pointer * no value will be returned. * * \pre This function is called any time during the initialization calibration process * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device A pointer to the device settings structure * \param calsCompleted A uint32_t pointer which is passed to obtain a bitmask * which describes the initialization calibrations completed during the previous * TALISE_runInitCals() function call * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_CHECK_TIMER Recovery action for timer time-out check required * \retval TALACT_ERR_RESET_ARM Recovery action for ARM reset required * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_abortInitCals(taliseDevice_t *device, uint32_t *calsCompleted); /** * \brief Gets the device initialization calibration status * * This function provides updates to represent the status of the initialization calibrations * calsSincePowerUp, calsLastRun, calsMinimum are bit wise representations of calibration status. * Each bit represents a calibration. taliseInitCalibrations_t defines the unique initialization * calibration bit masks * * \pre This function may be called any time after the device has been initialized, and * initialization calibrations have taken place * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device A pointer to the device settings structure * \param calsSincePowerUp Pointer passed to obtain value indicating calibrations run since power up * \param calsLastRun Pointer passed to obtain value indicating calibrations run in during the previous * TALISE_runInitCals() call. * \param calsMinimum Pointer passed to obtain the value with the minimum calibrations required before allowing * TALISE_Radio to be successfully called. * \param initErrCal Pointer passed to obtain the object ID of the calibration reporting an error * (this contain the same information as RUN_INIT_ERR_CAL) * \param initErrCode Error code reported by the initialization calibration * with problem (this contains the same information as RUN_INIT_ERR_CODE) * * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_CHECK_TIMER Recovery action for timer time-out check required * \retval TALACT_ERR_RESET_ARM Recovery action for ARM reset required * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getInitCalStatus(taliseDevice_t *device, uint32_t *calsSincePowerUp, uint32_t *calsLastRun, uint32_t *calsMinimum, uint8_t *initErrCal, uint8_t *initErrCode); /**************************************************************************** * Runtime functions **************************************************************************** */ /** * \brief Sets the ARM tracking calibrations which are enabled during the radio ON state * * \pre This command must be called during radio OFF state and after a full device initialization * has taken place, all PLLs are configured and locked, Multi-Chip Sync (MCS) has taken place, and the JESD204B * links are configured and operational. If called during radioOn, an error will be returned. * * enableMask[bit] | Bit description * -----------------|---------------------- * [0] | TRACK_RX1_QEC * [1] | TRACK_RX2_QEC * [2] | TRACK_ORX1_QEC * [3] | TRACK_ORX2_QEC * [4] | TRACK_TX1_LOL * [5] | TRACK_TX2_LOL * [6] | TRACK_TX1_QEC * [7] | TRACK_TX2_QEC * [8] | TRACK_RX1_HD2 * [9] | TRACK_RX2_HD2 * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the device settings structure * \param enableMask The bit-mask which selects the tracking * calibration set to run during the radio ON state. taliseTrackingCalibrations_t * enumerated types are or'd together to form the tracking calibration * mask word. * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_CHECK_TIMER Recovery action for timer time-out check required * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_ERR_RESET_ARM Recovery action for user ARM reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_enableTrackingCals(taliseDevice_t *device, uint32_t enableMask); /** * \brief Reads back which ARM tracking cals are enabled. * * \pre This command is called after a full device initialization to determine * which tracking cals are enabled. The ARM must be loaded and init cals * run before this command can be called. * * enableMask[bit] | Bit description * -----------------|---------------------- * [0] | TRACK_RX1_QEC * [1] | TRACK_RX2_QEC * [2] | TRACK_ORX1_QEC * [3] | TRACK_ORX2_QEC * [4] | TRACK_TX1_LOL * [5] | TRACK_TX2_LOL * [6] | TRACK_TX1_QEC * [7] | TRACK_TX2_QEC * [8] | TRACK_RX1_HD2 * [9] | TRACK_RX2_HD2 * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the device settings structure * \param enableMask Pointer to single uint32_t variable that returns a bitmask * that shows which tracking cals are enabled. * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_NO_ACTION Function completed successfully, no action required * \retval TALACT_ERR_RESET_ARM Recovery action for user ARM reset required * \retval TALACT_ERR_CHECK_PARAM Check enableMask pointer for null value */ uint32_t TALISE_getEnabledTrackingCals(taliseDevice_t *device, uint32_t *enableMask); /** * \brief Returns the tracking calibration pending and error status. * * When in radioOn state, the enabled tracking calibrations will set the pending * flag when the particular calibration is ready to be run, but has not completed * yet. If a tracking calibration had an error, the corresponding * error flag will be asserted. For Tx tracking cals to complete, the Tx to ORx * mapping must be set to inform the calibrations which transmitters route to which * observation receivers. Use the getStatus function for the specific calibration * that threw an error. * * pendingCalMask | bit Description * ----------------|-------------------------------------------------------- * [0] | Rx1 QEC tracking pending * [1] | Rx1 QEC tracking error * [2] | Rx2 QEC tracking pending * [3] | Rx2 QEC tracking error * [4] | ORx1 QEC tracking pending * [5] | ORx1 QEC tracking error * [6] | ORx2 QEC tracking pending * [7] | ORx2 QEC tracking error * [8] | Tx1 LOL tracking pending * [9] | Tx1 LOL tracking error * [10] | Tx2 LOL tracking pending * [11] | Tx2 LOL tracking error * [12] | Tx1 QEC tracking pending * [13] | Tx1 QEC tracking error * [14] | Tx2 QEC tracking pending * [15] | Tx2 QEC tracking error * * * \param device Pointer to the device settings structure * \param pendingCalMask Pointer to a single uint32_t variable which returns * the bit mask that describes which tracking cals are pending or had * errors * * \retval TALACT_ERR_OK Function completed successfully * \retval TALACT_ERR_CHECK_PARAM Function parameter pendingCalMask is a NULL pointer */ uint32_t TALISE_getPendingTrackingCals(taliseDevice_t *device, uint32_t *pendingCalMask); /** * \brief Schedules a tracking calibration to run. Can be used to * override the tracking calibration timer and force a tracking calibration to run. * Can be used to reschedule a tracking calibration after a tracking calibration * error has been detected. Only one tracking calibration object can be scheduled * per channel per function call. * * \pre Command can be called in either Radio On or Radio Off state. ARM must be * initialized. * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the device settings structure * \param trackingCal Selects the tracking calibration to schedule. * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_ARM Recovery action for user ARM reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_rescheduleTrackingCal(taliseDevice_t *device, taliseTrackingCalibrations_t trackingCal); /** * \brief Suspend or resume tracking calibrations in the Radio On ARM state. * * This function is used to suspend or resume active tracking calibrations * for the tracking cals specified in the calSubsetMask. Normally calibrations * can only be enabled or disabled while in the radio off state. This function * allows pausing tracking cals without leaving the Radio On state. Only * enabled tracking calibrations can be resumed or paused. * * \pre Command can be called in Radio On. The tracking cals of interest * must already be enabled while in Radio Off state. * * calSubsetMask[bit] | Bit description * -------------------|------------ * [0] | TAL_TRACK_RX1_QEC, 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [1] | TAL_TRACK_RX2_QEC 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [2] | TAL_TRACK_ORX1_QEC 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [3] | TAL_TRACK_ORX2_QEC 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [4] | TAL_TRACK_TX1_LOL 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [5] | TAL_TRACK_TX2_LOL 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [6] | TAL_TRACK_TX1_QEC 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [7] | TAL_TRACK_TX2_QEC 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [8] | TAL_TRACK_RX1_HD2 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * [9] | TAL_TRACK_RX2_HD2 1 = allow pause/resume on this cal, 0 = ignore resumeCalMask setting for this cal * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the device settings structure * * \param calSubsetMask Selects the tracking calibrations of interest to apply * the suspend or resume setting to during the radio ON state. * taliseTrackingCalibrations_t enumerated types are or'd together to form the * cal subset mask word. If the bit for a particular cal is set, the * pause/resume mask will be applied for that cal, if the bit is low the * pause/resume mask will be ingored for that cal. * * \param resumeCalMask Bit per tracking cal at same bit position as the cal * of interest. If the bit = 1 and calSubsetMask=1 for the same bit, the cal * will be resumed if paused. If the bit=0 and calSubsetMask=1, the cal will * be paused. * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_ARM Recovery action for user ARM reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_setAllTrackCalState(taliseDevice_t *device, uint32_t calSubsetMask, uint32_t resumeCalMask); /** * \brief Get the Suspended or Resumed state for tracking calibrations * * This function is used to get the suspend or resume state of all active * tracking calibrations and the state is returned in resumeCalMask. * * \pre Command can be called in Radio On. * * resumeCalMask[bit] | Bit description * --------------------|------------ * [0] | TAL_TRACK_RX1_QEC, 1 = cal is resumed (running), 0 = cal is paused * [1] | TAL_TRACK_RX2_QEC 1 = cal is resumed (running), 0 = cal is paused * [2] | TAL_TRACK_ORX1_QEC 1 = cal is resumed (running), 0 = cal is paused * [3] | TAL_TRACK_ORX2_QEC 1 = cal is resumed (running), 0 = cal is paused * [4] | TAL_TRACK_TX1_LOL 1 = cal is resumed (running), 0 = cal is paused * [5] | TAL_TRACK_TX2_LOL 1 = cal is resumed (running), 0 = cal is paused * [6] | TAL_TRACK_TX1_QEC 1 = cal is resumed (running), 0 = cal is paused * [7] | TAL_TRACK_TX2_QEC 1 = cal is resumed (running), 0 = cal is paused * [8] | TAL_TRACK_RX1_HD2 1 = cal is resumed (running), 0 = cal is paused * [9] | TAL_TRACK_RX2_HD2 1 = cal is resumed (running), 0 = cal is paused * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the device settings structure * \param resumeCalMask Pointer to single uint32_t variable to return the * tracking calibration state. If the bit is set then the tracking calibration * is resumed and if not set then the tracking cal is suspended, see table * above. * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_ARM Recovery action for user ARM reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getAllTrackCalState(taliseDevice_t *device, uint32_t *resumeCalMask); /** * \brief Returns the status of the TxLOL external tracking calibration * * The Tx LOL external tracking calibration is run during the radioOn state. * The function can be called to read back the status of the TxLOL external * calibration including metrics like error codes, percentage of data * collected for current cal, the performance of the cal and the number of * times the cal has run and updated the hardware. * * \pre Before the function is called, the device must be initialized, the ARM * loaded, and init cals run. These functions can be called in radioOff or * radioOn state. * * \param device Pointer to the device settings structure * \param channelSel The channel (Tx1/Tx2) whose status is to be read back * \param txLolStatus Status of the TxLOL external calibration, as a structure * of type taliseTxLolStatus_t is returned to this pointer address * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getTxLolStatus(taliseDevice_t *device, taliseTxChannels_t channelSel, taliseTxLolStatus_t *txLolStatus); /** * \brief Returns the status of the TxQEC tracking calibration * * The Tx QEC tracking calibration is run during the radioOn state. * The function can be called to read back the status of the TxQEC * calibration including metrics like error codes, percentage of data * collected for current cal, the performance of the cal and the number of * times the cal has run and updated the hardware. * * \pre Before the function is called, the device must be initialized, the ARM * loaded, and init cals run. These functions can be called in radioOff or * radioOn state. * * \param device Pointer to the device settings structure * \param channelSel The channel (Tx1/Tx2) whose status is to be read back * \param txQecStatus Status of the TxQEC external calibration, as a structure * of type taliseTxQecStatus_t is returned to this pointer address * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getTxQecStatus(taliseDevice_t *device, taliseTxChannels_t channelSel, taliseTxQecStatus_t *txQecStatus); /** * \brief Returns the status of the RxQEC tracking calibration * * The Rx QEC tracking calibration is run during the radioOn state. * The function can be called to read back the status of the RxQEC external * calibration including metrics like error codes, percentage of data * collected for current cal, the performance of the cal and the number of * times the cal has run and updated the hardware. * * \pre Before the function is called, the device must be initialized, the ARM * loaded, and init cals run. These functions can be called in radioOff or * radioOn state. * * \param device Pointer to the device settings structure * \param channelSel The channel (Rx1/Rx2) whose status is to be read back * \param rxQecStatus Status of the RxQEC calibration, as a structure * of type taliseRxQecStatus_t is returned to this pointer address * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getRxQecStatus(taliseDevice_t *device, taliseRxChannels_t channelSel, taliseRxQecStatus_t *rxQecStatus); /** * \brief Returns the status of the ORxQEC tracking calibration * * The ORx QEC tracking calibration is run during the radioOn state. * The function can be called to read back the status of the ORxQEC external * calibration including metrics like error codes, percentage of data * collected for current cal, the performance of the cal and the number of * times the cal has run and updated the hardware. * * \pre Before the function is called, the device must be initialized, the ARM * loaded, and init cals run. These functions can be called in radioOff or * radioOn state. * * \param device Pointer to the device settings structure * \param channelSel The channel (ORx1/ORx2) whose status is to be read back * \param orxQecStatus Status of the ORxQEC external calibration, as a structure * of type taliseOrxQecStatus_t is returned to this pointer address * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getOrxQecStatus(taliseDevice_t *device, taliseObsRxChannels_t channelSel, taliseOrxQecStatus_t *orxQecStatus); /** * \brief Returns the status of the RxHD2 tracking calibration * * The Rx HD2 tracking calibration is run during the radioOn state. * This function can be called to read back the status of the RxHD2 * calibration including metrics like error codes, percentage of data * collected for current cal, the performance of the cal and the number of * times the cal has run and updated the hardware. * * \pre Before the function is called, the device must be initialized, the ARM * loaded, and init cals run. These functions can be called in radioOff * or radioOn state. * * \param device Pointer to the device settings structure * \param channelSel The channel (Rx1/Rx2) whose status is to be read back * \param rxHd2Status Status of the RxHD2 calibration, as a structure * of type taliseRxHd2Status_t is returned to this pointer address * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getRxHd2Status(taliseDevice_t *device, taliseRxChannels_t channelSel, taliseRxHd2Status_t *rxHd2Status); /**************************************************************************** * Helper functions **************************************************************************** */ /** * \brief Performs a blocking wait for a Talise calibration or Pll Lock * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the Talise device data structure containing settings * \param waitEvent the enum value of the event to wait for * \param timeout_us If timeout_us time has passed, function will return with * an error. * * \param waitInterval_us To prevent continuous SPI reads blocking the SPI controller * from other threads, this param sets how often the SPI read * occurs to poll the event status. * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_ERR_CHECK_TIMER Recovery action for timer time-out check required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_waitForEvent(taliseDevice_t *device, taliseWaitEvent_t waitEvent, uint32_t timeout_us, uint32_t waitInterval_us); /** * \brief Performs a non-blocking read of wait status for a Talise calibration or Pll Lock * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the Talise device data structure containing settings * \param waitEvent the enumerated value of the event to read * \param eventDone pointer for status return flag where, 0 = not done, 1 = done * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_readEventStatus(taliseDevice_t *device, taliseWaitEvent_t waitEvent, uint8_t *eventDone); /** * \brief Performs reset to the External Tx LO Leakage tracking calibration channel estimate * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the Talise device data structure containing settings * \param channelSel Enum selects the channel to reset * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_ERR_RERUN_INIT_CALS Recovery action for uninitialized radio * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_resetExtTxLolChannel(taliseDevice_t *device, taliseTxChannels_t channelSel); /** * \brief Allows setting configuration options for Talise Rx HD2 tracking calibration * * Set hd2CalConfig->posSideBandSel to the side (negative - lower side band or * positive - upper side band) that has the desired * signal. Correction will be correcting the 2nd harmonic distortion on the * same side of the spectrum. * * \pre This function can only be called when the Talise ARM is in the Radio Off state (or * before init cals have been run). * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the Talise device data structure containing settings * \param hd2CalConfig Pointer to HD2 calibration config structure with desired settings * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_RESET_ARM Recovery action if ARM is detected to be in wrong state * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_setRxHd2Config(taliseDevice_t *device, taliseRxHd2Config_t *hd2CalConfig); /** * \brief Allows reading configuration options for Talise Rx HD2 tracking calibration from * Talise ARM memory * * Config values are read from the Talise ARM memory and returned at the address of * the hd2CalConfig function parameter. * * \pre This function can only be called when the Talise ARM is in the Radio Off state (or * before init cals have been run). * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the Talise device data structure containing settings * \param hd2CalConfig Pointer to HD2 calibration config structure to return read settings * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_RESET_ARM Recovery action if ARM is detected to be in wrong state * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getRxHd2Config(taliseDevice_t *device, taliseRxHd2Config_t *hd2CalConfig); /** * \brief Sets the Rx/ORx channel Digital DC offset convergence time (mShift) * * This function allows the BBIC to adjust the digital DC offset convergence * time. This value (mShift) affects the corner frequency of the notch filter * used to filter the DC offset out of the Rx/ORx receive signal. The mShift * value applies to all Rx channels or all ORx channels, but Rx and ORx * can be set individually. * * In ARM versions less than 4.0, the ARM init cal for DC offset will override * the mShift setting. The BBIC should call this function after running the * init cals to make sure the ARM does not overwrite a custom mShift setting. * * In ARM versions 4.0 or greater, the ARM boot up will set a default calculated * value for the mShift based on the selected profile sample rates. * The BBIC may set the mShift anytime after ARM bootup * (before or after ARM init cals). The ARM DC offset init function will * save and restore the custom mShift value if it needs to change the mShift * value. * * The mShift value range is limited to 8 to 20 (decimal) to prevent major * performance issues. * * \pre ARM version less than 4.0: This function can only be called after the * Talise ARM init cals have been run. For 4.0 and greater, the function * can be called after loading the ARM. * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the Talise device data structure containing settings * \param channel Digital DC offset channel to adjust mShift value for * \param mShift Value to set for the given channel (valid range 8 - 20) * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_setDigDcOffsetMShift(taliseDevice_t *device, taliseDcOffsetChannels_t channel, uint8_t mShift); /** * \brief Gets the Rx/ORx channel Digital DC offset convergence time (mShift) * * This function allows the BBIC to read back the digital DC offset convergence * time. This value (mShift) affects the corner frequency of the notch filter * used to filter the DC offset out of the Rx/ORx receive signal. The mShift * value applies to all Rx channels or all ORx channels, but Rx and ORx * can be set individually. * * In ARM versions less than 4.0, the ARM init cal for DC offset will override * the mShift setting. The BBIC should call this function after running the * init cals to make sure the ARM does not overwrite a custom mShift setting. * * In ARM versions 4.0 or greater, the ARM boot up will set a default calculated * value for the mShift based on the selected profile sample rates. * The BBIC may set the mShift anytime after ARM bootup * (before or after ARM init cals). The ARM DC offset init function will * save and restore the custom mShift value if it needs to change the mShift * value. * * The mShift value range is limited to 8 to 20 (decimal) to prevent major * performance issues. * * \pre ARM version less than 4.0: This function can only be called after the * Talise ARM init cals have been run. For 4.0 and greater, the function * can be called after loading the ARM. * * \dep_begin * \dep{device->devHalInfo} * \dep_end * * \param device Pointer to the Talise device data structure containing settings * \param channel Digital DC offset channel to read mShift value for * \param mShift Pointer to store the current mShift value for the requested channel * * \retval TALACT_WARN_RESET_LOG Recovery action for log reset * \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check * \retval TALACT_NO_ACTION Function completed successfully, no action required */ uint32_t TALISE_getDigDcOffsetMShift(taliseDevice_t *device, taliseDcOffsetChannels_t channel, uint8_t *mShift); /**************************************************************************** * Debug functions **************************************************************************** */ /** * \brief Private Helper function to return ARM error strings to the * TALISE_getErrorMessage function. * * This is a private function and is automatically called by the API. BBIC * should use the TALISE_getErrorMessage function. * * \param errSrc A value that represents the error source from the Talise API * \param errCode Error code that along with the error source allows looking up * a specific error message. * * \retval Returns a character array with the error message specified by * errSrc and errCode. */ const char* talGetCalErrorMessage(uint32_t errSrc, uint32_t errCode); #define ARMINITCAL_ERRCODE(armCalId, armCalErrCode) ((armCalId << 8) | armCalErrCode) #ifdef __cplusplus } #endif #endif /* TALISE_CALS_H_ */