提交SMOD ATSC IMX APP版本 V122
This commit is contained in:
Executable
+24
@@ -0,0 +1,24 @@
|
||||
Analog Devices, Inc. ("ADI")
|
||||
Source Code Software License Agreement
|
||||
20130524-CISC-CTSLA
|
||||
|
||||
DOWNLOADING, REPRODUCING, DISTRIBUTING OR OTHERWISE USING THE SOFTWARE CONSTITUTES ACCEPTANCE OF THIS LICENSE. THE SOFTWARE MAY NOT BE USED EXCEPT AS EXPRESSLY AUTHORIZED UNDER THIS LICENSE.
|
||||
|
||||
The software is protected by copyright law and international copyright treaties.
|
||||
|
||||
License: Subject to the terms and conditions of this license, the software may be reproduced, modified and distributed in source code and object code form.
|
||||
|
||||
Conditions:
|
||||
Any distribution of the software must include a complete copy of this license and retain all copyright and other proprietary notices. The software that is distributed (including modified versions of the software) shall be subject to the terms and conditions of this license.
|
||||
The software may not be combined or merged with other software in any manner that would cause the software to become subject to terms and conditions which differ from those of this license.
|
||||
Licensee shall not use the name or any trademark of ADI (including those of its licensors) or any contributor to endorse or promote products without prior written consent of the owner of the name or trademark. The term “contributor” means any person or entity that modifies or distributes the software.
|
||||
Modified versions of the Software must be conspicuously marked as such.
|
||||
Use of the software may or may not infringe patent rights of one or more patent holders. This license does not alleviate the obligation to obtain separate licenses from patent holders to use the software.
|
||||
All rights not expressly granted hereunder are reserved.
|
||||
This license shall be governed by the laws of Massachusetts, without regard to its conflict of laws rules. The software shall only be used in compliance with all applicable laws and regulations, including without limitation export control laws.
|
||||
|
||||
WARRANTY DISCLAIMER: THE SOFTWARE AND ANY RELATED INFORMATION AND/OR ADVICE IS PROVIDED ON AN “AS IS” BASIS, WITHOUT REPRESENTATIONS, GUARANTEES OR WARRANTIES OF ANY KIND, EXPRESS OR IMPLIED, ORAL OR WRITTEN, INCLUDING WITHOUT LIMITATION, WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND NON-INFRINGEMENT. There is no obligation to provide software support or updates. The Software is not fault-tolerant and is not intended for use in high risk applications, including without limitation in the operation of nuclear facilities, aircraft navigation or control systems, air traffic control, life support machines, weapons systems or any other application in which the failure of the software could lead to death, personal injury, or severe physical or environmental damages. The software is not authorized to be used under such circumstances.
|
||||
|
||||
LIMITATION OF LIABILITY: TO THE MAXIMUM EXTENT PERMITTED BY LAW ADI (INCLUDING ITS LICENSORS) AND CONTRIBUTORS SHALL NOT BE LIABLE FOR ANY DAMAGES ARISING FROM OR RELATED TO THE SOFTWARE, ITS USE OR ANY RELATED INFORMATION AND/OR SERVICES, INCLUDING BUT NOT LIMITED TO ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, PUNITIVE, EXEMPLARY, CONSEQUENTIAL OR ANALOGOUS DAMAGES (INCLUDING WITHOUT LIMITATION ANY DAMAGES RESULTING FROM LOSS OF USE, DATA, REVENUE, PROFITS, OR SAVINGS, COMPUTER DAMAGE OR ANY OTHER CAUSE), UNDER ANY LEGAL THEORY (INCLUDING WITHOUT LIMITATION CONTRACT, WARRANTY, TORT, NEGLIGENCE, STRICT OR PRODUCT LIABILITY), EVEN IF IT HAS BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. Some jurisdictions do not permit the exclusion or limitation of liability for consequential, incidental or other damages, and, as such, some portion of the above limitation may not apply. In such jurisdictions, liability is limited to the greatest extent permitted by law.
|
||||
|
||||
Third Party Software: The software may be accompanied by or include software made available by one or more third parties (“Third Party Software”). Each portion of Third Party Software is subject to its own separate software license terms and conditions (“Third Party Licenses”). The Third Party Licenses for Third Party Software delivered with the software are set forth or identified (by url or otherwise) in (i) Appendix A to this license (if any), (ii) the applicable software header or footer text, (iii) a text file located in the directory of the applicable Third Party Software component and/or (iv) such other location customarily used for licensing terms. The use of each portion of Third Party Software is subject to the Third Party Licenses, and you agree that your use of any Third Party Software is bound by the applicable Third Party License. You agree to review and comply with all applicable Third Party Licenses prior to any use or distribution of any Third Party Software. Third Party Software is provided on an “as is” basis without any representation, warranty or liability of any kind. ADI (including its licensors) and contributors shall have no liability or responsibility for the operation or performance of the Third Party Software and shall not be liable for any damages, costs, or expenses, direct or indirect, arising out of the performance or failure to perform of the Third Party Software. ADI (including its licensors) and contributors shall be entitled to the benefit of any and all limitations of liability and disclaimers of warranties contained in the Third Party Licenses. For the avoidance of doubt, this license does not alter, limit or expand the terms and conditions of, or rights granted to you pursuant to, Third Party Licenses
|
||||
Executable
+26
@@ -0,0 +1,26 @@
|
||||
TALLIB = libtalise.a
|
||||
CC = gcc
|
||||
ADIHALSRC = ../adi_hal
|
||||
ARFLAGS = -rv
|
||||
CFLAGS = -Wall -Werror -I. -I$(ADIHALSRC)
|
||||
|
||||
EXT = c
|
||||
|
||||
SRC = $(wildcard *.$(EXT))
|
||||
OBJS = $(SRC:.$(EXT)=.o)
|
||||
|
||||
all: adihallib $(SRC) $(TALLIB)
|
||||
|
||||
$(TALLIB): $(OBJS)
|
||||
ar $(ARFLAGS) $(TALLIB) $(OBJS) $(ADIHALSRC)/adi_hal.o
|
||||
|
||||
.$(EXT).o: adihallib
|
||||
$(CC) $(CFLAGS) -o $@ -c $<
|
||||
|
||||
adihallib:
|
||||
$(MAKE) -C $(ADIHALSRC)
|
||||
|
||||
clean:
|
||||
rm *.o
|
||||
rm *.a
|
||||
$(MAKE) -C $(ADIHALSRC) clean
|
||||
Executable
+3279
File diff suppressed because it is too large
Load Diff
Executable
+523
@@ -0,0 +1,523 @@
|
||||
/**
|
||||
* \file talise.h
|
||||
* \brief Contains top level Talise related function prototypes for
|
||||
* talise.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_H_
|
||||
#define TALISE_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Initialization functions
|
||||
****************************************************************************
|
||||
*/
|
||||
/**
|
||||
* \brief Performs a Hardware Initialization for Talise Device.
|
||||
*
|
||||
* This API shall call the ADI HAL function ADIHAL_openHw for
|
||||
* Talise Hardware initialization. This HAL function initializes all the external
|
||||
* hardware blocks required in the operation of the Talise device.
|
||||
* This API will also set the HAL timeout limit for the HAL driver as per API
|
||||
* requirements.
|
||||
*
|
||||
* \pre This function may be called after device->devHalInfo has been initialized with
|
||||
* user values
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to Talise device data structure. taliseDevice_t member
|
||||
* devHalInfo shall be initialized with all the required information to initialize
|
||||
* external Hardware required for Talise operation for example
|
||||
* power, pull ups, SPI master etc
|
||||
*
|
||||
* \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_GPIO Recovery action for user GPIO reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_openHw(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Performs a hardware shutdown for Talise Device.
|
||||
*
|
||||
* This API shall call the ADI HAL function ADIHAL_closeHw for
|
||||
* Talise Hardware shutdown. This HAL function shuts down all the external
|
||||
* hardware blocks required in the operation of the Talise device.
|
||||
*
|
||||
* \pre This function may be called any time after device->devHalInfo has been
|
||||
* initialized with user values
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to Talise device data structure. taliseDevice_t member
|
||||
* devHalInfo shall be initialized with all the required information to initialize
|
||||
* supporting Hardware for Talise operation for example
|
||||
* power, pull ups, SPI master etc
|
||||
*
|
||||
* \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_GPIO Recovery action for user GPIO reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_closeHw(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Performs a hard reset on the TALISE DUT (Toggles RESETB pin on device)
|
||||
*
|
||||
* Toggles the Talise devices RESETB pin. Only resets the device with
|
||||
* the SPI chip select indicated in the device->spiSettings structure.
|
||||
*
|
||||
* \pre This function may be called any time after device->devHalInfo has been
|
||||
* initialized with user values
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to Talise device data structure containing settings
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_WARN_RESET_GPIO Recovery action to warn user a GPIO reset may be required
|
||||
* \retval TALACT_ERR_RESET_GPIO Recovery action for user GPIO reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_resetDevice(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Initializes the Talise device based on the desired device settings.
|
||||
*
|
||||
* This function initializes the Talise device, setting up the CLKPLL, digital clocks,
|
||||
* JESD204b settings, FIR Filters, digital filtering. It does not load the ARM
|
||||
* or perform any of the ARM init calibrations. It also sets the Rx Manual gain indexes and
|
||||
* TxAttenuation settings to the initial values found in the device data structure. It leaves the
|
||||
* Talise in a state ready for multichip sync (which can bring up the JESD204 links), the
|
||||
* ARM to be loaded, and the init calibrations run.
|
||||
*
|
||||
* \pre This function is the very first API to be called by the user to configure the device
|
||||
* after all dependent data structures have been initialized
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device (all members)}
|
||||
* \dep{init (all members)}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to Talise device data structure
|
||||
* \param init Pointer to Talise initialization settings structures
|
||||
*
|
||||
* \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_initialize(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief API To safely Shutdown Talise
|
||||
*
|
||||
* The User should call this function to safely shutdown Talise Device.
|
||||
* The function performs a hardware reset to reset the Talise Device into a safe
|
||||
* state for shutdown or re-initialization.
|
||||
*
|
||||
* \pre This function may be called at any time but not before device->devHalInfo
|
||||
* has been configured with user device settings
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_shutdown(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Reads back the multi-chip sync status
|
||||
*
|
||||
* This function returns the status of the Talise MCS state machine via the mcsStatus pointer.
|
||||
* The 4 LSBs of the uint8_t value at mcsStatus represent the sync status
|
||||
* of JESD, Digital Clocks, CLK PLL and Device Clock divider.
|
||||
|
||||
* mcsStatus | bit Description
|
||||
* -----------|--------------------------------------------------------
|
||||
* [0] | MCS JESD SYSREF Status
|
||||
* [1] | MCS Digital Clocks Sync Status
|
||||
* [2] | MCS CLKPLL SDM Sync Status
|
||||
* [3] | MCS Device Clock divider Sync Status
|
||||
*
|
||||
* A bit value of 1 indicates that the sync occured
|
||||
* A bit value of 0 indicates that the sync has not occured.
|
||||
*
|
||||
*
|
||||
* \pre This function can be called any time after the device has been initialized and PLL lock status has
|
||||
* been verified.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param mcsStatus Returns the mcsStatus word described in the 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_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getMultiChipSyncStatus(taliseDevice_t *device, uint8_t *mcsStatus);
|
||||
|
||||
/**
|
||||
* \brief Sets up the chip for multichip sync, and cleans up after MCS.
|
||||
*
|
||||
* When working with multiple transceivers or even only one transceiver that
|
||||
* requires deterministic latency between the Tx and observation and or main
|
||||
* Rx JESD204B data path, Multichip sync is necessary. This function should
|
||||
* be run after all transceivers have finished the TALISE_initialize(),
|
||||
* and before TALISE_initArm().
|
||||
*
|
||||
* When the enableMcs parameter = 1, this function will reset the MCS state
|
||||
* machine in the Talise device. Calling the function again, will reset
|
||||
* the state machine and expect the MCS sequence to start over.
|
||||
*
|
||||
* When the enableMcs parameter = 0, the MCS state machine is not changed,
|
||||
* allowing the user to read back the MCS status in the mcsStatus parameter.
|
||||
*
|
||||
* Typical sequence:
|
||||
* 1) Initialize all Talise devices in system using TALISE_initialize()
|
||||
* 2) Run TALISE_enableMultichipSync with enableMcs = 1
|
||||
* 3) Send at least 3 SYSREF pulses, and verify mcsStatus is set for each
|
||||
* MCS step
|
||||
* 4) Run TALISE_enableMultichipSync with enableMcs = 0 and verify mcsStatus
|
||||
* returns a x0B (CLKPLL in interger mode), or x0F (CLKPLL in fractional
|
||||
* mode).
|
||||
* 5) Continue with init sequnece ...Run initARM, loadArm, etc
|
||||
*
|
||||
* mcsStatus | bit Description
|
||||
* -----------|--------------------------------------------------------
|
||||
* [0] | MCS JESD SYSREF Status (1 = sync occurred)
|
||||
* [1] | MCS Digital Clocks Sync Status (1 = sync occurred)
|
||||
* [2] | MCS CLKPLL SDM Sync Status (1 = sync occurred)
|
||||
* [3] | MCS Device Clock divider Sync Status (1 = sync occurred)
|
||||
*
|
||||
* \pre This function is called after the device has been initialized and PLL lock status has
|
||||
* been verified
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param enableMcs =1 will enable/reset the MCS state machine
|
||||
* \param mcsStatus optional parameter, if pointer is not null, the function will return the mcsStatus word described in the 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_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_enableMultichipSync(taliseDevice_t *device, uint8_t enableMcs, uint8_t *mcsStatus);
|
||||
|
||||
/****************************************************************************
|
||||
* Runtime functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Helper functions
|
||||
****************************************************************************
|
||||
*/
|
||||
/**
|
||||
* \brief Configures one or more FIR filters in the device
|
||||
*
|
||||
* The device stores up to 5 FIR filter banks (2Rx | 2Obs Rx | Loopback & 2Tx).
|
||||
* Rx filters can have 24, 48, or 72 taps.
|
||||
* Tx filters can have 20, 40, 60, or 80 taps.
|
||||
*
|
||||
* The function is not called directly. It is called as a part of the TALISE_initialize() function.
|
||||
* The function could be used to change A FIR filter later, but would require calibrations to be rerun.
|
||||
*
|
||||
* \pre This function is called during device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param filterToProgram Name of the desired filter to program
|
||||
* \param firFilter Pointer to the filter to write into the device
|
||||
*
|
||||
* \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_programFir(taliseDevice_t *device, talisefirName_t filterToProgram, taliseFir_t *firFilter);
|
||||
|
||||
/**
|
||||
* \brief Calculates high speed digital clocks used in the Talise device
|
||||
*
|
||||
* This is a helper function called in TALISE_initialize() to calculate the internal
|
||||
* digital clocks in Talise for use throughout other API functions. The calculated
|
||||
* values are stored in the Talise API device structure with other other run-time state
|
||||
* information for the API.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise device data structure containing settings
|
||||
* \param digClocks Pointer to the Talise digital clocks initialization data structure
|
||||
*
|
||||
* \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_calculateDigitalClocks(taliseDevice_t *device, taliseDigClocks_t *digClocks);
|
||||
|
||||
/**
|
||||
* \brief Verifies the init structure profiles are valid combinations
|
||||
*
|
||||
* This function checks that the Rx/Tx/ORx profiles have valid clock rates in
|
||||
* order to operate together. Rx/Tx and ORx share a common high speed digital
|
||||
* clock. If an invalid combination of profiles is detected, an error will be
|
||||
* returned. If a profile in the init structure is unused, the user should zero
|
||||
* out all members of that particular profile structure. If a Rx/Tx/ORx profile
|
||||
* has an IQ rate = 0, it is assumed that the profile is disabled.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* This function uses TALISE_verifyTxProfile(), TALISE_verifyRxProfile(), and
|
||||
* TALISE_verifyOrxProfile() as helper functions.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devStateInfo}
|
||||
* \dep{init-> (most members)}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to Talise device data structure
|
||||
* \param init Pointer to Talise initialization settings structures
|
||||
*
|
||||
* \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_verifyProfiles(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief Sets the Talise device SPI settings (3wire/4wire, MSBFirst, etc).
|
||||
*
|
||||
* This function will use the settings in the passed spi structure parameter
|
||||
* to set SPI stream mode, address auto increment direction, MSBFirst/LSBfirst,
|
||||
* and 3wire/4wire mode for the Talise SPI controller. The Talise device
|
||||
* always uses SPI MODE 0 (CPHA=0, CPOL=0) and a 16-bit instruction word.
|
||||
*
|
||||
* \pre This function is a helper function and does not need to be called
|
||||
* directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{init->spiSettings->MSBFirst}
|
||||
* \dep{init->spiSettings->enSpiStreaming}
|
||||
* \dep{init->spiSettings->autoIncAddrUp}
|
||||
* \dep{init->spiSettings->fourWireMode}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to Talise device data structure
|
||||
* \param spi Pointer to Talise SPI controller settings - not platform hardware SPI settings
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setSpiSettings(taliseDevice_t *device, taliseSpiSettings_t *spi);
|
||||
|
||||
/**
|
||||
* \brief Verifies whether the existing SPI settings work.
|
||||
*
|
||||
* This function checks the SPI settings set through TALISE_setSpiSettings for
|
||||
* correct functionality. The function performs the following function:
|
||||
*
|
||||
* 1. Reads readonly register to check SPI read operation.
|
||||
* 2. Writes scratchpad register with 10110110, reads back the data
|
||||
* 3. Writes scratchpad register with 01001001, reads back the data
|
||||
*
|
||||
* The function performs the above operation on registers at the lower end of
|
||||
* the register address space, and on the upper end of the register address
|
||||
* space.
|
||||
*
|
||||
* \pre This function is a helper function and does not need to be called
|
||||
* directly by the user. This function is called automatically at
|
||||
* the end of TALISE_setSpiSettings()
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to Talise device data structure
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_ERR_RESET_FULL Recovery action for full chip reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_verifySpiReadWrite (taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Sets the CLKPLL output frequency
|
||||
*
|
||||
* This function updates the Synth and Loop filter settings based on a VCO
|
||||
* frequency LUT. The VCO frequency break points for the Synth LUT can be
|
||||
* found in an array called vcoFreqArrayMhz.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the TALISE data structure
|
||||
* \param clockSettings pointer to clock setting structure holding information about CLKPLL configuration
|
||||
*
|
||||
* \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 bad wait timer check
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
|
||||
*/
|
||||
uint32_t TALISE_initDigitalClocks(taliseDevice_t *device, taliseDigClocks_t *clockSettings);
|
||||
/****************************************************************************
|
||||
* Debug functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Sets the digital Tx PFIR SYNC clock divider.
|
||||
*
|
||||
* This function is a helper function. It is called automatically in
|
||||
* TALISE_initialize() and should not need to be called by the BBIC.
|
||||
*
|
||||
* This function sets the digital clock divider that is used to synchronize the
|
||||
* Tx PFIR each time the Tx channel power up. The Sync clock must
|
||||
* be set to the FIRs (output clock / 2) or slower.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param txProfile txProfile settings
|
||||
*
|
||||
* \retval TALACT_NO_ACTION Function completed successfully
|
||||
* \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
*/
|
||||
uint32_t TALISE_setTxPfirSyncClk(taliseDevice_t *device, taliseTxProfile_t *txProfile);
|
||||
|
||||
/**
|
||||
* \brief Sets the digital Rx PFIR SYNC clock divider.
|
||||
*
|
||||
* This function is a helper function. It is called automatically in
|
||||
* TALISE_initialize() and should not need to be called by the BBIC.
|
||||
*
|
||||
* This function sets the digital clock divider that is used to synchronize the
|
||||
* Rx/ORx PFIRs each time the channels power up. The Sync clock must
|
||||
* be set to the slowest of Rx/ORx PFIR (output clock / 2).
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param rxProfile rxProfile settings
|
||||
* \param orxProfile orxProfile settings
|
||||
*
|
||||
* \retval TALACT_NO_ACTION Function completed successfully
|
||||
* \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
*/
|
||||
uint32_t TALISE_setRxPfirSyncClk(taliseDevice_t *device, taliseRxProfile_t *rxProfile, taliseORxProfile_t *orxProfile);
|
||||
|
||||
/**
|
||||
* \brief Get API version number
|
||||
*
|
||||
* This function reads back the version number of the API
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param siVer A pointer to the current silicon version number.
|
||||
* \param majorVer A pointer to the current major version number.
|
||||
* \param minorVer A pointer to the current minor version number.
|
||||
* \param buildVer A pointer to the current build version number.
|
||||
*
|
||||
* \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_getApiVersion (taliseDevice_t *device, uint32_t *siVer, uint32_t *majorVer, uint32_t *minorVer, uint32_t *buildVer);
|
||||
|
||||
/**
|
||||
* \brief Reads back the silicon revision for the Talise Device
|
||||
*
|
||||
* revision's bit | Description
|
||||
* ----------------|-----------------
|
||||
* 3:0 | minor revision
|
||||
* 7:4 | major revision
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param revision Return value of the Talise silicon revision in hex where
|
||||
upper nibble (4 bits) indicates the major revision and the lower nibble
|
||||
indicates the minor revision.
|
||||
*
|
||||
* \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_getDeviceRev(taliseDevice_t *device, uint8_t *revision);
|
||||
|
||||
/**
|
||||
* \brief Reads back the Product ID for the Talise Device
|
||||
*
|
||||
* productId | Description
|
||||
* ------------|---------------
|
||||
* 1 | AD9379 (TDD device)
|
||||
* 2 | AD9378-1 (Rx Only Device)
|
||||
* 3 | AD9378-2 (Tx /ORx Device)
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param productId Return value of the Talise product Id
|
||||
*
|
||||
* \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_getProductId(taliseDevice_t *device, uint8_t *productId);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_H_ */
|
||||
Binary file not shown.
Executable
+1665
File diff suppressed because it is too large
Load Diff
Executable
+218
@@ -0,0 +1,218 @@
|
||||
/**
|
||||
* \file talise_agc.h
|
||||
* \brief Contains Talise API AGC function prototypes for talise_agc.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_AGC_H_
|
||||
#define TALISE_AGC_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
#include "talise_agc_types.h"
|
||||
|
||||
/**
|
||||
* \brief Sets up the device Rx Automatic Gain Control (AGC) registers
|
||||
*
|
||||
* The instantiated AGC setting structure (taliseAgcCfg_t) must be initialized with
|
||||
* valid settings before this function may be used due to the dependencies
|
||||
*
|
||||
* \pre This function is called only if AGC will be used, and only after the
|
||||
* initialization process (TALISE_initialize)
|
||||
*
|
||||
* NOTE : AGC IIP3 feature cannot be enabled on C0 or lower version of silicon.
|
||||
*
|
||||
* The agcSlowLoopSettlingDelay member in the taliseAgcCfg_t is range checked
|
||||
* in this function. The minimum value allowed is based on the ratio of the
|
||||
* (ADC_CLK / AGG_CLK). Min agcSlowLoopSettlingDelay = 65 / (ADC_CLK/ AGC_CLK).
|
||||
* This minimum range check is a sanity check to ensure AGC stability.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{rxAgcCtrl}
|
||||
* \dep{rxAgcCtrl->agcPeak}
|
||||
* \dep{rxAgcCtrl->agcPower}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure containing settings
|
||||
* \param rxAgcCtrl Pointer to AGC data structure containing settings
|
||||
*
|
||||
* \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_setupRxAgc(taliseDevice_t *device, taliseAgcCfg_t *rxAgcCtrl);
|
||||
|
||||
/**
|
||||
* \brief Gets the value of the AGC related registers from the Talise.
|
||||
*
|
||||
* This function is used to get value of the AGC registers. Reads back main AGC structure and
|
||||
* if included in the project sub structures for peak to peak and power measurements
|
||||
*
|
||||
* \pre This function may be used only if AGC is active
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{rxAgcCtrl (most members)}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param agcCtrl Pointer to the agcCtrl structure. Function will update values in the structure to return the current setup.
|
||||
*
|
||||
* \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_getAgcCtrlRegisters(taliseDevice_t *device, taliseAgcCfg_t *agcCtrl);
|
||||
|
||||
/**
|
||||
* \brief Gets the value of the AGC Peak related registers from the Talise.
|
||||
*
|
||||
* This function is used to get value of the AGC peak registers
|
||||
*
|
||||
* \pre This function may be used only if AGC is active
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{agcPeak-> (most members)}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param agcPeak Pointer to the Talise AGC peak settings data structure
|
||||
*
|
||||
* \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_getAgcPeakRegisters(taliseDevice_t *device, taliseAgcPeak_t *agcPeak);
|
||||
|
||||
/**
|
||||
* \brief Gets the value of the AGC Power measurement related registers from the Talise.
|
||||
*
|
||||
* This function is used to get value of the AGC Power registers
|
||||
*
|
||||
* \pre This function may be used only if AGC is active
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param agcPower Pointer to the Talise AGC power settings data structure
|
||||
*
|
||||
* \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_getAgcPowerRegisters(taliseDevice_t *device, taliseAgcPower_t *agcPower);
|
||||
|
||||
/**
|
||||
* \brief This function will setup the AGC for the dualband mode.
|
||||
*
|
||||
* This function compliments the TALISE_setupRxAgc() function to set up the
|
||||
* AGC for the dualband mode. The function also sets up the 3.3V GPIO's 7-0,
|
||||
* to enable the device to control external LNA's.
|
||||
*
|
||||
* \pre This function may be used only if AGC is active. This function can be
|
||||
* used in radio off state. Device must be initialized to dual band mode as
|
||||
* a part of TALISE_initialize()
|
||||
*
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1, Rx2,
|
||||
* Rx1 + Rx2 for programming the dualband AGC.
|
||||
* \param rxAgcCtrlDualBand Pointer to the Talise AGC dualband settings data
|
||||
* structure
|
||||
*
|
||||
* \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_setupDualBandRxAgc( taliseDevice_t *device, taliseRxChannels_t rxChannel, taliseAgcDualBandCfg_t *rxAgcCtrlDualBand);
|
||||
|
||||
/**
|
||||
* \brief This function returns the current values of the LNA controls for the
|
||||
* dualband mode.
|
||||
*
|
||||
* This function can be used if the user is not controlling the external LNA's
|
||||
* through the 3.3V GPIO pins of the device. The LNA controls are programmed by
|
||||
* the user in the dualband LNA gain table. The AGC then indexes to one of the
|
||||
* entries in the table based on its algorithm.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1 or Rx2
|
||||
* \param rxDualBandLnaControls Pointer to the AGC dualband LNA settings data
|
||||
* structure
|
||||
*
|
||||
* \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_getDualBandLnaControls (taliseDevice_t *device, taliseRxChannels_t rxChannel, taliseDualBandLnaControls_t *rxDualBandLnaControls);
|
||||
|
||||
/**
|
||||
* \brief This function sets the min/max gain indexes for AGC in the MAIN RX channel.
|
||||
*
|
||||
* This function can be used to set the min/max gains of RX channel in runtime.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1 or Rx2 or both Rx1 and Rx2
|
||||
* \param maxGainIndex AGC Max gain index setting
|
||||
* \param minGainIndex AGC Min gain index setting
|
||||
*
|
||||
* \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_setRxAgcMinMaxGainIndex(taliseDevice_t *device, taliseRxChannels_t rxChannel, uint8_t maxGainIndex, uint8_t minGainIndex);
|
||||
|
||||
/**
|
||||
* \brief This function resets all the state machines in the Gain Control Block.
|
||||
*
|
||||
* resets all state machines within the gain control block to state 0
|
||||
* and maximum gain (for slow, fast attack, and hybrid AGC loops)
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
*
|
||||
* \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_resetRxAgc(taliseDevice_t *device);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_AGC_H_ */
|
||||
Binary file not shown.
Executable
+160
@@ -0,0 +1,160 @@
|
||||
/**
|
||||
* \file talise_agc_types.h
|
||||
* \brief Contains Talise API AGC data types
|
||||
*
|
||||
* 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_AGC_TYPES_H_
|
||||
#define TALISE_AGC_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold AGC peak settings
|
||||
* The evaluation software GUI for the product can be used to generate a structure with suggested settings.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t agcUnderRangeLowInterval_ns; /*!< Update interval for AGC loop mode in nanoseconds */
|
||||
uint8_t agcUnderRangeMidInterval; /*!< 2nd update interval for multiple time constant AGC mode. Calculated as (agcUnderRangeMidInterval+1)*agcUnderRangeLowInterval_ns. Valid range is 0 to 63 */
|
||||
uint8_t agcUnderRangeHighInterval; /*!< 3rd update interval for multiple time constant AGC mode. Calculated as (agcUnderRangeHighInterval+1)*2nd update interval. Valid range is 0 to 63 */
|
||||
uint8_t apdHighThresh; /*!< AGC APD high threshold. Valid range is 7 to 49 */
|
||||
uint8_t apdLowGainModeHighThresh; /*!< AGC APD high threshold in low gain mode. Valid range is 7 to 49. Recommended to be 3dB above apdHighThresh */
|
||||
uint8_t apdLowThresh; /*!< AGC APD low threshold. Valid range is 7 to 49. Recommended to be 3dB below apdHighThresh */
|
||||
uint8_t apdLowGainModeLowThresh; /*!< AGC APD low threshold in low gain mode. Valid range is 7 to 49. Recommended to be 3dB above apdLowThresh */
|
||||
uint8_t apdUpperThreshPeakExceededCnt; /*!< AGC APD peak detect upper threshold count. Valid range is 0 to 255 */
|
||||
uint8_t apdLowerThreshPeakExceededCnt; /*!< AGC APD peak detect lower threshold count. Valid range is 0 to 255 */
|
||||
uint8_t apdGainStepAttack; /*!< AGC APD peak detect attack gain step. Valid range is 0 to 31 */
|
||||
uint8_t apdGainStepRecovery; /*!< AGC APD gain index step size for recovery. Valid range is 0 to 31 */
|
||||
uint8_t enableHb2Overload; /*!< Enable or disables the HB2 overload detector. */
|
||||
uint8_t hb2OverloadDurationCnt; /*!< Sets the window of clock cycles (at the HB2 output rate) to meet the overload count. (0 = 2 cycles, 1 = 4 cycles, 2 = 8 cycles, 3 = 12 cycles, 4 = 16 cycles, 5 = 24 cycles, 6 = 32 cycles) */
|
||||
uint8_t hb2OverloadThreshCnt; /*!< Sets the number of actual overloads required to trigger the overload signal. Valid range from 1 to 15 */
|
||||
uint8_t hb2HighThresh; /*!< AGC HB2 output high threshold. Valid range from 0 to 255 */
|
||||
uint8_t hb2UnderRangeLowThresh; /*!< AGC HB2 output low threshold. Valid range from 0 to 255 */
|
||||
uint8_t hb2UnderRangeMidThresh; /*!< AGC HB2 output low threshold for 2nd interval for multiple time constant AGC mode. Valid range from 0 to 255 */
|
||||
uint8_t hb2UnderRangeHighThresh; /*!< AGC HB2 output low threshold for 3rd interval for multiple time constant AGC mode. Valid range from 0 to 255 */
|
||||
uint8_t hb2UpperThreshPeakExceededCnt; /*!< AGC HB2 output upper threshold count. Valid range from 0 to 255 */
|
||||
uint8_t hb2LowerThreshPeakExceededCnt; /*!< AGC HB2 output lower threshold count. Valid range from 0 to 255 */
|
||||
uint8_t hb2GainStepHighRecovery; /*!< AGC HB2 gain index step size. Valid range from 0 to 31 */
|
||||
uint8_t hb2GainStepLowRecovery; /*!< AGC HB2 gain index step size, when the HB2 Low Overrange interval 2 triggers. Valid range from 0 to 31 */
|
||||
uint8_t hb2GainStepMidRecovery; /*!< AGC HB2 gain index step size, when the HB2 Low Overrange interval 3 triggers. Valid range from 0 to 31 */
|
||||
uint8_t hb2GainStepAttack; /*!< AGC HB2 output attack gain step. Valid range from 0 to 31 */
|
||||
uint8_t hb2OverloadPowerMode; /*!< When this bit is set, the dynamic range of the power measurement increases from -40dB to ~-60dB (that is, all signal levels from 0dBFS to -60dBFS are accurately detected */
|
||||
uint8_t hb2OvrgSel; /*!< To be used in fast recovery mode. Clearing this bit enables the decimated data overload detection functionality */
|
||||
uint8_t hb2ThreshConfig; /*!< Not User Modifiable Initialized to 0x03 */
|
||||
uint8_t hb2UnderRangeLowThreshExceededCnt; /*!< AGC HB2 low overrange interval 0 threshold count. Optional. Valid range from 1 to 255. Passing 0 will result in the reset value of 3. */
|
||||
uint8_t hb2UnderRangeMidThreshExceededCnt; /*!< AGC HB2 mid overrange interval 1 threshold count. Optional. Valid range from 1 to 255. Passing 0 will result in the reset value of 3. */
|
||||
|
||||
} taliseAgcPeak_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold AGC power settings
|
||||
* The evaluation software GUI for the product can be used to generate a structure with suggested settings.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t powerEnableMeasurement; /*!< Enable the Rx power measurement block. (0/1) */
|
||||
uint8_t powerUseRfirOut; /*!< Use output of Rx PFIR for power measurement. (0/1) */
|
||||
uint8_t powerUseBBDC2; /*!< Use output of DC offset block for power measurement. (0/1) */
|
||||
uint8_t underRangeHighPowerThresh; /*!< AGC power measurement detect lower 0 threshold. Valid Range from 0 to 127. */
|
||||
uint8_t underRangeLowPowerThresh; /*!< AGC power measurement detect lower 1 threshold. Valid offset from 0 to 31 */
|
||||
uint8_t underRangeHighPowerGainStepRecovery; /*!< AGC power measurement detect lower 0 recovery gain step. Valid range from 0 to 31 */
|
||||
uint8_t underRangeLowPowerGainStepRecovery; /*!< AGC power measurement detect lower 1 recovery gain step. Valid range from 0 to 31 */
|
||||
uint8_t powerMeasurementDuration; /*!< Average power measurement duration = 8*2^powerMeasurementDuration. Valid range from 0 to 31 */
|
||||
uint16_t rx1TddPowerMeasDuration; /*!< Measurement duration to detect power for specific slice of the gain update counter. */
|
||||
uint16_t rx1TddPowerMeasDelay; /*!< Measurement delay to detect power for specific slice of the gain update counter. */
|
||||
uint16_t rx2TddPowerMeasDuration; /*!< Measurement duration to detect power for specific slice of the gain update counter. */
|
||||
uint16_t rx2TddPowerMeasDelay; /*!< Measurement delay to detect power for specific slice of the gain update counter. */
|
||||
uint8_t upper0PowerThresh; /*!< AGC upper 0 (overRangeHighPowerThreshold) threshold for power measurement. Valid Range from 0 to 127.*/
|
||||
uint8_t upper1PowerThresh; /*!< AGC upper 1 (overRangeLowPowerThreshold) threshold for power measurement. Valid offset from 0 to 15 */
|
||||
uint8_t powerLogShift; /*!< Enable Increase in dynamic range of the power measurement from 40dB to ~60dB. Provides higher accuracy.
|
||||
* NOTE: If you input a signal below -60dBFS while enabled, TALISE_getRxDecPower() may return an incorrect reading of 0dBFS.
|
||||
* When disabled, TALISE_getRxDecPower() will bottom out around -40dBFS. */
|
||||
uint8_t overRangeLowPowerGainStepAttack; /*!< AGC inner upper threshold exceeded attack gain step. Optional. Valid range from 1 to 31. Passing 0 will result in the reset value of 4. */
|
||||
uint8_t overRangeHighPowerGainStepAttack; /*!< AGC outer high power threshold exceeded attack gain step. Optional. Valid range from 1 to 31. Passing 0 will result in the reset value of 4. */
|
||||
|
||||
} taliseAgcPower_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold all AGC configuration settings for initialization
|
||||
* The evaluation software GUI for the product can be used to generate a structure with suggested settings.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t agcPeakWaitTime; /*!< AGC peak wait time. Valid range is from 0 to 31 */
|
||||
uint8_t agcRx1MaxGainIndex; /*!< AGC Rx1 max gain index. Valid range is from 0 to 255 */
|
||||
uint8_t agcRx1MinGainIndex; /*!< AGC Rx1 min gain index. Valid range is from 0 to 255 */
|
||||
uint8_t agcRx2MaxGainIndex; /*!< AGC Rx2 max gain index. Valid range is from 0 to 255 */
|
||||
uint8_t agcRx2MinGainIndex; /*!< AGC Rx2 min gain index. Valid range is from 0 to 255 */
|
||||
uint32_t agcGainUpdateCounter_us; /*!< AGC gain update time in micro seconds */
|
||||
uint8_t agcRx1AttackDelay; /*!< On entering Rx, the Rx1 AGC is kept inactive for a period = agcRx1AttackDelay*1us */
|
||||
uint8_t agcRx2AttackDelay; /*!< On entering Rx, the Rx2 AGC is kept inactive for a period = agcRx2AttackDelay*1us */
|
||||
uint8_t agcSlowLoopSettlingDelay; /*!< On any gain change, the AGC waits for the time (range 0 to 127) specified in AGC clock cycles to allow gain transients to flow through the Rx path before starting any measurements. */
|
||||
uint8_t agcLowThreshPreventGain; /*!< Prevent gain index from incrementing if peak thresholds are being exceeded */
|
||||
uint8_t agcChangeGainIfThreshHigh; /*!< Enable immediate gain change if high threshold counter is exceeded. Bit 0 enables ULB high threshold, Bit 1 enables HB2 high threshold */
|
||||
uint8_t agcPeakThreshGainControlMode; /*!< Enable gain change based only on the signal peak threshold over-ranges. Power based AGC changes are disabled in this mode. */
|
||||
uint8_t agcResetOnRxon; /*!< Reset the AGC slow loop state machine to max gain when the Rx Enable is taken low */
|
||||
uint8_t agcEnableSyncPulseForGainCounter; /*!< Enable the AGC gain update counter to be sync'ed to a time-slot boundary. */
|
||||
uint8_t agcEnableIp3OptimizationThresh; /*!< (API disables feature, this member is ignored) Enable the two-threshold AGC loop mode.To improve IIP3. Enable=1, Disable=0 (set to 0 for Talise B1 and C0 silicon - this feature is not supported) */
|
||||
uint8_t ip3OverRangeThresh; /*!< (API disables feature, this member is ignored) Overload threshold that triggers for a lower peak signal level. Recommended to be set to -17dBFS */
|
||||
uint8_t ip3OverRangeThreshIndex; /*!< (API disables feature, this member is ignored) Gain index to jump to if current gain causes IP3 overload. Recommended to be set to 246. Valid range 0 to 255 */
|
||||
uint8_t ip3PeakExceededCnt; /*!< (API disables feature, this member is ignored) Configures the number of times the ADC IP3 Overrange threshold is triggered within one gain update interval before a gain change is mandated by the gain control loop. */
|
||||
uint8_t agcEnableFastRecoveryLoop; /*!< Enable multiple time constants in AGC loop for fast attack and fast recovery. */
|
||||
|
||||
taliseAgcPower_t agcPower;
|
||||
taliseAgcPeak_t agcPeak;
|
||||
|
||||
} taliseAgcCfg_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold all AGC Dualband configuration.
|
||||
* Used along with taliseRxChannels_t structure to setup AGC for Rx1 and/or Rx2
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t agcDualBandEnable; /*!< Enable AGC operation for dualband receiver */
|
||||
uint8_t agcRxDualbandExtTableUpperIndex; /*!< Rx1/2 AGC dual band operation - Indicates the gain table index below which the AGC prioritizes
|
||||
decreasing gain through external LNA control over the Front-end gain */
|
||||
uint8_t agcRxDualbandExtTableLowerIndex; /*!< Rx1/2 AGC dual band operation - Indicates the gain table index above which the AGC prioritizes
|
||||
increasing gain through external LNA control over the Front-end gain */
|
||||
uint8_t agcDualbandPwrMargin; /*!< Margin for comparing total power against power of individual bands. If
|
||||
Total power > Upper Band Power + Lower Band Power +margin, the signal contains other components
|
||||
than the two bands, and AGC should behave like a single band system. Margin is in 0.5db steps. */
|
||||
uint8_t agcDualbandLnaStep; /*!< Margin to compare Upper band power versus Lower band power
|
||||
(for Upper Band Power > Lower Band Power + margin, and Lower Band Power > Upper Band Power + margin checks).
|
||||
The margin compares the powers of the bands to change the LNA of one band so that powers of the bands match.
|
||||
Value is in 0.5db resolution */
|
||||
uint8_t agcDualbandHighLnaThreshold; /*!< High threshold for Upper band or Lower band power above which the LNA index is decreased.
|
||||
Value is in 0.5db */
|
||||
uint8_t agcDualbandLowLnaThreshold; /*!< Low threshold for Upper band or Lower band power below which the LNA index is increased.
|
||||
Value is in 0.5db */
|
||||
uint8_t dualBandGpioEnable; /*!< Enable the 3.3V GPIO's that would be used to drive the external LNA's.
|
||||
Rx1 : GPIO3.3[1:0] controls Lower band LNA, GPIO3.3[3:2] controls Upper band LNA
|
||||
Rx2 : GPIO3.3[5:4] controls Lower band LNA, GPIO3.3[7:6] controls Upper band LNA
|
||||
If disabled, user needs to use TALISE_getDualBandLnaControls() to read back the LNA control
|
||||
value through the SPI. */
|
||||
uint8_t decPowerDdcMeasurementDuration; /*!< Power measurement duration for measuring the power of the individual bands. This variable has
|
||||
a range of 0 to 31. The sampling period is calculated as = 8 x 2^decPowerDdcMeasurementDuration. */
|
||||
} taliseAgcDualBandCfg_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold AGC Dualband LNA controls for the external LNA's.
|
||||
* Used along with taliseRxChannels_t structure to read back LNA controls for Rx1 or Rx2
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t rxLowerBandLnaControl; /* The control value for the Rx1/2 Lower band LNA (Values 0-3) */
|
||||
uint8_t rxUpperBandLnaControl; /* The control value for the Rx1/2 Upper band LNA (Values 0-3) */
|
||||
} taliseDualBandLnaControls_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_AGC_TYPES_H_ */
|
||||
Executable
+1816
File diff suppressed because it is too large
Load Diff
Executable
+460
@@ -0,0 +1,460 @@
|
||||
/**
|
||||
* \file talise_arm.h
|
||||
* \brief Contains Talise ARM related function prototypes for talise_arm.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_ARM_H_
|
||||
#define TALISE_ARM_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
#include "talise_error_types.h"
|
||||
#include "talise_arm_types.h"
|
||||
/****************************************************************************
|
||||
* Initialization functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Resets and performs initialization for the ARM processor
|
||||
*
|
||||
* Sets ARM Run = 0, Disables parity checks, sets ARM and SPI register clock selects,
|
||||
* resets ARM, and enables ARM SPI register access
|
||||
*
|
||||
* \pre This function is called after the device has been initialized and multichip-sync
|
||||
* (MCS) has been completed
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{init-> (most members)}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device settings data structure
|
||||
* \param init Pointer to the Talise initialization setting data structure
|
||||
*
|
||||
* \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_initArm(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief Writes the Talise ARM configuration settings
|
||||
*
|
||||
* \pre This function is called automatically during TALISE_initArm(), and
|
||||
* this function must be called before loading the ARM firmware.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{init-> (most members)}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device settings data structure
|
||||
* \param init Pointer to the Talise initialization settings data structure
|
||||
*
|
||||
* \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_writeArmProfile(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief Loads binary array into ARM program memory
|
||||
*
|
||||
* This function sets the ARM DMA control register bits for an ARM memory write in legacy mode, auto-incrementing
|
||||
* the address. Valid memory addresses are: Program Memory (0x01000000 - 0x0101C000)
|
||||
*
|
||||
* The top level application reads the binary file, parsing it into any array, starting at the first data byte
|
||||
* on the first line of the file. The array is passed to this function and writes it to ARM program memory. Any non-data
|
||||
* bytes should be excluded from the binary array when parsing.
|
||||
*
|
||||
* \pre This function is called after the device has been initialized, PLL lock status has been verified, and
|
||||
* the stream binary has been loaded
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param binary Byte array containing all valid ARM file data bytes
|
||||
* \param count The number of bytes in the binary array
|
||||
*
|
||||
* \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_loadArmFromBinary(taliseDevice_t *device, uint8_t *binary, uint32_t count);
|
||||
|
||||
/**
|
||||
* \brief Loads the ADC profile data into ARM memory
|
||||
*
|
||||
* This function writes four ADC profiles into the ARM data memory before
|
||||
* loading the ARM firmware. When the ARM firmware is loaded and begins
|
||||
* to initialize, the ARM init sequence copies the ADC profiles from ARM
|
||||
* memory and loads them into the ARM firmware internal data strucutures.
|
||||
*
|
||||
* \pre This function is called automatically by the API during device
|
||||
* initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device settings data structure
|
||||
* \param rxAdcProfile Pointer to the Talise Rx ADC profile data structure
|
||||
* \param orxLowPassAdcProfile Pointer to the Talise ORx low pass ADC profile data structure
|
||||
* \param orxBandPassAdcProfile Pointer to the Talise ORx band pass ADC profile data structure (ADC stitching only - ignored otherwise)
|
||||
* \param loopBackAdcProfile Pointer to the Talise Loopback Rx ADC profile data structure
|
||||
* \param orxMergeFilter Pointer to the Talise ORx merge filter data structure (ADC stitching only - ignored otherwise)
|
||||
*
|
||||
* \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_loadAdcProfiles(taliseDevice_t *device, uint16_t *rxAdcProfile, uint16_t *orxLowPassAdcProfile,
|
||||
uint16_t *orxBandPassAdcProfile, uint16_t *loopBackAdcProfile, int16_t *orxMergeFilter);
|
||||
/****************************************************************************
|
||||
* Runtime functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Helper functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Read from the Talise ARM program or data memory
|
||||
*
|
||||
* Valid memory addresses are: Program Memory (0x01000000 - 0x0101C000),
|
||||
* Data Memory (0x20000000 - 0x20014000).
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param address The 32bit ARM address to read from.
|
||||
* \param returnData Byte(uint8_t) array containing the data read from the ARM memory.
|
||||
* \param bytesToRead Number of bytes in the returnData array.
|
||||
* \param autoIncrement is boolean flag to enable or disable auto-increment of ARM register 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_readArmMem(taliseDevice_t *device, uint32_t address, uint8_t *returnData, uint32_t bytesToRead, uint8_t autoIncrement);
|
||||
|
||||
/**
|
||||
* \brief Write to the Talise ARM program or data memory
|
||||
*
|
||||
* Valid memory addresses are: Program Memory (0x01000000 - 0x0101C000),
|
||||
* Data Memory (0x20000000 - 0x20014000).
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param address The 32-bit ARM address to write
|
||||
* \param data Byte array (uint8_t) containing data to be written to ARM memory
|
||||
* \param byteCount Number of bytes in the data array to be written
|
||||
*
|
||||
* \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_writeArmMem(taliseDevice_t *device, uint32_t address, uint8_t *data, uint32_t byteCount);
|
||||
|
||||
/**
|
||||
* \brief Low level helper function used by Talise API to write the ARM memory config structures
|
||||
*
|
||||
* Normally this function should not be required to be used directly by the BBIC. This is a helper
|
||||
* function used by other Talise API commands to write settings into the ARM memory.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param objectId ARM id of a particular structure or setting in ARM memory
|
||||
* \param offset Byte offset from the start of the objectId's memory location in ARM memory
|
||||
* \param data A byte array containing data to write to the ARM memory buffer.
|
||||
* \param byteCount Number of bytes in the data array (Valid size = 1-255 bytes)
|
||||
*
|
||||
* \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 ARM 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_writeArmConfig(taliseDevice_t *device, uint8_t objectId, uint16_t offset, uint8_t *data, uint8_t byteCount);
|
||||
|
||||
/**
|
||||
* \brief Low level helper function used by Talise API to read the ARM memory config structures
|
||||
*
|
||||
* Normally this function should not be required to be used directly by the BBIC. This is a helper
|
||||
* function used by other Talise API commands to read settings from the ARM memory.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param objectId ARM id of a particular structure or setting in ARM memory
|
||||
* \param offset Byte offset from the start of the objectId's memory location in ARM memory
|
||||
* \param data A byte array containing data to write to the ARM memory buffer
|
||||
* \param byteCount Number of bytes in the data array (Valid size = 1-255 bytes)
|
||||
*
|
||||
* \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_readArmConfig(taliseDevice_t *device, uint8_t objectId, uint16_t offset, uint8_t *data, uint8_t byteCount);
|
||||
|
||||
/**
|
||||
* \brief Reads the Talise ARM 64-bit command status register and returns an error and status word
|
||||
*
|
||||
* A 64-bit status register consisting of a pending bit and three-bit error type is read one byte at
|
||||
* a time for the first 16 even-numbered opcodes. The function parses the pending bits and error bits into
|
||||
* two (2) separate 16-bit words. statusWord contains the status pending bits. errorWord contains
|
||||
* a single error bit if the error type > 0 for any three-bit code.
|
||||
* Each word is weighted according to the first 16 even-numbered opcodes where,
|
||||
* 0x0001 = opcode '0', 0x0002 = opcode '2', 0x0004 = opcode '4', 0x0008 = opcode '6' and so on.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param errorWord 16-bit error word comprised of weighted bits according to first 16 even-numbered opcodes
|
||||
* The weighted bit is set if any three-bit error type > 0, where '0' = OK
|
||||
* \param statusWord 16-bit pending bits word comprised of weighted bits according to first 16 even-numbered opcodes
|
||||
* The weighted bit is set if an opcode is pending, where '0' = no pending opcode
|
||||
*
|
||||
* \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_readArmCmdStatus(taliseDevice_t *device, uint16_t *errorWord, uint16_t *statusWord);
|
||||
|
||||
/**
|
||||
* \brief Isolated byte read of the Talise ARM 64-bit command status register based on the opcode
|
||||
*
|
||||
* A single byte read is performed on the 64-bit command status register according to
|
||||
* the opcode of interest. The pending bit and the error type are extracted from the status
|
||||
* register and returned as a single byte in the lower nibble.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param opCode Opcode of interest where only the first 16 even-numbered integers are valid
|
||||
* \param cmdStatByte Comprised of cmdStatByte[3:1] = error type, cmdStatByte[0] = pending flag for opCode of interest
|
||||
*
|
||||
* \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_readArmCmdStatusByte(taliseDevice_t *device, uint8_t opCode, uint8_t *cmdStatByte);
|
||||
|
||||
/**
|
||||
* \brief Talise ARM command status wait function polls command status register until opcode of interest completes
|
||||
*
|
||||
* This function polls the ARM status SPI register at the waitInterval_us rate,
|
||||
* blocking the function return until either the ARM command completes, the
|
||||
* ARM returns an error, or this function times out.
|
||||
*
|
||||
* In the event that this function returns an error, such as a timeout error
|
||||
* or ARM error, the cmdStatByte parameter is still returned with the ARM
|
||||
* command status, which can be used for debug to determine the lower
|
||||
* layer ARM error.
|
||||
*
|
||||
* \pre ARM firmware load and initialization must take place first before attempting to use this function
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param opCode Opcode of interest where only the first 16 even-numbered integers are valid
|
||||
* \param cmdStatByte Comprised of cmdStatByte[3:1] = error type, cmdStatByte[0] = pending flag for opCode of interest
|
||||
* \param timeout_us Command time-out period in microseconds
|
||||
* \param waitInterval_us Wait interval time to thread sleep between each check of the ARM command status to prevent SPI read thrashing
|
||||
*
|
||||
* \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 ARM 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_waitArmCmdStatus(taliseDevice_t *device, uint8_t opCode, uint8_t *cmdStatByte, uint32_t timeout_us, uint32_t waitInterval_us);
|
||||
|
||||
/**
|
||||
* \brief Sends a command to the Talise ARM processor interface
|
||||
*
|
||||
* \pre This function can be called after initializing the ARM processor
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param opCode Opcode of interest where only the first 16 even-numbered integers are valid
|
||||
* \param extendedData A byte array containing extended data to write to the ARM command interface
|
||||
* \param extendedDataNumBytes Number of bytes in the extendedData array (Valid size = 0-4 bytes)
|
||||
*
|
||||
* \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 ARM reset required
|
||||
* \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_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_sendArmCommand(taliseDevice_t *device, uint8_t opCode, const uint8_t *extendedData, uint8_t extendedDataNumBytes);
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Debug functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Reads back the version of the ARM binary loaded into the Talise ARM memory
|
||||
*
|
||||
* This function reads the ARM memory to read back the major.minor.releaseCandidate
|
||||
* version and the build type for the ARM binary loaded into ARM memory.
|
||||
* Note: only 'TAL_ARM_BUILD_RELEASE' build type should be used with production code
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings->chipSelectIndex
|
||||
*
|
||||
* \param device is structure pointer to the Talise data structure containing settings
|
||||
* \param talArmVersionInfo is a pointer to a structure containing the ARM binary version and
|
||||
* build type data
|
||||
*
|
||||
* \retval TALACT_NO_ACTION Function completed successfully
|
||||
* \retval TALACT_ERR_CHECK_PARAM One of the function parameters has a NULL pointer or ARM has not been loaded
|
||||
*/
|
||||
uint32_t TALISE_getArmVersion_v2(taliseDevice_t *device, taliseArmVersionInfo_t *talArmVersionInfo);
|
||||
|
||||
/**
|
||||
* \deprecated Please see TALISE_getArmVersion_v2 for current implementation
|
||||
*
|
||||
* \brief ***DEPRECATED*** Reads back the version of the ARM binary loaded into the Talise ARM memory
|
||||
*
|
||||
* This function reads the ARM memory to read back the major.minor.releaseCandidate
|
||||
* version for the ARM binary loaded into ARM memory.
|
||||
*
|
||||
* <B>Dependencies</B>
|
||||
* - device->spiSettings->chipSelectIndex
|
||||
*
|
||||
* \param device is structure pointer to the Talise data structure containing settings
|
||||
* \param majorVer The Major version is returned in this parameter
|
||||
* \param minorVer The Minor version is returned in this parameter
|
||||
* \param rcVer The release candidate version (build number) is returned in this parameter
|
||||
*
|
||||
* \retval TALACT_NO_ACTION Function completed successfully
|
||||
* \retval TALACT_ERR_CHECK_PARAM One of the function parameters has a NULL pointer
|
||||
*/
|
||||
uint32_t TALISE_getArmVersion(taliseDevice_t *device, uint8_t *majorVer, uint8_t *minorVer, uint8_t *rcVer);
|
||||
|
||||
/**
|
||||
* \brief Verifies the ARM checksum value
|
||||
*
|
||||
* The checksum which is written into the binary file is verified with the calculated
|
||||
* checksum in the Talise ARM after the binary file has been loaded. This function
|
||||
* will wait for a timeout period for the checksum calculation to occur. The
|
||||
* user can adjust the timeout period and SPI read interval in talise_user.c by
|
||||
* adjusting the macros VERIFY_ARM_CHKSUM_TIMEOUTUS and
|
||||
* VERIFY_ARM_CHKSUM_INTERVALUS.
|
||||
*
|
||||
* \pre This function is called after the ARM binary file has been loaded to verify it's
|
||||
* checksum in ARM memory
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is structure pointer to the Talise data structure containing settings
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_TIMER Recovery action for timer time-out check required
|
||||
* \retval TALACT_ERR_CHECK_PARAM Recovery action for bad parameter check
|
||||
* \retval TALACT_ERR_RESET_ARM Recovery action for ARM reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_verifyArmChecksum(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \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 souce allows looking up
|
||||
* a specific error message.
|
||||
*
|
||||
* \retval Returns a character array with the error message speficied by
|
||||
* errSrc and errCode.
|
||||
*/
|
||||
const char* talGetArmErrorMessage(uint32_t errSrc, uint32_t errCode);
|
||||
|
||||
/**
|
||||
* \brief Private Helper function to process detected errors reported from the
|
||||
* arm to determine recovery action.
|
||||
*
|
||||
* This is a private function and is automatically called by the API.
|
||||
*
|
||||
* \param device Pointer to device data structure identifying desired device instance
|
||||
* \param errHdl Error Handler type
|
||||
* \param detErr Error detected to be processed by handler (ARM opcode << 16 | ARM object ID <<8 | ARM cmdStatusByte)
|
||||
* \param retVal current Recovery Action,
|
||||
* \param recAction new Recovery Action to be returned should error handler determine an error
|
||||
*
|
||||
* \retval uint32_t Value representing the latest recovery Action following processing of detected arm error.
|
||||
*/
|
||||
talRecoveryActions_t talArmCmdErrorHandler(taliseDevice_t *device, taliseErrHdls_t errHdl,
|
||||
uint32_t detErr, talRecoveryActions_t retVal, talRecoveryActions_t recAction);
|
||||
|
||||
#define ARMCMD_ERRCODE(armOpCode, armObjId, armErrorFlag) ((armOpCode << 16) | (armObjId << 8) | armErrorFlag)
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_ARM_H_ */
|
||||
Binary file not shown.
Executable
+133
@@ -0,0 +1,133 @@
|
||||
/**
|
||||
* \file talise_arm_macros.h
|
||||
* \brief Contains Talise API miscellaneous macro definitions for ARM
|
||||
*
|
||||
* 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_ARM_MACROS_H
|
||||
#define _TALISE_ARM_MACROS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define TX_PROFILE_VALID 0x01
|
||||
#define RX_PROFILE_VALID 0x02
|
||||
#define ORX_PROFILE_VALID 0x04
|
||||
|
||||
#define TALISE_JESD_FRAMERB_OFFSET 0x28
|
||||
#define TALISE_JESD_DEFRAMERB_OFFSET 0x50
|
||||
|
||||
/* The mailbox interface 3 bit error flag has a subset of error flags
|
||||
* that are common to all ARM commands.
|
||||
*/
|
||||
#define TAL_NUM_COMMON_ARMERR_FLAGS 0x04
|
||||
#define TAL_NUM_COMMON_SETARMERR_FLAGS 0x05
|
||||
#define TAL_NUM_COMMON_GETARMERR_FLAGS 0x05
|
||||
|
||||
/* ARM Error Flag Source */
|
||||
#define TAL_ARM_EFSRC_INITCALS 0x10
|
||||
#define TAL_ARM_EFSRC_SETRFPLL 0x20
|
||||
#define TAL_ARM_EFSRC_SETPENDING 0x30
|
||||
#define TAL_ARM_EFSRC_SETGPIOCTRL 0x40
|
||||
#define TAL_ARM_EFSRC_BOOTUP 0x100
|
||||
|
||||
#define TALISE_ARM_ABORT_OPCODE 0x00
|
||||
#define TALISE_ARM_RUNINIT_OPCODE 0x02
|
||||
#define TALISE_ARM_RADIOON_OPCODE 0x04
|
||||
#define TALISE_ARM_WRITECFG_OPCODE 0x06
|
||||
#define TALISE_ARM_READCFG_OPCODE 0x08
|
||||
#define TALISE_ARM_SET_OPCODE 0x0A
|
||||
#define TALISE_ARM_GET_OPCODE 0x0C
|
||||
|
||||
#define TALISE_ARM_ORX1_TX_SEL0_SIGNALID 0x00
|
||||
#define TALISE_ARM_ORX1_TX_SEL1_SIGNALID 0x01
|
||||
#define TALISE_ARM_ORX2_TX_SEL0_SIGNALID 0x02
|
||||
#define TALISE_ARM_ORX2_TX_SEL1_SIGNALID 0x03
|
||||
#define TALISE_ARM_TXCAL_ENA_SIGNALID 0x04
|
||||
#define TALISE_ARM_CAL_UPDATE0_SIGNALID 0x05
|
||||
#define TALISE_ARM_CAL_UPDATE1_SIGNALID 0x06
|
||||
#define TALISE_ARM_CAL_UPDATE2_SIGNALID 0x07
|
||||
|
||||
#define TALISE_ARM_OBJECTID_TXBBF_INIT 0x00
|
||||
#define TALISE_ARM_OBJECTID_ADCTUNER_INIT 0x01
|
||||
#define TALISE_ARM_OBJECTID_TIA_INIT 0x02
|
||||
#define TALISE_ARM_OBJECTID_DCOFFSET_INIT 0x03
|
||||
#define TALISE_ARM_OBJECTID_TXATTENDELAY_INIT 0x04
|
||||
#define TALISE_ARM_OBJECTID_RXGAINDELAY_INIT 0x05
|
||||
#define TALISE_ARM_OBJECTID_ADCFLASH_INIT 0x06
|
||||
#define TALISE_ARM_OBJECTID_PATHDELAY_INIT 0x07
|
||||
#define TALISE_ARM_OBJECTID_TXLOLINT_INIT 0x08
|
||||
#define TALISE_ARM_OBJECTID_TXLOLEXT_INIT 0x09
|
||||
#define TALISE_ARM_OBJECTID_TXQEC_INIT 0x0A
|
||||
#define TALISE_ARM_OBJECTID_LBLODELAY_INIT 0x0B
|
||||
#define TALISE_ARM_OBJECTID_LBRXQEC_INIT 0x0C
|
||||
#define TALISE_ARM_OBJECTID_RXLODELAY_INIT 0x0D
|
||||
#define TALISE_ARM_OBJECTID_RXQEC_INIT 0x0E
|
||||
#define TALISE_ARM_OBJECTID_ORXLODELAY_INIT 0x10
|
||||
#define TALISE_ARM_OBJECTID_ORXQEC_INIT 0x11
|
||||
#define TALISE_ARM_OBJECTID_TXDAC_INIT 0x12
|
||||
#define TALISE_ARM_OBJECTID_ADCSTITCHING_INIT 0x13
|
||||
|
||||
#define TALISE_ARM_OBJECTID_RXQEC_TRACKING 0x20
|
||||
#define TALISE_ARM_OBJECTID_ORXQEC_TRACKING 0x21
|
||||
#define TALISE_ARM_OBJECTID_TXLOL_TRACKING 0x22
|
||||
#define TALISE_ARM_OBJECTID_TXQEC_TRACKING 0x23
|
||||
#define TALISE_ARM_OBJECTID_RXHD2_TRACKING 0x24
|
||||
#define TALISE_ARM_OBJECTID_TEMP_SENSOR 0x40
|
||||
#define TALISE_ARM_OBJECTID_RSSI 0x41
|
||||
#define TALISE_ARM_OBJECTID_CAL_STATUS 0x42
|
||||
#define TALISE_ARM_OBJECTID_INITCAL_STATUS 0x43
|
||||
#define TALISE_ARM_OBJECTID_GO_GET_GP_INT_SOURCE 0x46
|
||||
#define TALISE_ARM_OBJECTID_GET_AUX_ADC_RESULT 0x47
|
||||
#define TALISE_ARM_OBJECTID_GPIO_CTRL 0x60
|
||||
#define TALISE_ARM_OBJECTID_ORX_TXCAL_CTRL 0x61
|
||||
#define TALISE_ARM_OBJECTID_TDD_TXATTEN_CTRL 0x62
|
||||
#define TALISE_ARM_OBJECTID_RFPLL_LO_FREQUENCY 0x63
|
||||
#define TALISE_ARM_OBJECTID_TRACKING_CAL_SUSPEND_RESUME 0x65
|
||||
#define TALISE_ARM_OBJECTID_TRACKING_CAL_CTRL 0x66
|
||||
#define TALISE_ARM_OBJECTID_TRACKING_CAL_PENDING 0x67
|
||||
#define TALISE_ARM_OBJECTID_TRACKING_CAL_UPDATE 0x68
|
||||
#define TALISE_ARM_OBJECTID_ARM_EXCEPTION 0x69
|
||||
#define TALISE_ARM_OBJECTID_RFPLL_LOOP_FREQ 0x6B
|
||||
#define TALISE_ARM_OBJECTID_FAST_FREQ_HOP_MODE 0x6D
|
||||
#define TALISE_ARM_OBJECTID_FREQ_HOP 0x6E
|
||||
#define TALISE_ARM_OBJECTID_GS_AUX_ADC 0x6F
|
||||
#define TALISE_ARM_OBJECTID_ENABLE_CALS_GPINT 0x81
|
||||
#define TALISE_ARM_OBJECTID_CAL_SCHEDULER 0x83
|
||||
#define TALISE_ARM_OBJECTID_SYTEM_INFO 0x86
|
||||
/* ARM memory */
|
||||
#define TALISE_ADDR_ARM_START_PROG_ADDR 0x01000000
|
||||
#define TALISE_ADDR_ARM_END_PROG_ADDR 0x0101C000
|
||||
#define TALISE_ADDR_ARM_START_DATA_ADDR 0x20000000
|
||||
#define TALISE_ADDR_ARM_HOP_FREQ_MEM_ADDR 0x20001200
|
||||
#define TALISE_ADDR_ARM_END_DATA_ADDR 0x20014000
|
||||
#define TALISE_ADDR_ARM_VERSION 0x010001C0
|
||||
|
||||
/* ARM checksum registers */
|
||||
#define TALISE_ADDR_ARM_BUILD_CHKSUM_ADDR 0x0101BFE0
|
||||
#define TALISE_ADDR_ARM_CALC_CHKSUM_ADDR 0x0101BFE4
|
||||
|
||||
#define TALISE_ADC_PROFILE_SIZE = 42; /* number of uint16_t words per ADC profile */
|
||||
#define TALISE_ADCPROFILE_NUM_CAP_COND_CURR_VALUES 16
|
||||
#define TALISE_ADCPROFILE_NUM_BIAS_VBG_VALUES 22
|
||||
#define TALISE_ADCPROFILE_NUM_DACG_VALUES 2
|
||||
#define TALISE_ADCPROFILE_NUM_ES1_VALUES 1
|
||||
#define TALISE_ADCPROFILE_NUM_ALTG_VALUES 1
|
||||
|
||||
/* ARM Radio Status */
|
||||
#define TALISE_ARM_RADIO_STATUS_POWERUP 0
|
||||
#define TALISE_ARM_RADIO_STATUS_READY 1
|
||||
#define TALISE_ARM_RADIO_STATUS_IDLE 2
|
||||
#define TALISE_ARM_RADIO_STATUS_RADIO_ON 3
|
||||
#define TALISE_ARM_RADIO_STATUS_PROFILE_ERROR 4
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Executable
+47
@@ -0,0 +1,47 @@
|
||||
/**
|
||||
* \file talise_arm_types.h
|
||||
* \brief Contains Talise ARM data types
|
||||
*
|
||||
* 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_ARM_TYPES_H_
|
||||
#define TALISE_ARM_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TALAPI_ARMERR_BOOTUP_TIMEOUT_ERROR, /*!< Timed out waiting for ARM bootup to happen*/
|
||||
TALAPI_ARMERR_BOOTUP_IDLE, /*!< ARM in IDLE mode after bootup*/
|
||||
TALAPI_ARMERR_BOOTUP_RADIO_ON, /*!< ARM in RADIO_ON mode after bootup*/
|
||||
TALAPI_ARMERR_BOOTUP_PROFILE_ERROR, /*!< ARM Profile error during bootup*/
|
||||
TALAPI_ARMERR_BOOTUP_UNKNOWN_ERROR /*!< ARM unknown error during bootup*/
|
||||
} talApiArmErr_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TAL_ARM_BUILD_DEBUG, /*!< ARM binary is Debug Object*/
|
||||
TAL_ARM_BUILD_TEST_OBJECT, /*!< ARM binary is Test Object*/
|
||||
TAL_ARM_BUILD_RELEASE /*!< ARM binary is Release*/
|
||||
} taliseArmBuildType_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t majorVer; /*!< The ARM Major revision*/
|
||||
uint8_t minorVer; /*!< The ARM Minor revision*/
|
||||
uint8_t rcVer; /*!< The release candidate version (build number)*/
|
||||
taliseArmBuildType_t buildType; /*!< What type of ARM binary build*/
|
||||
} taliseArmVersionInfo_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_ARM_TYPES_H_ */
|
||||
Executable
+1855
File diff suppressed because it is too large
Load Diff
Executable
+785
@@ -0,0 +1,785 @@
|
||||
/**
|
||||
* \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_ */
|
||||
Binary file not shown.
Executable
+165
@@ -0,0 +1,165 @@
|
||||
/**
|
||||
* \file talise_cals_types.h
|
||||
* \brief Contains Talise API Calibration data types
|
||||
*
|
||||
* 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_TYPES_H_
|
||||
#define TALISE_CALS_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TAL_TX_BB_FILTER = 0x00000001, /*!< Tx BB filter calibration */ //发射基带滤波器校准,确保其频率响应符合设计要求,以减少信号失真和带外干扰。
|
||||
TAL_ADC_TUNER = 0x00000002, /*!< ADC tuner calibration */ //ADC调谐器校准,确保ADC能够准确地将模拟信号转换为数字信号,提高信号的精度和动态范围。
|
||||
TAL_TIA_3DB_CORNER = 0x00000004, /*!< TIA 3dB corner calibration *///TIA 3dB角校准,用于校准跨阻放大器(TIA)的3dB角频率,确保其增益在特定频率范围内保持稳定,减少信号衰减。
|
||||
TAL_DC_OFFSET = 0x00000008, /*!< DC offset calibration */ //直流偏移校准,用于校准系统中的直流偏移,确保信号的零点位置准确,减少因直流偏移导致的信号失真。
|
||||
TAL_TX_ATTENUATION_DELAY = 0x00000010, /*!< Tx attenuation delay calibration *///发射衰减延迟校准,用于校准发射链路中的衰减器延迟,确保信号在经过衰减后的时间延迟符合预期,以实现精确的信号同步。
|
||||
TAL_RX_GAIN_DELAY = 0x00000020, /*!< Rx gain delay calibration *///接收增益延迟校准,用于校准接收链路中的增益延迟,确保信号在经过增益放大后的时间延迟符合预期,以实现精确的信号同步。
|
||||
TAL_FLASH_CAL = 0x00000040, /*!< Flash converter comparator calibration *///闪存转换器比较器校准,用于校准闪存转换器中的比较器,确保其能够准确地比较信号电平,提高ADC的转换精度。
|
||||
TAL_PATH_DELAY = 0x00000080, /*!< Path delay equalization calibration *///路径延迟均衡校准,用于校准信号传输路径中的延迟,确保不同路径的信号能够同步到达,减少信号传输误差。
|
||||
TAL_TX_LO_LEAKAGE_INTERNAL = 0x00000100, /*!< Internal Tx LO leakage calibration *///内部发射本振泄漏校准,用于校准发射链路中的内部本振泄漏,减少本振信号对发射信号的干扰,提高信号质量。
|
||||
|
||||
TAL_TX_LO_LEAKAGE_EXTERNAL = 0x00000200, /*!< External Tx LO leakage calibration *///外部发射本振泄漏校准,用于校准发射链路中的外部本振泄漏,减少本振信号对发射信号的干扰,提高信号质量。
|
||||
|
||||
TAL_TX_QEC_INIT = 0x00000400, /*!< Tx quadrature error correction calibration *///发射四分位误差校正初始化,用于初始化发射链路中的四分位误差校正,确保I/Q信号的正交性,减少信号失真。
|
||||
TAL_LOOPBACK_RX_LO_DELAY = 0x00000800, /*!< Loopback Rx LO delay path calibration *///环回接收本振延迟校准,用于校准环回接收链路中的本振延迟,确保信号在环回路径中的时间延迟符合预期,以实现精确的信号同步。
|
||||
TAL_LOOPBACK_RX_RX_QEC_INIT = 0x00001000, /*!< Loopback Rx quadrature error correction calibration *///环回接收四分位误差校正初始化,用于初始化环回接收链路中的四分位误差校正,确保I/Q信号的正交性,减少信号失真。
|
||||
TAL_RX_LO_DELAY = 0x00002000, /*!< Rx LO delay path calibration *///接收本振延迟校准,用于校准接收链路中的本振延迟,确保信号在接收路径中的时间延迟符合预期,以实现精确的信号同步。
|
||||
TAL_RX_QEC_INIT = 0x00004000, /*!< Rx quadrature error correction calibration *///接收四分位误差校正初始化,用于初始化接收链路中的四分位误差校正,确保I/Q信号的正交性,减少信号失真。
|
||||
|
||||
TAL_RX_PHASE_CORRECTION = 0x00008000, /*!< Rx Phase correction calibration *///接收相位校正校准,用于校准接收链路中的相位,确保信号的相位准确,减少相位误差对信号的影响。
|
||||
TAL_ORX_LO_DELAY = 0x00010000, /*!< ORx LO delay path calibration *///观察接收本振延迟校准,用于校准观察接收链路中的本振延迟,确保信号在观察接收路径中的时间延迟符合预期,以实现精确的信号同步。
|
||||
TAL_ORX_QEC_INIT = 0x00020000, /*!< ORx quadrature error correction calibration *///观察接收四分位误差校正初始化,用于初始化观察接收链路中的四分位误差校正,确保I/Q信号的正交性,减少信号失真。
|
||||
TAL_TX_DAC = 0x00040000, /*!< Tx DAC passband calibration *///发射DAC通带校准,用于校准发射链路中的数模转换器(DAC)的通带,确保其频率响应符合设计要求,减少信号失真。
|
||||
|
||||
TAL_ADC_STITCHING = 0x00080000, /*!< ADC stitching calibration *///ADC拼接校准,用于校准多个ADC之间的拼接,确保多个ADC的输出信号能够无缝拼接,提高信号的完整性和连续性。
|
||||
TAL_FHM_CALS = 0x00800000 /*!< FHM (Fast Frequency Hopping Mode) Calibrations *///快速频率跳变模式校准,用于校准快速频率跳变模式下的相关参数,确保系统在快速频率跳变时能够保持稳定的性能,减少跳变误差。
|
||||
} taliseInitCalibrations_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TAL_TRACK_NONE = 0x00000000, /*!< Disable all tracking calibrations */
|
||||
TAL_TRACK_RX1_QEC = 0x00000001, /*!< Rx1 quadrature error correction tracking calibration */
|
||||
TAL_TRACK_RX2_QEC = 0x00000002, /*!< Rx2 quadrature error correction tracking calibration */
|
||||
TAL_TRACK_ORX1_QEC = 0x00000004, /*!< ORx1 quadrature error correction tracking calibration */
|
||||
TAL_TRACK_ORX2_QEC = 0x00000008, /*!< ORx2 quadrature error correction tracking calibration */
|
||||
TAL_TRACK_TX1_LOL = 0x00000010, /*!< Tx1 LO leakage tracking calibration */
|
||||
TAL_TRACK_TX2_LOL = 0x00000020, /*!< Tx2 LO leakage tracking calibration */
|
||||
TAL_TRACK_TX1_QEC = 0x00000040, /*!< Tx1 quadrature error correction tracking calibration */
|
||||
TAL_TRACK_TX2_QEC = 0x00000080, /*!< Tx2 quadrature error correction tracking calibration */
|
||||
TAL_TRACK_RX1_HD2 = 0x00000100, /*!< Rx1 HD2 error correction tracking calibration */
|
||||
TAL_TRACK_RX2_HD2 = 0x00000200, /*!< Rx2 HD2 error correction tracking calibration */
|
||||
TAL_TRACK_ALL = 0x000003FF /*!< ENUM specifies all tracking cals */
|
||||
} taliseTrackingCalibrations_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible wait events to use with TALISE_waitForEvent()
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_CLKPLLCP = 0, /*!< CLK PLL CP wait event */
|
||||
TAL_CLKPLL_LOCK, /*!< CLK PLL lock wait event */
|
||||
TAL_RFPLLCP, /*!< RF PLL CP wait event */
|
||||
TAL_RFPLL_LOCK, /*!< RF PLL lock wait event */
|
||||
TAL_AUXPLLCP, /*!< AUX PLL CP wait event */
|
||||
TAL_AUXPLL_LOCK, /*!< AUX PLL LOCK wait event */
|
||||
TAL_ARMBUSY /*!< ARM busy wait event */
|
||||
} taliseWaitEvent_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Rx Digital DC Offset channels
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_DC_OFFSET_RX_CHN = 0,
|
||||
TAL_DC_OFFSET_ORX_CHN = 1
|
||||
} taliseDcOffsetChannels_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Tx LOL Status
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t errorCode; /*!< error code from Tx LOL */
|
||||
uint32_t percentComplete; /*!< percent of required data collected for the current cal. Range 0 to 100 */
|
||||
uint32_t varianceMetric; /*!< metric of how well the tracking cal is performing */
|
||||
uint32_t iterCount; /*!< running counter that increments each time the cal runs to completion */
|
||||
uint32_t updateCount; /*!< running counter that increments each time the cal updates the correction/actuator hardware */
|
||||
} taliseTxLolStatus_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Tx QEC Status
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t errorCode; /*!< error code from Tx QEC */
|
||||
uint32_t percentComplete; /*!< percent of required data collected for the current cal. Range 0 to 100 */
|
||||
uint32_t correctionMetric; /*!< metric of how well the tracking cal is performing */
|
||||
uint32_t iterCount; /*!< running counter that increments each time the cal runs to completion */
|
||||
uint32_t updateCount; /*!< running counter that increments each time the cal updates the correction/actuator hardware */
|
||||
} taliseTxQecStatus_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Rx QEC Status
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t errorCode; /*!< error code from Rx QEC */
|
||||
uint32_t percentComplete; /*!< percent of required data collected for the current cal. Range 0 to 100 */
|
||||
uint32_t selfcheckIrrDb; /*!< */
|
||||
uint32_t iterCount; /*!< running counter that increments each time the cal runs to completion */
|
||||
uint32_t updateCount; /*!< running counter that increments each time the cal updates the correction/actuator hardware */
|
||||
} taliseRxQecStatus_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Orx QEC Status
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t errorCode; /*!< error code from Orx QEC */
|
||||
uint32_t percentComplete; /*!< percent of required data collected for the current cal. Range 0 to 100 */
|
||||
uint32_t selfcheckIrrDb; /*!< */
|
||||
uint32_t iterCount; /*!< running counter that increments each time the cal runs to completion */
|
||||
uint32_t updateCount; /*!< running counter that increments each time the cal updates the correction/actuator hardware */
|
||||
} taliseOrxQecStatus_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Rx HD2 Status
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t errorCode; /*!< error code from HD2 */
|
||||
uint32_t percentComplete; /*!< NOT APPLICABLE FOR HD2 Dynamic condition of this cal does not allow for convergence */
|
||||
uint32_t confidenceLevel; /*!< Confidence level that cal has accurately indentified the coefficient required to cancel HD2 */
|
||||
/*!< 0 - No Observation, 1 - 7 indicates increasing confidence level */
|
||||
uint32_t iterCount; /*!< running counter that increments each time the cal runs to completion */
|
||||
uint32_t updateCount; /*!< running counter that increments each time the cal updates the correction/actuator hardware */
|
||||
} taliseRxHd2Status_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Rx HD2 calibration config settings
|
||||
*
|
||||
* Note: Set 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.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t posSideBandSel; /*!< 1 = Correct HD2 of desired signal on the positive (upper) side of the complex FFT,
|
||||
0 = correct HD2 in the negative (lower)side of the complex FFT */
|
||||
} taliseRxHd2Config_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_CALS_TYPES_H_ */
|
||||
Executable
+744
@@ -0,0 +1,744 @@
|
||||
/**
|
||||
* \file talise_error.c
|
||||
* \brief Contains Talise API error information functions
|
||||
* These functions are public to the customer for getting more details on
|
||||
* errors and debugging.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "talise_error.h"
|
||||
#include "talise_hal.h"
|
||||
#include "../adi_hal/adi_hal.h"
|
||||
#include "talise_user.h"
|
||||
#include "talise_gpio.h"
|
||||
#include "talise_arm.h"
|
||||
#include "talise_cals.h"
|
||||
|
||||
uint32_t talRegisterErrorMessage(taliseDevice_t *device, uint32_t errSrc, const char* (*callbackFunction)(uint32_t, uint32_t))
|
||||
{
|
||||
#ifndef TALISE_VERBOSE
|
||||
return (0);
|
||||
#else
|
||||
uint32_t i = 0;
|
||||
talErrFunctionTable_t *talFunctionTable = &device->devStateInfo.talErrFunctionTable;
|
||||
|
||||
for (i = 0; i < TALISE_ERRORFUNCTIONTABLEMAX; i++)
|
||||
{
|
||||
if ((talFunctionTable->talErrorFunctionTable[i].errSrc == errSrc) &&
|
||||
(talFunctionTable->talErrorFunctionTable[i].callbackFunction != NULL))
|
||||
{
|
||||
/* Already registered */
|
||||
break;
|
||||
}
|
||||
|
||||
/* Register function if space is available */
|
||||
if (talFunctionTable->talErrorFunctionTable[i].callbackFunction == NULL)
|
||||
{
|
||||
talFunctionTable->talErrorFunctionTable[i].callbackFunction = callbackFunction;
|
||||
talFunctionTable->talErrorFunctionTable[i].errSrc = errSrc;
|
||||
break;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
if (i >= TALISE_ERRORFUNCTIONTABLEMAX)
|
||||
{
|
||||
/* space is not available */
|
||||
return (1);
|
||||
}
|
||||
|
||||
return (0);
|
||||
#endif
|
||||
}
|
||||
|
||||
static const char* talCallbackErrorMessage(taliseDevice_t *device, uint32_t errSrc, uint32_t errCode)
|
||||
{
|
||||
#ifndef TALISE_VERBOSE
|
||||
return "";
|
||||
#else
|
||||
uint32_t i = 0;
|
||||
talErrFunctionTable_t *talFunctionTable = &device->devStateInfo.talErrFunctionTable;
|
||||
|
||||
for (i = 0; i < TALISE_ERRORFUNCTIONTABLEMAX; i++)
|
||||
{
|
||||
if ((talFunctionTable->talErrorFunctionTable[i].errSrc == errSrc) &&
|
||||
(talFunctionTable->talErrorFunctionTable[i].callbackFunction != NULL))
|
||||
{
|
||||
return ((*talFunctionTable->talErrorFunctionTable[i].callbackFunction)(errSrc,errCode));
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
return "Invalid TALISE error passed, not in error list\n";
|
||||
#endif
|
||||
}
|
||||
|
||||
uint32_t TALISE_getErrCode(taliseDevice_t *device, uint32_t* errSrc, uint32_t* errCode)
|
||||
{
|
||||
talRecoveryActions_t retVal = TALACT_NO_ACTION;
|
||||
|
||||
if(device == NULL ||
|
||||
errSrc == NULL ||
|
||||
errCode == NULL)
|
||||
{
|
||||
return (uint32_t)TALACT_ERR_CHECK_PARAM;
|
||||
}
|
||||
|
||||
*errSrc = device->devStateInfo.errSource;
|
||||
*errCode = device->devStateInfo.errCode;
|
||||
|
||||
return (uint32_t)retVal;
|
||||
}
|
||||
|
||||
const char* TALISE_getErrorMessage(uint32_t errSrc, uint32_t errCode)
|
||||
{
|
||||
#ifndef TALISE_VERBOSE
|
||||
return "";
|
||||
#else
|
||||
|
||||
if(errSrc == TAL_ERRSRC_ADIHAL)
|
||||
{
|
||||
switch (errCode)
|
||||
{
|
||||
case ADIHAL_OK: return "";
|
||||
case ADIHAL_SPI_FAIL: return "ADIHAL: SPI Failure\n";
|
||||
case ADIHAL_GPIO_FAIL: return "ADIHAL: GPIO Failure\n";
|
||||
case ADIHAL_TIMER_FAIL: return "ADIHAL:Timing Function Failure\n";
|
||||
case ADIHAL_WAIT_TIMEOUT: return "ADIHAL:HAL Access Timed out\n";
|
||||
case ADIHAL_GEN_SW: return "ADIHAL:HAL Function Soft Error\n";
|
||||
case ADIHAL_WARNING: return "ADIHAL:HAL Function Soft Warning\n";
|
||||
|
||||
default: return "Invalid ADIHAL error passed, not in error list\n";
|
||||
}
|
||||
}
|
||||
else if ((errSrc == TAL_ERRSRC_TALARMCMD) ||
|
||||
(errSrc == TAL_ERRSRC_TALAPIARM))
|
||||
{
|
||||
return talGetArmErrorMessage(errSrc, errCode);
|
||||
}
|
||||
else if (errSrc == TAL_ERRSRC_INITCALS)
|
||||
{
|
||||
return talGetCalErrorMessage(errSrc, errCode);
|
||||
}
|
||||
else if (errSrc == TAL_ERRSRC_API)
|
||||
{
|
||||
switch (errCode)
|
||||
{
|
||||
case TAL_ERR_OK: return "\n";
|
||||
case TAL_ERR_INV_NULL_INIT_PARAM: return "Talise init data structure pointer is null\n";
|
||||
case TAL_ERR_WAITFOREVENT_INV_PARM: return "waitForEvent had invalid parameter.\n";
|
||||
case TAL_ERR_INIT_NULLPARAM: return "TALISE_initialize() was passed a NULL pointer for the device or init function parameter\n";
|
||||
case TAL_ERR_INIT_INV_DEVCLK: return "Invalid device clock in TALISE_initialize()\n";
|
||||
case TAL_ERR_CLKPLL_INV_HSDIV: return "Invalid CLKPLL HSDIV. (Valid 2, 2.5, 3, 4 or 5)\n";
|
||||
case TAL_ERR_SETCLKPLL_INV_VCOINDEX: return "CLKPLL VCO frequency out of range.\n";
|
||||
case TAL_ERR_SETCLKPLL_INV_NDIV: return "CLKPLL N divider too small, try using different device clock frequency\n";
|
||||
case TAL_ERR_SETRFPLL_INV_PLLNAME: return "Invalid pllName requested in setRfPllFreuquency().\n";
|
||||
case TAL_ERR_INV_SCALEDDEVCLK_PARAM: return "Could not scale device clock into range 40MHz to 80Mhz.\n";
|
||||
case TAL_ERR_SETRFPLL_INV_REFCLK: return "Unsupported PLL reference clock or refclk out of range.\n";
|
||||
case TAL_ERR_SETORXGAIN_INV_ORXPROFILE: return "Can not set ORx gain Index, ORX profile is not valid in device data structure\n";
|
||||
case TAL_ERR_SETORXGAIN_INV_CHANNEL: return "Invalid ObsRx channel in setObsRxManualGain().\n";
|
||||
case TAL_ERR_SETORXGAIN_INV_ORX1GAIN: return "Invalid ORx1 gain index requested in setObsRxManualGain()\n";
|
||||
case TAL_ERR_SETORXGAIN_INV_ORX2GAIN: return "Invalid ORx2 gain index requested in setObsRxManualGain()\n";
|
||||
case TAL_ERR_SETTXATTEN_INV_STEPSIZE_PARM: return "Invalid TxAtten stepsize. Use enum taliseTxAttenStepSize_t\n";
|
||||
case TAL_ERR_SETTXATTEN_INV_TXCHANNEL: return "Invalid Tx channel selected.\n";
|
||||
case TAL_ERR_SETTXATTEN_INV_PARM: return "Tx attenuation is out of range (0 - 41950 mdB).\n";
|
||||
case TAL_ERR_PROGRAMFIR_INV_NUMTAPS_PARM: return "Invalid number of FIR taps\n";
|
||||
case TALISE_ERR_TXFIR_INV_NUMTAPS_PARM: return "Invalid number of taps in Tx FIR\n";
|
||||
case TALISE_ERR_TXFIR_INV_NUMROWS: return "Invalid number of taps for given Tx FIR interpolation\n";
|
||||
case TALISE_ERR_TXFIR_TAPSEXCEEDED: return "Taps exceed max possible by the Tx FIR \n";
|
||||
case TALISE_ERR_RXFIR_INV_DDC: return "Invalid DDC configuration when calculating Rx FIR clock rates\n";
|
||||
case TALISE_ERR_RXFIR_INV_NUMTAPS_PARM: return "Invalid tap sizes when calculating Rx FIR clock rates\n";
|
||||
case TALISE_ERR_RXFIR_INV_NUMROWS: return "Invalid Rx FIR rows when calculating Rx FIR clock rates\n";
|
||||
case TALISE_ERR_RXFIR_TAPSEXCEEDED: return "Invalid clock rates when calculating Rx FIR clock rates\n";
|
||||
case TALISE_ERR_ORXFIR_INV_DDC: return "Invalid DDC configuration when calculating ORx FIR clock rates\n";
|
||||
case TALISE_ERR_ORXFIR_INV_NUMTAPS_PARM: return "Invalid tap sizes when calculating ORx FIR clock rates\n";
|
||||
case TALISE_ERR_ORXFIR_INV_NUMROWS: return "Invalid ORx FIR rows when calculating ORx FIR clock rates\n";
|
||||
case TALISE_ERR_ORXFIR_TAPSEXCEEDED: return "Invalid clock rates when calculating ORx FIR clock rates\n";
|
||||
case TAL_ERR_PROGRAMFIR_INV_FIRNAME_PARM: return "Invalid FIR filter name requested. use enum talisefirName_t\n";
|
||||
case TAL_ERR_RXFIR_INV_GAIN_PARM: return "Rx FIR filter has invalid gain setting\n";
|
||||
case TAL_ERR_SETRXGAIN_RXPROFILE_INVALID: return "Cannot set Rx Manual Gain, Rx profile is not valid in current configuration\n";
|
||||
case TAL_ERR_SETRXGAIN_INV_CHANNEL: return "Invalid channel selection for TALISE_setRxManualGain()\n";
|
||||
case TAL_ERR_SETRX1GAIN_INV_GAIN_PARM: return "Rx1 manual gain index out of range of gain table\n";
|
||||
case TAL_ERR_SETRX2GAIN_INV_GAIN_PARM: return "Rx2 manual gain index out of range of gain table\n";
|
||||
case TAL_ERR_SER_INV_M_PARM: return "Invalid JESD Rx Framer M parameter during setupSerializers()\n";
|
||||
case TAL_ERR_SER_INV_NP_PARM: return "Invalid JESD Rx Framer Np parameter during setupSerializers()\n";
|
||||
case TAL_ERR_SER_INV_L_PARM: return "Invalid JESD Rx Framer L parameter during setupSerializers()\n";
|
||||
case TAL_ERR_SER_INV_ORX_L_PARM: return "Invalid JESD Framer ORx L parameter during setupSerializers()\n";
|
||||
case TAL_ERR_SER_INV_ORX_M_PARM: return "Invalid JESD Framer ORx M parameter during setupSerializers()\n";
|
||||
case TAL_ERR_SER_INV_ORX_NP_PARM: return "Invalid JESD Framer ORx Np parameter (!= 16) during setupSerializers()\n";
|
||||
case TAL_ERR_SER_INV_ORX_LANEEN_PARM: return "Invalid number of ORx JESD204 lanes enabled\n";
|
||||
case TAL_ERR_SER_INV_LANERATE_PARM: return "Invalid Rx Lanerate frequency in setupSerializer()\n";
|
||||
case TAL_ERR_SER_INV_ORX_LANERATE_PARM: return "Invalid ORx Lanerate frequency in setupSerializer()\n";
|
||||
case TAL_ERR_SER_INV_LANEEN_PARM: return "Invalid number of JESD204 lanes enabled\n";
|
||||
case TAL_ERR_SER_INV_AMP_PARM: return "Invalid JESD204 serializer amplitude\n";
|
||||
case TAL_ERR_SER_INV_PREEMP_PARM: return "Invalid JESD204 serializer preemphasis setting\n";
|
||||
case TAL_ERR_SER_INV_LANEPN_PARM: return "Invalid JESD204 serializer PN invert setting\n";
|
||||
case TAL_ERR_SER_LANE_CONFLICT_PARM: return "FramerA and FramerB are attempting to use the same physical lanes\n";
|
||||
case TAL_ERR_SER_INV_TXSER_DIV_PARM: return "Invalid serializer lane clock divider\n";
|
||||
case TAL_ERR_SER_LANE_RATE_CONFLICT_PARM: return "Rx lane rate and ObsRx lane rate do not have common serializer lane clock rate.\n";
|
||||
case TAL_ERR_SER_INV_ZIF_TO_RIF_DATA_PARM: return "Framer M can only =1 if DDC mode is TAL_RXDDC_ZIF_TO_RIF_INT2\n";
|
||||
case TAL_ERR_SER_INV_DUALBAND_DATA_PARM: return "Framer M can only =8 if DDC mode is TAL_RXDDC_DUALBAND_DEC2\n";
|
||||
case TAL_ERR_SER_INV_RXFRAMER_SEL: return "Invalid Rx Framer select in device data structure\n";
|
||||
case TAL_ERR_SER_INV_ORXFRAMER_SEL: return "Invalid ObsRx Framer select in device data structure\n";
|
||||
case TAL_ERR_SER_LANERATE_ZERO: return "Serializer calculated lane rate = 0, check framer data structure for invalid setting\n";
|
||||
case TAL_ERR_HS_AND_LANE_RATE_NOT_INTEGER_MULT: return "Serializer HSCLK and lane clock are not integer multiples\n";
|
||||
case TAL_ERR_DESES_HS_AND_LANE_RATE_NOT_INTEGER_MULT: return "Deserializer lane clock and desired lanerate are not integer multiples\n";
|
||||
case TAL_ERR_DESES_INV_LANE_RATE: return "Invalid deserializer lane rate, when Np=12, CLKPLL VCO must = lane rate\n";
|
||||
case TAL_ERR_DESES_INV_LANE_RATE_DIV: return "A valid Deserializer lane clock divider is not possible with current settings\n";
|
||||
case TAL_ERR_DESER_INV_M_PARM: return "Invalid deserializer M value. (Valid 2 or 4)\n";
|
||||
case TAL_ERR_DESER_INV_NP_PARM: return "Invalid deserializer Np value. (Valid 12 or 16)\n";
|
||||
case TAL_ERR_DESER_INV_L_PARM: return "Invalid deserializer L value. (Valid 1, 2, 4)\n";
|
||||
case TAL_ERR_DESER_INV_LANERATE_PARM: return "Invalid deserializer lane rate (Valid 614.4Mbps to 12288Mbps)\n";
|
||||
case TAL_ERR_DESER_INV_LANEEN_PARM: return "Invalid number of deserializer lanes enabled (Valid 1, 2, 4)\n";
|
||||
case TAL_ERR_DESER_INV_EQ_PARM: return "Invalid deserializer EQ setting";
|
||||
case TAL_ERR_DESER_INV_LANEPN_PARM: return "Invalid deserializer invert Lane PN setting (valid 0 - 15)\n";
|
||||
case TAL_ERR_DESER_LANECONFLICT_PARM: return "When using both deframers, deframerA and B can not use the same phyiscal lane\n";
|
||||
case TAL_ERR_DESER_M_CONFLICT: return "When using both deframers, M must match for deframer A and B\n";
|
||||
case TAL_ERR_DESER_INV_DEFAB_M: return "When using both deframers, M can not exceed M=2\n";
|
||||
case TAL_ERR_DESER_NP_CONFLICT: return "When using both deframers, Np must match for deframer A and B\n";
|
||||
case TAL_ERR_DESER_INV_DEFRAMERSEL: return "Invalid deframer select parameter in TALISE_setupDeserializer()\n";
|
||||
case TAL_ERR_DESER_TXPROFILE_INV: return "Tx Profile config is not valid, can not setup deserializer. Verify device data structure\n";
|
||||
case TAL_ERR_FRAMER_INV_M_PARM: return "Invalid Rx framer M setting\n";
|
||||
case TAL_ERR_FRAMER_INV_NP_PARM: return "Invalid Rx framer Np setting\n";
|
||||
case TAL_ERR_FRAMER_INV_S_PARM: return "Invalid Framer S setting\n";
|
||||
case TAL_ERR_FRAMER_INV_BANKID_PARM: return "Invalid Rx framer Bank ID\n";
|
||||
case TAL_ERR_FRAMER_INV_LANEID_PARM: return "Invalid Rx framer Lane ID\n";
|
||||
case TAL_ERR_FRAMER_INV_SYNCBIN_PARM: return "Invalid Rxframer SYCNB select\n";
|
||||
case TAL_ERR_FRAMER_INV_LMFC_OFFSET_PARAM: return "Invalid Rx framer LMFC offset\n";
|
||||
case TAL_ERR_FRAMER_INV_DUALBAND_DATA_PARM: return"Invalid Rx framer dualband settings\n";
|
||||
case TAL_ERR_FRAMER_INV_FRAMERSEL_PARM: return "Invalid framer select parameter in TALISE_setupJesd204bFramer()\n";
|
||||
case TAL_ERR_FRAMERSTATUS_INV_FRAMERSEL_PARAM: return "Invalid framerSel parameter in readFramerStatus(). Choose framer A or framerB\n";
|
||||
case TAL_ERR_FRAMERSTATUS_NULL_FRAMERSTATUS_PARAM: return "NULL framerStatus param in readFramerStatus()\n";
|
||||
case TAL_ERR_FRAMER_ERRINJECT_INV_FRAMERSEL_PARAM: return "Invalid framerSel parameter in TALISE_injectFramerTestDataError()\n";
|
||||
case TAL_ERR_DEFRAMER_INV_DEFSEL: return "Invalid deframerSel parameter (Valid TAL_DEFRAMER_A or TAL_DEFRAMER_B)\n";
|
||||
case TAL_ERR_DEFRAMER_INV_TXPROFILE: return "Tx Profile is invalid. Verify tx structure in device data structure\n";
|
||||
case TAL_ERR_DEFRAMER_INV_LANESEN: return "Invalid deserializerLanesEnabled. (Valid 1-15 in 1,2,4 lane combos)\n";
|
||||
case TAL_ERR_DEFRAMER_INV_L: return "Invalid deframer L. deserializerLanesEnabled must enable 1,2 or 4 lanes\n";
|
||||
case TAL_ERR_DEFRAMER_INV_M: return "Invalid deframer M parameter. (valid 2 or 4)\n";
|
||||
case TAL_ERR_DEFRAMER_INV_NP: return "Invalid deframer Np parameter. (valid 12 or 16)\n";
|
||||
case TAL_ERR_DEFRAMER_INV_F: return "Invalid deframer F value. Check M, S and lanes enabled\n";
|
||||
case TAL_ERR_DEFRAMER_INV_K: return "Invalid deframer K value. Verify K is less than or equal to 32\n";
|
||||
case TAL_ERR_DEFRAMER_INV_FK: return "Invalid deframer F*K value. Verify M, S, and lanes enabled\n";
|
||||
case TAL_ERR_DEFRAMER_INV_PCLK: return "Invalid deframer PCLK. PCLK must be an integer divide from the CLKPLL VCO frequency\n";
|
||||
case TAL_ERR_DEFRAMER_INV_PCLKDIV: return "Invalid PCLK divider. The CLKPLL VCO to PCLK divide ratio is not a valid option\n";
|
||||
case TAL_ERR_DEFRAMER_INV_BANKID: return "Invalid JESD204 deframer bank ID (valid 0-15)\n";
|
||||
case TAL_ERR_ERR_DEFRAMER_INV_LANEID: return "INvalid JESD204 deframer lane ID (valid 0-31)\n";
|
||||
case TAL_ERR_DEFRAMER_INV_LMFC_OFFSET: return "Invalid deframer LMFC offset (valid 0 to K-1)\n";
|
||||
case TAL_ERR_RSTDEFRAMER_INV_DEFSEL: return "Invalid Deframer select parameter in enableDeframerLink()\n";
|
||||
case TAL_ERR_RSTFRAMER_INV_FRAMERSEL: return "Invalid framer select parameter in enableFramerLink()\n";
|
||||
case TAL_ERR_DEFSTATUS_INV_DEFRAMERSEL_PARAM: return "Invalid Deframer select parameter in readDeframerStatus()\n";
|
||||
case TAL_ERR_DEFSTATUS_NULL_DEFRAMERSTATUS_PARAM: return "Null pointer to deframerStatus parameter in readDeframerStatus()\n";
|
||||
case TAL_ERR_GETDFRMIRQSRC_NULL_STATUS_PARAM: return "TALISE_getDfrmIrqSource: Null pointer in irqSourceValue parameter\n";
|
||||
case TAL_ERR_SETDFRMIRQMASK_INV_DEFRAMERSEL_PARAM: return "Invalid deframer selected in setDfrmIrqMask()\n";
|
||||
case TAL_ERR_GETDFRMIRQMASK_NULL_IRQMASK_PARAM: return "Null pointer to irqMask parameter in getDfrmIrqMask()\n";
|
||||
case TAL_ERR_GETDFRMIRQMASK_INV_DEFRAMERSELECT_PARAM: return "Invalid deframer selected in getDfrmIrqMask()\n";
|
||||
case TAL_ERR_CLRDFRMIRQ_INV_DEFRAMERSEL_PARAM: return "Invalid deframer selected in TALISE_clearDfrmIrq()\n";
|
||||
case TAL_ERR_GETDFRMIRQSRC_INV_DEFRAMERSEL_PARAM: return "Invalid deframer selected in TALISE_getDfrmIrqSource()\n";
|
||||
case TAL_ERR_ENDEFSYSREF_INV_DEFRAMERSEL_PARAM: return "Invalid deframer select parameter in TALISE_enableSysrefToDeframer()\n";
|
||||
case TAL_ERR_ENFRAMERSYSREF_INV_FRAMERSEL_PARAM: return "Invalid framer select parameter in TALISE_enableSysrefToFramer()\n";
|
||||
case TAL_ERR_FRAMER_INV_TESTDATA_SOURCE_PARAM: return "Invalid framer testDataSource parameter in TALISE_enableFramerTestData()\n";
|
||||
case TAL_ERR_FRAMER_INV_INJECTPOINT_PARAM: return "Invalid framer test data injection point parameter in TALISE_enableFramerTestData()\n";
|
||||
case TAL_ERR_FRAMER_INV_FRAMERSEL_PARAM: return "Invalid framer select parameter in TALISE_enableFramerTestData()\n";
|
||||
case TAL_ERR_EN_DEFRAMER_PRBS_INV_PARAM: return "Invalid polyOrder or checkerLocation parameter in enableDeframerPrbsChecker()\n";
|
||||
case TAL_ERR_READDFRMPRBS_NULL_PARAM: return "NULL prbsErrorCount parameter in TALISE_readDeframerPrbsCounters()\n";
|
||||
case TAL_ERR_READDFRMPRBS_INV_DEFSEL_PARAM: return "Invalid deframer select parameter in TALISE_readDeframerPrbsCounters()\n";
|
||||
case TAL_ERR_INITARM_INV_ARMCLK_PARAM: return "Invalid ARM clock rate\n";
|
||||
case TAL_ERR_LOADHEX_INVALID_CHKSUM: return "LoadHex() line checksum is invalid\n";
|
||||
case TAL_ERR_LOADBIN_INVALID_BYTECOUNT: return 0;
|
||||
case TAL_ERR_READARMMEM_INV_ADDR_PARM: return "ReadArmMem() was given an invalid memory address\n";
|
||||
case TAL_ERR_WRITEARMMEM_INV_ADDR_PARM: return "WriteArmMem() was given an invalid memory address\n";
|
||||
case TAL_ERR_ARMCMD_INV_OPCODE_PARM: return "Invalid ARM opcode given to sendArmCommand()\n";
|
||||
case TAL_ERR_ARMCMD_INV_NUMBYTES_PARM: return "Invalid number of extended data in sendArmCommand()\n";
|
||||
case TAL_ERR_ARMCMDSTATUS_INV_OPCODE_PARM: return "Invalid opcode given to readArmCmdStatus()\n";
|
||||
case TAL_ERR_JESD204B_ILAS_MISMATCH_NULLPARAM: return "Function parameter has NULL pointer in TALISE_getDfrmIlasMismatch()\n";
|
||||
case TAL_ERR_JESD204B_ILAS_MISMATCH_INVALID_DEFRAMER: return "Invalid deframer selection parameter in TALISE_getDfrmIlasMismatch()\n";
|
||||
case TAL_ERR_JESD204B_ILAS_MISMATCH_NO_ACTIVE_LINK: return "No active link detected in TALISE_getDfrmIlasMismatch()\n";
|
||||
case TAL_ERR_JESD204B_ILAS_MISMATCH_SYNC_NOT_DETECTED: return "Sync_n not detected in TALISE_getDfrmIlasMismatch()\n";
|
||||
case TAL_ERR_TALFINDDFRMRLANECNTERROR_INV_DEFRAMERSEL_PARAM: return "Invalid deframer selection parameter in talFindDfrmrLaneCntErr()\n";
|
||||
case TAL_ERR_TALFINDDFRMRLANECNTERROR_NULL_PARAM: return "talFindDfrmrLaneCntErr: Null deframerInputsMask function parameter\n";
|
||||
case TAL_ERR_TALFINDDFRMRLANEERROR_NULL_PARAM: return "talFindDfrmrLaneErr: Null deframerInputsMask function parameter\n";
|
||||
case TAL_ERR_RXGAINTABLE_INV_PROFILE: return "TALISE_programRxGainTable(): RX gain table channel chosen, but the Rx profile is not valid in the device data structure\n";
|
||||
case TAL_ERR_RXGAINTABLE_INV_CHANNEL: return "TALISE_programRxGainTable(): Invalid channel specified\n";
|
||||
case TAL_ERR_RXGAINTABLE_INV_GAIN_INDEX_RANGE: return "TALISE_programRxGainTable(): Invalid numGainIndicesinTable greater than possible number of gain indices for channel, max is 128 indices. \n";
|
||||
case TAL_ERR_ORXGAINTABLE_INV_PROFILE: return "TALISE_programOrxGainTable(): RX gain table channel chosen, but the Rx profile is not valid in the device data structure\n";
|
||||
case TAL_ERR_ORXGAINTABLE_INV_CHANNEL: return "TALISE_programOrxGainTable(): Invalid channel specified\n";
|
||||
case TAL_ERR_ORXGAINTABLE_INV_GAIN_INDEX_RANGE: return "TALISE_programOrxGainTable(): Invalid numGainIndicesinTable greater than possible number of gain indices for channel, max is 124 indices. \n";
|
||||
case TAL_ERR_RXFRAMER_INV_FK_PARAM: return "Invalid FK parameter detected in TALISE_setupJesd204bFramer()\n";
|
||||
case TAL_ERR_RXFRAMER_INV_L_PARAM: return "Invalid L parameter detected in TALISE_setupJesd204bFramer\n";
|
||||
case TAL_ERR_INV_RX_GAIN_MODE_PARM: return "Invalid gain control mode detected in TALISE_setRxGainControlMode()\n";
|
||||
case TAL_ERR_UNSUPPORTED_RX_GAIN_MODE_PARM: return "TALISE_setRxGainControlMode(): Gain control mode is unsupported by API\n";
|
||||
case TAL_ERR_INV_AGC_RX_STRUCT_INIT: return "Invalid RX AGC structure detected at device->rx->rxAgcCtrl in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_STRUCT_INIT: return "Invalid RX AGC structure detected at device->rx->rxAgcCtrl->agcPeak in TALISE_setupRxAgc() and TALISE_getagcPeakRegisters\n";
|
||||
case TAL_ERR_INV_AGC_PWR_STRUCT_INIT: return "Invalid RX AGC structure detected at device->rx->rxAgcCtrl->agcPower in TALISE_setupRxAgc() and TALISE_getAgcPowerRegisters()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HIGHTHRSH_PARAM: return "Invalid APD high threshold at device->rx->rxAgcCtrl->agcPeak->apdHighThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_LOWGAINHIGHTHRSH_PARAM: return "Invalid APD peak detect high threshold detected at device->rx->rxAgcCtrl->agcPeak->apdLowThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_LOWGAINMODEHIGHTHRSH_PARAM: return "Invalid APD peak detect low threshold at device->rx->rxAgcCtrl->agcPeak->apdLowGainModeHighThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_LOWGAINTHRSH_PARAM: return "Invalid APD peak detect low threshold at device->rx->rxAgcCtrl->agcPeak->apdLowGainModeLowThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_GAINSTEPATTACK_PARAM : return "Invalid APD peak detect attack gain step at device->rx->rxAgcCtrl->agcPeak->apdGainStepAttack in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_APD_HIGH_LOW_THRESH: return "APD High threshold less than APD Low threshold in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_GAINSTEPRECOVERY_PARAM: return "Invalid APD gain index step size at device->rx->rxAgcCtrl->agcPeak->apdGainStepRecovery in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2OVRLD_PARAM: return "Invalid HB2 overload detector setting at device->rx->rxAgcCtrl->agcPeak->enableHb2Overload in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2OVRLDDURATION_PARAM: return "Invalid HB2 Overload Duration Cnt at device->rx->rxAgcCtrl->agcPeak->hb2OverloadDurationCnt in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2OVRLDTHRSHCNT_PARAM: return "Invalid HB2 Overload Threshold Cnt at device->rx->rxAgcCtrl->agcPeak->hb2OverloadThreshCnt in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2GAINSTEPRECOVERY_PARAM: return "Invalid HB2 gain index step size at device->rx->rxAgcCtrl->agcPeak->hb2GainStepHighRecovery in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2GAINSTEP0RECOVERY_PARAM: return "Invalid HB2 gain index step size ovrerange interval 0 at device->rx->rxAgcCtrl->agcPeak->hb2GainStepLowRecovery in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2GAINSTEP1RECOVERY_PARAM: return "Invalid HB2 gain index step size overrange interval 1 at device->rx->rxAgcCtrl->agcPeak->hb2GainStepMidRecovery in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2GAINSTEPATTACK_PARAM: return "Invalid HB2 decimator output attack gain step at device->rx->rxAgcCtrl->agcPeak->hb2GainStepAttack in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2OVRLDPWRMODE_PARAM: return "Invalid HB2 overload mode at device->rx->rxAgcCtrl->agcPeak->hb2OverloadPowerMode in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2OVRLDSEL_PARAM: return "Invalid HB2 overload select bit at device->rx->rxAgcCtrl->agcPeak->hb2OvrgSel in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PKK_HB2THRSHCFG_PARAM: return "Invalid HB2 Threshold configuration at device->rx->rxAgcCtrl->agcPeak->hb2ThreshConfig in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_LWR0THRSH_PARAM: return "Invalid Power measurement detect lower 0 threshold at device->rx->rxAgcCtrl->agcPower->underRangeHighPowerThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_LWR1THRSH_PARAM: return "Invalid Power measurement detect lower 1 threshold at device->rx->rxAgcCtrl->agcPower->underRangeLowPowerThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_LWR0PWRGAINSTEP_PARAM: return "Invalid Power measurement detect lower 0 recovery gain step at device->rx->rxAgcCtrl->agcPower->underRangeHighPowerGainStepRecovery in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_LWR1PWRGAINSTEP_PARAM: return "Invalid Power measurement detect lower 1 recovery gain step at device->rx->rxAgcCtrl->agcPower->underRangeLowPowerGainStepRecovery in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_MSR_DURATION_PARAM: return "Invalid Power measurement duration used by the decimated power block at device->rx->rxAgcCtrl->agcPower->powerMeasurementDuration in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_UPPWR0THRSH_PARAM: return "Invalid AGC device->rx->rxAgcCtrl->agcPower->upper0PowerThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_UPPWR1THRSH_PARAM: return "Invalid AGC device->rx->rxAgcCtrl->agcPower->upper1PowerThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_LOGSHIFT_PARAM: return "Invalid dynamic range increase of the power measurement from 40dB to ~60dB at device->rx->rxAgcCtrl->agcPower in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_UPPWR0GAINSTEP_PARAM: return "Invalid inner upper attack gain step at device->rx->rxAgcCtrl->agcPower->overRangeLowPowerGainStepAttack in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_PWR_UPPWR1GAINSTEP_PARAM: return "Invalid outer high power attack gain step at device->rx->rxAgcCtrl->agcPower->overRangeHighPowerGainStepAttack in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_PEAK_WAIT_TIME_PARM: return "device->rx->rxAgcCtrl->agcPeakWaitTime out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_MIN_MAX_GAIN_PARM: return "TALISE_setupRxAgc(): RX1 or RX2 min or max gain index in AGC structure is out of range of the values programmed in the gain table\n";
|
||||
case TAL_ERR_INV_AGC_RX_GAIN_UPDATE_TIME_PARM: return "device->rx->rxAgcCtrl->agcGainUpdateTime_us out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_MIN_GAIN_GRT_THAN_MAX_GAIN_PARM : return "TALISE_setRxAgcMinMaxGainIndex() : Min Gain Index cannot be greater than Max Gain Index";
|
||||
case TAL_ERR_INV_AGC_RX1ATTACKDELAY_PARAM: return " device->rx->rxAgcCtrl->agcRx1AttackDelay is out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX2ATTACKDELAY_PARAM: return " device->rx->rxAgcCtrl->agcRx2AttackDelay is out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_LOWTHRSHPREVENTGAIN_PARM: return "Invalid device->rx->rxAgcCtrl->agcPeakThreshGainControlMode TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_CHANGEGAINTHRSHHIGH_PARM: return "Invalid device->rx->rxAgcCtrl->agcChangeGainIfThreshHigh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_RESETONRXON_PARM: return "Invalid device->rx->rxAgcCtrl->agcResetOnRxon in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_ENSYNCHPULSECAINCNTR_PARM: return "Invalid device->rx->rxAgcCtrl->agcEnableSyncPulseForGainCounter in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_ENIP3OPTTHRSH_PARM: return "Invalid device->rx->rxAgcCtrl->agcEnableIp3OptimizationThresh in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_ENFASTRECOVERYLOOP_PARM: return "Invalid device->rx->rxAgcCtrl->agcPeak->agcEnableFastRecoveryLoop in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_SLOWLOOPDELAY_PARAM: return "Invalid AGC slow loop settling delay in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_MINAGCSLOWLOOPDELAY_PARAM: return "TALISE_setupRxAgc(): AGC slow loop settling delay is too small.\n";
|
||||
case TAL_ERR_INV_AGC_PWR_IP3RANGE_PARAM: return "device->rx->rxAgcCtrl->ip3OverRangeThresh out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_CLK_DIV_RATIO_PARM: return "Calculated agcClockDivRatio is not valid in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_CLK_PARM: return "AGC clock is 0. Parameter device->devStateInfo->clocks->hsDigClkDiv4or5_Hz is not valid in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_CLK_RATIO: return "AGC clock to ADC clock ratio is invalid\n";
|
||||
case TAL_ERR_INV_AGC_RX_GAIN_UNDERRANGE_UPDATE_TIME_PARM: return "AGC Under Range time interval is not valid. Parameter agcUnderRangeLowInterval_us is out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_GAIN_UNDERRANGE_MID_INTERVAL_PARM: return "AGC Under Range time interval is not valid. Parameter agcUnderRangeMidInterval is out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_AGC_RX_GAIN_UNDERRANGE_HIGH_INTERVAL_PARM: return "AGC Under Range time interval is not valid. Parameter agcUnderRangeHighInterval is out of range in TALISE_setupRxAgc()\n";
|
||||
case TAL_ERR_INV_RX_DEC_POWER_PARAM: return "TALISE_getRxDecPower: Null rxDecPower_mdBFS function parameter\n";
|
||||
case TAL_ERR_GETRXDECPOWER_INV_PROFILE: return "TALISE_getRxDecPower: Dec Power read requested for an Rx channel, but Rx profile is invalid or channel not initialized in device structure\n";
|
||||
case TAL_ERR_GETRXDECPOWER_INV_CHANNEL: return "TALISE_getRxDecPower: Invalid rxChannel parameter\n";
|
||||
case TAL_ERR_WAITFOREVENT_TIMEDOUT_CLKPLLCP: return "Clock PLL Charge Pump Cal event timed out in TALISE_waitForEvent()\n";
|
||||
case TAL_ERR_WAITFOREVENT_TIMEDOUT_CLKPLL_LOCK: return "Clock PLL Lock event timed out in TALISE_waitForEvent()\n";
|
||||
case TAL_ERR_WAITFOREVENT_TIMEDOUT_RFPLLCP: return "RF PLL Charge Pump Cal event timed out in TALISE_waitForEvent()\n";
|
||||
case TAL_ERR_WAITFOREVENT_TIMEDOUT_RFPLL_LOCK: return "RF PLL Lock event timed out in TALISE_waitForEvent()\n";
|
||||
case TAL_ERR_WAITFOREVENT_TIMEDOUT_AUXPLLCP: return "Aux PLL Charge Pump Cal event timed out in TALISE_waitForEvent()\n";
|
||||
case TAL_ERR_WAITFOREVENT_TIMEDOUT_AUXPLL_LOCK: return "Aux PLL Lock event timed out in TALISE_waitForEvent()\n";
|
||||
case TAL_ERR_WAITFOREVENT_TIMEDOUT_ARMBUSY: return "ARM Busy event timed out in TALISE_waitForEvent()\n";
|
||||
case TAL_ERR_TIMEDOUT_ARMMAILBOXBUSY: return "ARM Mailbox Busy. Command not executed in TALISE_sendArmCommand()\n";
|
||||
case TAL_ERR_EN_TRACKING_CALS_ARMSTATE_ERROR: return "Device not in radioOff/IDLE state. Error in TALISE_enableTrackingCals()\n";
|
||||
case TAL_ERR_GETPENDINGTRACKINGCALS_NULL_PARAM: return "TALISE_getPendingTrackingCals() was passed a null pointer\n";
|
||||
case TAL_ERR_TRACKINGCAL_OUTOFRANGE_PARAM: return "Parameter Out of Range in TALISE_rescheduleTrackingCal()\n";
|
||||
case TAL_ERR_PAUSETRACKINGCAL_INV_PARAM: return "Parameter out of range in TALISE_setAllTrackCalState()\n";
|
||||
case TAL_ERR_GETPAUSECALSTATE_NULL_PARAM: return "Null parameter in TALISE_getAllTrackCalState()\n";
|
||||
case TAL_ERR_SET_ARMGPIO_PINS_GPIO_IN_USE: return "TALISE_setArmGpioPins: Requested GPIO pin already assigned to another function\n";
|
||||
case TAL_ERR_SET_ARMGPIO_PINS_INV_SIGNALID: return "Invalid ARM GPIO Signal ID detected\n";
|
||||
case TAL_ERR_SET_ARMGPIO_PINS_INV_GPIOPIN: return "Out of range ARM GPIO pin detected\n";
|
||||
case TAL_ERR_GETRADIOSTATE_NULL_PARAM: return "TALISE_getRadioState() has null *radioStatus parameter\n";
|
||||
case TAL_ERR_CHECKGETMCS_STATUS_NULL_PARM: return "TALISE_getMultiChipSyncStatus() has null *mcsStatus parameter\n";
|
||||
case TAL_ERR_WAIT_INITCALS_ARMERROR: return "TALISE_waitInitCals() returned an ARM error\n";
|
||||
case TAL_ERR_WAIT_INITCALS_NULL_PARAM: return "TALISE_waitInitCals() has one or more null parameters\n";
|
||||
case TAL_ERR_CHECK_PLL_LOCK_NULL_PARM: return "TALISE_checkPllsLockStatus() has a null *pllLockStatus parameter\n";
|
||||
case TAL_ERR_READGPIOSPI_NULL_PARM: return "TALISE_readGpioSpi() has a null *gpioSpiRead parameter\n";
|
||||
case TAL_ERR_READGPIO3V3SPI_NULL_PARM: return "TALISE_readGpio3v3Spi() has a null *gpio3v3SpiRead parameter\n";
|
||||
case TAL_ERR_GET_TXFILTEROVRG_NULL_PARM: return "TALISE_getTxFilterOverRangeStatus() has a null *txFilterStatus parameter\n";
|
||||
case TAL_ERR_PROGRAM_RXGAIN_TABLE_NULL_PARM: return "TALISE_programRxGainTable() has a null *gainTablePtr parameter\n";
|
||||
case TAL_ERR_PROGRAM_ORXGAIN_TABLE_NULL_PARM: return "TALISE_programOrxGainTable() has a null *gainTablePtr parameter\n";
|
||||
case TAL_ERR_PROGRAMFIR_NULL_PARM: return "TALISE_programFir() has a null *firFilter parameter\n";
|
||||
case TAL_ERR_PROGRAMFIR_COEFS_NULL: return "TALISE_programFir() has a null coef array in *firFilter structure\n";
|
||||
case TAL_ERR_READ_DEFRAMERSTATUS_NULL_PARAM: return "TALISE_readDeframerStatus() has a null *deframerStatus parameter\n";
|
||||
case TAL_ERR_READ_DEFRAMERPRBS_NULL_PARAM: return "TALISE_readDeframerPrbscounters() has a null *prbsErrorCount parameter\n";
|
||||
case TAL_ERR_ARMCMDSTATUS_NULL_PARM: return "TALISE_waitArmCmdStatus() has a null *cmdStatByte parameter\n";
|
||||
case TAL_ERR_READARMCMDSTATUS_NULL_PARM: return "TALISE_readArmCmdStatus() has one or more null pointer parameters\n";
|
||||
case TAL_ERR_LOADBIN_NULL_PARAM: return "TALISE_loadArmFromBinary() has a null *binary parameter\n";
|
||||
case TAL_ERR_GETARMVER_NULL_PARM: return "TALISE_getArmVersion() has a null parameter\n";
|
||||
case TAL_ERR_GETARMVER_V2_NULL_PARM: return "TALISE_getArmVersion_v2() has a null parameter\n";
|
||||
case TAL_ERR_GETARMVER_V2_INVALID_ARM_NOT_LOADED: return "ARM binary must be loaded before calling TALISE_getArmVersion_v2()\n";
|
||||
case TAL_ERR_CHECKPLLLOCK_NULL_PARM: return "Null pointer for paraemter in TALISE_checkPllsLockStatus()\n";
|
||||
case TAL_ERR_READEVENTSTATUS_INV_PARM: return "TALISE_readEventStatus() had invalid parameter\n";
|
||||
case TAL_ERR_RXFRAMER_INV_PCLKFREQ: return "Could not find a valid PCLK divider setting when setting up the Talise framers\n";
|
||||
case TAL_ERR_RXFRAMER_INV_OUTPUT_RATE: return "Output rate was 0 during framer configuration.\n";
|
||||
case TAL_ERR_BBIC_INV_CHN: return "Invalid channel parameter passed to TALISE_enableRxTx().\n";
|
||||
case TAL_ERR_INV_GP_INT_MASK_PARM: return "Invalid general purpose interrupt mask parameter passed to TALISE_setGpIntMask().\n";
|
||||
case TAL_ERR_INV_GP_INT_MASK_NULL_PARM: return "TALISE_getGpIntMask() has a null *gpIntMask parameter.\n";
|
||||
case TAL_ERR_GP_INT_STATUS_NULL_PARAM: return "TALISE_getGpIntStatus() has a null *gpIntStatus parameter\n";
|
||||
case TAL_ERR_INV_DAC_SAMP_XBAR_CHANNEL_SEL: return "Invalid channel selection for TALISE_setupDacSampleXbar()\n";
|
||||
case TAL_ERR_INV_ADC_SAMP_XBAR_FRAMER_SEL: return "Invalid framer selection for TALISE_setupAdcSampleXbar()\n";
|
||||
case TAL_ERR_INV_ADC_SAMP_XBAR_SELECT_PARAM: return "talCheckAdcSampleXbarSelectEnum(): Invalid ENUM for the ADC sample crossbar select\n";
|
||||
case TAL_ERR_INV_DAC_SAMP_XBAR_SELECT_PARAM: return "talCheckDacSampleXbarSelectEnum(): Invalid ENUM for the DAC sample crossbar select\n";
|
||||
case TAL_ERR_GETRFPLL_INV_PLLNAME: return "Invalid PLL selection for TALISE_getRfPllFrequency()\n";
|
||||
case TAL_ERR_GET_PLLFREQ_INV_REFCLKDIV: return "Invalid REFCLK divider for TALISE_getRfPllFrequency()\n";
|
||||
case TAL_ERR_GET_PLLFREQ_INV_HSDIV: return "Invalid HSDIV for TALISE_getRfPllFrequency()\n";
|
||||
case TAL_ERR_GETRFPLL_NULLPARAM: return "rfPllLoFrequency_Hz function parameter pointer is NULL in TALISE_getRfPllFrequency()\n";
|
||||
case TAL_ERR_FRAMER_A_AND_B_INV_M_PARM: return "M parameter cannot equal 4 when deframer A and B are selected\n";
|
||||
case TAL_ERR_INIT_CALS_COMPLETED_NULL_PTR: return "calsSincePowerUp parameter is null pointer in TALISE_getInitCalStatus()\n";
|
||||
case TAL_ERR_CHKINITCALS_NULL_PTR: return "areCalsRunning parameter is NULL pointer in TALISE_checkInitCalComplete()\n";
|
||||
case TAL_ERR_INIT_CALS_LASTRUN_NULL_PTR: return "calsLastRun parameter is null pointer in TALISE_getInitCalStatus()\n";
|
||||
case TAL_ERR_INIT_CALS_MIN_NULL_PTR: return "calsMinimum parameter is a null pointer in TALISE_getInitCalStatus()\n";
|
||||
case TAL_ERR_INIT_ERR_CAL_NULL_PTR: return "initErrCal parameter is a null pointer in TALISE_getInitCalStatus()\n";
|
||||
case TAL_ERR_INIT_ERR_CODE_NULL_PTR: return "initErrCode parameter is a null pointer in TALISE_getInitCalStatus()\n";
|
||||
case TAL_ERR_READARMCFG_ARMERRFLAG: return "ARM read error returned for TALISE_readArmConfig()\n";
|
||||
case TAL_ERR_GETRXGAIN_INV_RXPROFILE: return "Invalid Rx Profile for TALISE_getRxGain()\n";
|
||||
case TAL_ERR_GETRXGAIN_INV_CHANNEL: return "Invalid Rx channel for TALISE_getRxGain()\n";
|
||||
case TAL_ERR_GETRXGAIN_GAIN_RANGE_EXCEEDED: return "gain index exceeded expected maximum or minimum value for TALISE_getRxGain(). Please check if Receive Path is enabled\n";
|
||||
case TAL_ERR_GETOBSRXGAIN_GAIN_RANGE_EXCEEDED: return "Gain index exceeded expected max or min value for TALISE_getObsRxGain()\n";
|
||||
case TAL_ERR_SETUPDUALBANDRXAGC_GAIN_RANGE_MISMATCH: return "Upper gain index lessthan or equalto lower gain index TALISE_setupDualBandRxAgc()\n";
|
||||
case TAL_ERR_SETUPDUALBANDRXAGC_GAIN_OUT_OF_RANGE: return "Gain index lessthan minimum index or greaterthan maximum gain index TALISE_setupDualBandRxAgc()\n";
|
||||
case TAL_ERR_GETOBSRXGAIN_INV_ORXPROFILE: return "Attempted to read ObsRx gain index when the ORx profile is not valid\n";
|
||||
case TAL_ERR_GETOBSRXGAIN_INV_CHANNEL: return "Invalid ObsRx channel selected in TALISE_getObsRxGain()\n";
|
||||
case TAL_ERR_VERIFYBIN_CHECKSUM_TIMEOUT: return "Timeout occurred waiting for ARM to calculate run time checksum to verify ARM loaded correctly\n";
|
||||
case TAL_ERR_SETCLKPLL_INV_TXATTENDIV: return "During initialization, a valid txAtten or AGC clock divider setting could not be realized with current CLKPLL settings\n";
|
||||
case TAL_ERR_VERRXPFILE_INV_IQRATE: return "Rx Profile IQRate is out of range\n";
|
||||
case TAL_ERR_VERRXPFILE_INV_RFBW: return "Rx Profile RF bandwidth is out of range\n";
|
||||
case TAL_ERR_VERRXPFILE_INV_RHB1: return "Rx Profile halfband 1 FIR filter decimation out of range (1,2)\n";
|
||||
case TAL_ERR_VERRXPFILE_INV_DEC5: return "Rx Profile Dec5 FIR filter decimation out of range\n";
|
||||
case TAL_ERR_VERRXPFILE_INV_FIR: return "Rx Profile programmable FIR decimation out of range (1,2,4)\n";
|
||||
case TAL_ERR_VERRXPFILE_INV_COEF: return "Rx Profile PFIR coefficient array is NULL and filter is not bypassed\n";
|
||||
case TAL_ERR_VERRXPFILE_INV_DDC: return "Rx Profile DDC mode is invalid\n";
|
||||
case TAL_ERR_VERORXPFILE_INV_IQRATE: return "ORx Profile IQRate is out of range\n";
|
||||
case TAL_ERR_VERORXPFILE_INV_RFBW: return "ORx Profile RF bandwidth is out of range\n";
|
||||
case TAL_ERR_VERORXPFILE_INV_RHB1: return "ORx Profile halfband 1 FIR filter decimation is out of range (1,2)\n";
|
||||
case TAL_ERR_VERORXPFILE_INV_DEC5: return "ORx Profile Dec5 FIR filter decimation is out of range\n";
|
||||
case TAL_ERR_VERORXPFILE_INV_FIR: return "ORx Profile programmable FIR filter decimation is out of range (1,2,4)\n";
|
||||
case TAL_ERR_VERORXPFILE_INV_COEF: return "ORx Profile PFIR coefficient array is NULL and filter is not bypassed\n";
|
||||
case TAL_ERR_VERORXPFILE_INV_DDC: return "ORx Profile DDC mode is invalid\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_DISONPLLUNLOCK: return "TALISE_initialize(): Invalid option for disTxDataIfPllUnlock\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_IQRATE: return "Tx Profile IQRate is out of range\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_RFBW: return "Tx Profile RF bandwidth is out of range\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_THB1: return "Tx Profile halfband 1 FIR filter interpolation is out of range (1,2)\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_THB2: return "Tx Profile halfband 2 FIR filter interpolation is out of range (1,2)\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_THB3: return "Tx Profile halfband 3 FIR filter interpolation is out of range (1,2)\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_INT5: return "Tx Profile Interpolate by 5 FIR filter interpolation is out of range (1,2)\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_HBMUTEX: return "Tx Profile Interpolate by 5 FIR filter should be mutually exclusive to halfband 1,2,3 filters\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_FIRIPL: return "Tx Profile programmable FIR filter interpolation is out of range(1,2,4)\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_COEF: return "Tx Profile PFIR coef array is NULL and filter is not disabled\n";
|
||||
case TAL_ERR_VERTXPFILE_INV_DACDIV: return "Tx Profile DAC divider is out of range\n";
|
||||
case TAL_ERR_VERPFILE_INV_RFPLLMCSMODE: return "Talise init->clocks.rfPllPhaseSyncMode structure member has invalid option for RFPLL phase sync mode\n";
|
||||
case TAL_ERR_VERPFILE_TXHSCLK: return "Tx Profile IQrate and filter settings are not possible with current CLKPLL frequency\n";
|
||||
case TAL_ERR_VERPFILE_RXHSCLK: return "Rx Profile IQrate and filter settings are not possible with current CLKPLL frequency\n";
|
||||
case TAL_ERR_VERPFILE_ORXHSCLK: return "Orx Profile IQrate and filter settings are not possible with current CLKPLL frequency\n";
|
||||
case TAL_ERR_SETSPI_INV_CMOS_DRV_STR: return "SPI profile invalid CMPS pad drive strength\n";
|
||||
case TAL_ERR_SETTXTOORXMAP_INV_ORX1_MAP: return "Invalid Tx channel for oRx1Map function parameter in TALISE_setTxToOrxMapping()\n";
|
||||
case TAL_ERR_SETTXTOORXMAP_INV_ORX2_MAP: return "Invalid Tx channel for oRx2Map function parameter in TALISE_setTxToOrxMapping()\n";
|
||||
case TAL_ERR_GETRXTXENABLE_NULLPARAM: return "TALISE_getRxTxEnable function has NULL pointers in the function parameters\n";
|
||||
case TAL_ERR_SETRXTXENABLE_INVCHANNEL: return "TALISE_setRxTxEnable can not enable a Rx, Tx, ORx channel that was not initialized with the TALISE_initialize() function\n";
|
||||
case TAL_ERR_GETTXATTEN_NULL_PARM: return "TALISE_getTxAttenuation txAttenuation_mdB pointer has not been initialized\n";
|
||||
case TAL_ERR_GETTXATTEN_INV_TXCHANNEL: return "TALISE_getTxAttenuation txChannel is an invalid channel selection\n";
|
||||
case TAL_ERR_INV_RADIO_CTL_MASK_PARM: return "TALISE_setRadioCtlPinMode mask parameter contains invalid bit settings\n";
|
||||
case TAL_ERR_GETTEMPERATURE_NULLPARAM: return "temperature function parameter is a NULL pointer in TALISE_getTemperature()\n";
|
||||
case TAL_ERR_GETPINMODE_NULLPARAM: return "TALISE_getRadioCtlPinMode function parameters are null pointers\n";
|
||||
case TAL_ERR_SET_ARMGPIO_NULLPARAM: return "TALISE_setArmGpioPins function parameters are null pointers\n";
|
||||
case TAL_ERR_ARMCMDSTATUS_ARMERROR: return "TALISE_waitArmCmdStatus() failed due to thrown ARM error. Is device in correct state for calling command?\n";
|
||||
case TAL_ERR_WAITARMCMDSTATUS_INV_OPCODE: return "TALISE_waitArmCmdStatus() failed due invalid Opcode\n";
|
||||
case TAL_ERR_WAITARMCMDSTATUS_TIMEOUT: return "TALISE_waitArmCmdStatus() failed due to thrown ARM error. ARM time out \n";
|
||||
case TAL_ERR_GETTXLOLSTATUS_NULL_PARAM: return "TALISE_getTxLolStatus(): txLolStatus is a null pointer\n";
|
||||
case TAL_ERR_GETTXLOLSTATUS_INV_CHANNEL_PARM: return "TALISE_getTxLolStatus(): Invalid channel - TAL_TX1 or TAL_TX2 expected\n";
|
||||
case TAL_ERR_GETTXQECSTATUS_NULL_PARAM: return "TALISE_getTxQecStatus(): txQecStatus is a null pointer\n";
|
||||
case TAL_ERR_GETTXQECSTATUS_INV_CHANNEL_PARM: return "TALISE_getTxQecStatus(): Invalid channel - TAL_TX1 or TAL_TX2 expected\n";
|
||||
case TAL_ERR_GETRXQECSTATUS_NULL_PARAM: return "TALISE_getRxQecStatus(): rxQecStatus is a null pointer\n";
|
||||
case TAL_ERR_GETRXQECSTATUS_INV_CHANNEL_PARM: return "TALISE_getRxQecStatus(): Invalid channel - TAL_RX1 or TAL_RX2 expected\n";
|
||||
case TAL_ERR_GETORXQECSTATUS_NULL_PARAM: return "TALISE_getOrxQecStatus(): orxQecStatus is a null pointer\n";
|
||||
case TAL_ERR_GETORXQECSTATUS_INV_CHANNEL_PARM: return "TALISE_getOrxQecStatus(): Invalid channel - TAL_ORX1 or TAL_ORX2 expected\n";
|
||||
case TAL_ERR_GETRXHD2STATUS_NULL_PARAM: return "TALISE_getRxHd2Status(): rxHd2Status is a null pointer\n";
|
||||
case TAL_ERR_GETRXHD2STATUS_INV_CHANNEL_PARM: return "TALISE_getRxHd2Status(): Invalid channel - TAL_RX1 or TAL_RX2 expected\n";
|
||||
case TAL_ERR_VERIFYSPI_READ_LOW_ADDR_ERROR: return "TALISE_verifySpiReadWrite(): Cannot read from a low SPI address\n";
|
||||
case TAL_ERR_VERIFYSPI_WRITE_LOW_ADDR_ERROR: return "TALISE_verifySpiReadWrite(): Cannot write to a low SPI address\n";
|
||||
case TAL_ERR_VERIFYSPI_READ_HIGH_ADDR_ERROR: return "TALISE_verifySpiReadWrite(): Cannot read from a high SPI address\n";
|
||||
case TAL_ERR_VERIFYSPI_WRITE_HIGH_ADDR_ERROR: return "TALISE_verifySpiReadWrite(): Cannot write to a high SPI address\n";
|
||||
case TAL_ERR_GETAPIVERSION_NULLPARAM: return "TALISE_getApiVersion(): Null parameter passed to function\n";
|
||||
case TAL_ERR_GETENABLED_TRACK_CALS_NULL_PTR: return "Null parameter passed to TALISE_getEnabledTrackingCals()\n";
|
||||
case TAL_ERR_INV_DAC_FULLSCALE_PARM: return "TALISE_setDacFullScale() Invalid enumeration for dacFullScale\n";
|
||||
case TAL_ERR_DAC_FULLSCALE_INVARMSTATE: return "TALISE_setDacFullScale() can only be called before Talise ARM is loaded\n";
|
||||
case TAL_ERR_RESET_TXLOL_INV_CHANNEL_PARM: return "TALISE_resetExtTxLolChannel() Invalid channel specified\n";
|
||||
case TAL_ERR_RESET_TXLOL_ARMSTATE_ERROR: return "TALISE_resetExtTxLolChannel() InitCals have not been run. ARM must be in IDLE (RadioOff) or RadioOn state\n";
|
||||
case TAL_ERR_SET_SPI2_ENABLE_INVALID_TX_ATTEN_SEL: return "TALISE_setSpi2Enable(): Invalid Tx atten enumeration\n";
|
||||
case TAL_ERR_SET_SPI2_ENABLE_GPIO_IN_USE: return "TALISE_setSpi2Enable(): GPIO already used by another function\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_NULL_PARAM: return "TALISE_setRxDataFormat() was passed a NULL pointer for the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_FORMATSELECT_INVPARAM: return "TALISE_setRxDataFormat() Parameter formatSelect is invalid\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_TEMPCOMP_INVPARAM: return "TALISE_setRxDataFormat() Parameter tempCompensation is invalid (Currently unsupported)\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_ROUNDMODE_INVPARAM: return "TALISE_setRxDataFormat() fpRoundMode out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_FPDATAFRMT_INVPARAM: return "TALISE_setRxDataFormat() fpDataFormat out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_FPENCNAN_INVPARAM: return "TALISE_setRxDataFormat() fpEncodeNan out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_FPEXPBITS_INVPARAM: return "TALISE_setRxDataFormat() fpNumExpBits out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_FPHIDELEADINGONE_INVPARAM: return "TALISE_setRxDataFormat() fpHideLeadingOne out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_FPRX1ATTEN_INVPARAM: return "TALISE_setRxDataFormat() fpRx1Atten out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_FPRX2ATTEN_INVPARAM: return "TALISE_setRxDataFormat() fpRx2Atten out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_INTEMBEDDEDBITS_INVPARAM: return "TALISE_setRxDataFormat() intEmbeddedBits out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_INTSAMPLERESOLUTION_INVPARAM: return "TALISE_setRxDataFormat() intSampleResolution out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_PINSTEPSIZE_INVPARAM: return "TALISE_setRxDataFormat() pinStepSize out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_RX1GPIOSELECT_INVPARAM: return "TALISE_setRxDataFormat() rx1GpioSelect out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_RX2GPIOSELECT_INVPARAM: return "TALISE_setRxDataFormat() rx2GpioSelect out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_RXCHAN_DISABLED: return "TALISE_setRxDataFormat() Can not set Rx data format, no Rx channel was enabled during initialization.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_EXTERNALLNAGAIN_INVPARAM: return "TALISE_setRxDataFormat() externalLnaGain out of range in the configuration structure.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_RX1GPIO_INUSE: return "TALISE_setRxDataFormat() Rx1 requested GPIOs already inuse.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_RX2GPIO_INUSE: return "TALISE_setRxDataFormat() Rx2 requested GPIOs already inuse.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_DATARES_INVPARAM: return "TALISE_setRxDataFormat() Jesd204 NP is less than the select data resolution size.\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_EXTSLICER_RX1GPIO_INVPARAM: return "TALISE_setRxDataFormat(): can not set rx1GpioSelect to disabled in external slicer mode\n";
|
||||
case TAL_ERR_SET_RXDATAFRMT_EXTSLICER_RX2GPIO_INVPARAM: return "TALISE_setRxDataFormat(): can not set rx2GpioSelect to disabled in external slicer mode\n";
|
||||
case TAL_ERR_GET_SLICERPOS_NULL_PARAM: return "TALISE_getSlicerPosition() was passed a NULL pointer for one of the function parameters.\n";
|
||||
case TAL_ERR_GET_DATAFORMAT_NULL_PARAM: return "TALISE_getRxDataFormat() was passed a NULL pointer for the rxDataFormat function parameter.\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_INV_RX1_INC_PIN: return "setRxGainCtrlPin(): Invalid GPIO pin for RX1 Increment gain\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_INV_RX1_DEC_PIN: return "setRxGainCtrlPin(): Invalid GPIO pin for RX1 Decrement gain\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_INV_RX2_INC_PIN: return "setRxGainCtrlPin(): Invalid GPIO pin for RX2 Increment gain\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_INV_RX2_DEC_PIN: return "setRxGainCtrlPin(): Invalid GPIO pin for RX2 Decrement gain\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_INV_CHANNEL: return "setRxGainCtrlPin(): Invalid Channel (only TAL_RX1, TAL_RX2 allowed)\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_INV_INC_STEP: return "setRxGainCtrlPin(): Invalid increment gain step (only values 0-7 allowed)\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_INV_DEC_STEP: return "setRxGainCtrlPin(): Invalid decrement gain step (only values 0-7 allowed)\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_RX1_GPIO_IN_USE: return "setRxGainCtrlPin(): GPIO's for configuring RX1 pin control already in use\n";
|
||||
case TAL_ERR_SETRXMGCPINCTRL_RX2_GPIO_IN_USE: return "setRxGainCtrlPin(): GPIO's for configuring RX2 pin control already in use\n";
|
||||
case TAL_ERR_GETRXMGCPINCTRL_INV_CHANNEL: return "getRxGainCtrlPin(): Invalid Channel (only TAL_RX1, TAL_RX2 allowed)\n";
|
||||
case TAL_ERR_GETRXMGCPINCTRL_NULL_PARAM: return "getRxGainCtrlPin(): NULL pointer passed to function\n";
|
||||
case TAL_ERR_SETRFPLL_LOOPFILTER_INV_LOOPBANDWIDTH: return "TALISE_setPllLoopFilter(): Invalid Loop bandwidth (Valid range between 50 and 750 kHz).\n";
|
||||
case TAL_ERR_SETRFPLL_LOOPFILTER_INV_STABILITY: return "TALISE_setPllLoopFilter(): Invalid loop stability (Valid range between 3 and 15).\n";
|
||||
case TAL_ERR_SETRFPLL_LOOPFILTER_INV_PLLSEL: return "TALISE_setPllLoopFilter(): Invalid pllName parameter\n";
|
||||
case TAL_ERR_GETRFPLL_LOOPFILTER_NULLPARAM: return "TALISE_getPllLoopFilter(): NULL pointer passed to function\n";
|
||||
case TAL_ERR_GETRFPLL_LOOPFILTER_INV_PLLSEL: return "TALISE_getPllLoopFilter(): Invalid pllName parameter\n";
|
||||
case TAL_ERR_GETDEVICEREV_NULLPARAM: return "TALISE_getDeviceRev(): Null revision parameter passed to function\n";
|
||||
case TAL_ERR_GETPRODUCTID_NULLPARAM: return "TALISE_getProductId(): Null productId parameter passed to function\n";
|
||||
case TAL_ERR_ENABLETXNCO_INV_PROFILE: return "TALISE_enableTxNco(): Tx Profile has not been enabled \n";
|
||||
case TAL_ERR_ENABLETXNCO_NULL_PARM: return "TALISE_enableTxNco(): Null txNcoTestToneCfg parameter passed to function\n";
|
||||
case TAL_ERR_ENABLETXNCO_INV_TX1_FREQ: return "TALISE_enableTxNco(): Tx1 frequency is out of the range (valid range is -txInputRate_kHz/2 to +txInputRate_kHz/2)\n";
|
||||
case TAL_ERR_ENABLETXNCO_INV_TX2_FREQ: return "TALISE_enableTxNco(): Tx2 frequency is out of the range (valid range is -txInputRate_kHz/2 to +txInputRate_kHz/2)\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_NULL_PARAM: return "TALISE_setTxAttenCtrlPin(): NULL pointer passed to function\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_TX1_GPIO_IN_USE: return "TALISE_setTxAttenCtrlPin(): GPIO's for configuring TX1 pin control already in use\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_TX2_GPIO_IN_USE: return "TALISE_setTxAttenCtrlPin(): GPIO's for configuring TX2 pin control already in use\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_INV_PARM: return "TALISE_setTxAttenCtrlPin(): Invalid attenuation step size (only values 0-31 allowed)\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_INV_TX1_INC_PIN: return "TALISE_setTxAttenCtrlPin(): Invalid GPIO pin for TX1 Increment attenuation\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_INV_TX1_DEC_PIN: return "TALISE_setTxAttenCtrlPin(): Invalid GPIO pin for TX1 Decrement attenuation\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_INV_TX2_INC_PIN: return "TALISE_setTxAttenCtrlPin(): Invalid GPIO pin for TX2 Increment attenuation\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_INV_TX2_DEC_PIN: return "TALISE_setTxAttenCtrlPin(): Invalid GPIO pin for TX2 Decrement attenuation\n";
|
||||
case TAL_ERR_SETTXATTENCTRLPIN_INV_CHANNEL: return "TALISE_setTxAttenCtrlPin(): Invalid Channel (only TAL_TX1, TAL_TX2 allowed)\n";
|
||||
case TAL_ERR_GETTXATTENCTRLPIN_INV_CHANNEL: return "TALISE_getTxAttenCtrlPin(): Invalid Channel (only TAL_TX1, TAL_TX2 allowed)\n";
|
||||
case TAL_ERR_GETTXATTENCTRLPIN_NULL_PARAM: return "TALISE_getTxAttenCtrlPin(): NULL pointer passed to function\n";
|
||||
case TAL_ERR_SETHD2CFG_NULL_PARAM: return "TALISE_setRxHd2Config: NULL pointer passed to function\n";
|
||||
case TAL_ERR_SETHD2CFG_ARMSTATE_ERROR: return "TALISE_setRxHd2Config: Talise ARM can not be in radioOn state when the function is called.\n";
|
||||
case TAL_ERR_GETHD2CFG_NULL_PARAM: return "TALISE_getRxHd2Config: NULL pointer passed to function\n";
|
||||
case TAL_ERR_GETHD2CFG_ARMSTATE_ERROR: return "TALISE_getRxHd2Config: Talise ARM can not be in radioOn state when the function is called.\n";
|
||||
case TAL_ERR_INITIALIZE_DDC_INV_TOTAL_M_2OR4: return "talInitializeDdc(): For Dualband single Rx mode, M value should be 2 or 4\n";
|
||||
case TAL_ERR_INITIALIZE_DDC_INV_TOTAL_M_4OR8: return "talInitializeDdc(): For Dualband dual Rx mode, M value should be 4 or 8\n";
|
||||
case TAL_ERR_INITIALIZE_DDC_NULL_PARAM: return "talInitializeDdc(): Has a null *init parameter\n";
|
||||
case TAL_ERR_INITIALIZE_DDC_INV_RXDDCMODE: return "talInitializeDdc(): Unsupported rxDdcMode in init structure\n";
|
||||
case TAL_ERR_RXNCOFTW_INVNCO: return "talSetRxNcoFtw(): Invalid Rx NCO channel\n";
|
||||
case TAL_ERR_INITIALIZE_DDC_INV_DEC_AT_PFIR: return "talInitializeDdc(): Invalid total decimation at output of PFIR in Dualband mode";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_INV_CENTER_FREQ: return "talSetDualBandSettings(): Center frequency of input lower band is greater than input upper band\n";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_INV_BAND_SEP: return "talSetDualBandSettings(): Band should be separated by atleast 10Mhz to be able to split them\n";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_INV_IN_UPPER_FREQ: return "talSetDualBandSettings(): Upper end of upper band input is greater than +PfirFs/2\n";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_INV_IN_LOWER_FREQ: return "talSetDualBandSettings(): Lower end of lower band input is less than -PfirFs/2\n";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_INV_OUT_UPPER_FREQ: return "talSetDualBandSettings(): Upper band output is not within -OutFs/2 and +OutFs/2\n";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_INV_OUT_LOWER_FREQ: return "talSetDualBandSettings(): Lower band output is not within -OutFs/2 and +OutFs/2\n";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_OUT_OVERLAP: return "talSetDualBandSettings(): Output upper and lower bands are overlapping\n";
|
||||
case TAL_ERR_SETDUALBANDSETTINGS_FTW_OVRG: return "talSetDualBandSettings(): Invalid FTW for NCO\n";
|
||||
case TAL_ERR_DUALBAND_LNA_TABLE_INV_PROFILE: return "TALISE_programDualBandLnaGainTable(): RX gain table channel chosen, but the Rx profile is not valid in the device data structure\n";
|
||||
case TAL_ERR_DUALBAND_LNA_TABLE_INV_INDEX: return "TALISE_programDualBandLnaGainTable(): Invalid number of indices. Should be between 1 and 4 (both inclusive)\n ";
|
||||
case TAL_ERR_DUALBAND_LNA_TABLE_INV_CHANNEL: return "TALISE_programDualBandLnaGainTable(): Invalid channel specified\n";
|
||||
case TAL_ERR_DUALBAND_LNA_TABLE_NULL_PARM: return "TALISE_programDualBandLnaGainTable(): Has a null *gainTablePtr parameter\n";
|
||||
case TAL_ERR_SETUPNCOSHIFTER_INV_PFIR_CORNER: return "talSetupNcoShifter(): Specified Rx PassBand crosses a Pfir Filter Corner\n";
|
||||
case TAL_ERR_SETUPNCOSHIFTER_INV_NCO2SHIFT: return "talSetupNcoShifter(): NCO2 shifted out of Rx output band\n";
|
||||
case TAL_ERR_SETUPNCOSHIFTER_INV_DDCHB_CORNER: return "talSetupNcoShifter(): Specified input band crosses a RxDDC HalfBand Filter Corner\n";
|
||||
case TAL_ERR_SETUPNCOSHIFTER_FTW_OVRG: return "talSetupNcoShifter(): Invalid FTW for NCO\n";
|
||||
case TAL_ERR_SETUPDUALBANDRX1AGC_GPIO3P3_IN_USE: return "TALISE_setupDualBandRxAgc(): GPIO3.3 [3:0] are already in use by another function\n";
|
||||
case TAL_ERR_SETUPDUALBANDRX2AGC_GPIO3P3_IN_USE: return "TALISE_setupDualBandRxAgc(): GPIO3.3 [7:4] are already in use by another function\n";
|
||||
case TAL_ERR_SETUPDUALBANDRXAGC_INV_CHANNEL: return "TALISE_setupDualBandRxAgc(): Invalid channel (only TAL_RX1, TAL_RX2 or TAL_RX1RX2 are allowed)\n";
|
||||
case TAL_ERR_SETUPDUALBANDRXAGC_NULL_PARAM: return "TALISE_setupDualBandRxAgc(): Null rxAgcCtrlDualBand parameter passed to function\n";
|
||||
case TAL_ERR_SETUPDUALBANDRXAGC_INV_PWRMARGIN: return "TALISE_setupDualBandRxAgc(): Invalid agcDualbandPwrMargin range (should be between 0 and 31)\n";
|
||||
case TAL_ERR_SETUPDUALBANDRXAGC_INV_DECPWR: return "TALISE_setupDualBandRxAgc(): Invalid decPowerDdcMeasurementDuration range (should be between 0 and 31)";
|
||||
case TAL_ERR_GETDUALBANDLNA_INV_CHANNEL: return "TALISE_getDualBandLnaControls(): Invalid channel (Only TAL_RX1 or TAL_RX2 are allowed\n";
|
||||
case TAL_ERR_GETDUALBANDLNA_NULL_PARAM: return "TALISE_getDualBandLnaControls(): Null rxDualBandLnaControls parameter passed to function\n";
|
||||
case TAL_ERR_INV_DEFA_SLEWRATE: return "init->jesd204Settings.deframerA.syncbOutCmosSlewRate invalid (valid: 0-3)\n";
|
||||
case TAL_ERR_INV_DEFB_SLEWRATE: return "init->jesd204Settings.deframerB.syncbOutCmosSlewRate invalid (valid: 0-3)\n";
|
||||
case TAL_ERR_GETTXSAMPLEPWR_NULL_PARAM: return "TALISE_getTxSamplePower() has null parameter: channelPower\n";
|
||||
case TAL_ERR_GETTXSAMPLEPWR_INV_TXREADCHAN: return "TALISE_TxSamplePower(): Invalid txChannel parameter (Select Tx1 or Tx2)\n";
|
||||
case TAL_ERR_SETPAPRO_NULL_PARAM: return "TALISE_setPaProtectionCfg() has Null parameter: txPaProtectCfg\n";
|
||||
case TAL_ERR_SETPAPRO_INV_AVGDURATION: return "TALISE_setPaProtectionCfg(): Invalid avgDuration (valid 0-14)\n";
|
||||
case TAL_ERR_SETPAPROT_INV_PEAKCNT: return "TALISE_setPaProtectionCfg(): Invalid peakCount (valid Si Rev 0xB1: 0-30, Si Rev 0xC0: 0-31)\n";
|
||||
case TAL_ERR_SETPAPROT_INV_TXATTENSTEP: return "TALISE_setPaProtectionCfg(): Invalid txAttenStep (valid 0-127)\n";
|
||||
case TAL_ERR_SETPAPROT_INV_TX1THRESH: return "TALISE_setPaProtectionCfg(): Invalid tx1PowerThreashold\n";
|
||||
case TAL_ERR_SETPAPROT_INV_TX2THRESH: return "TALISE_setPaProtectionCfg(): Invalid tx2PowerThreashold\n";
|
||||
case TAL_ERR_SETPAPROT_INV_TX1PEAKTHRESH: return "TALISE_setPaProtectionCfg(): Invalid tx1PeakThreashold\n";
|
||||
case TAL_ERR_SETPAPROT_INV_TX2PEAKTHRESH: return "TALISE_setPaProtectionCfg(): Invalid tx2PeakThreashold\n";
|
||||
case TAL_ERR_GETPAERRFLAGS_NULL_PARAM: return "TALISE_getPaProtectErrorFlags(): NULL function parameter: errorFlags\n";
|
||||
case TAL_ERR_GETPAPRO_NULL_PARAM: return "TALISE_getPaProtectionCfg: NULL function parameter: txPaProtectCfg\n";
|
||||
case TAL_ERR_SETRFPLL_INITCALS_INPROGRESS: return "TALISE_setRfPllFrequency(): Can not set RF PLL while InitCals are running\n";
|
||||
case TAL_ERR_DEFSTATUS_INV_COUNTERERRTHRESHOLD_PARAM: return "TALISE_enableDfrmErrCounter(): Selected error counter threshold out of range\n";
|
||||
case TAL_ERR_RFPLLFREQ_TX_OUT_OF_RANGE : return "TALISE_setRfPllFrequency() : Invalid rfpllLoFreq, rfPllLoFreq - TxProfileRFBW/2 must be > 0 (DC)\n";
|
||||
case TAL_ERR_RFPLLFREQ_RX_OUT_OF_RANGE : return "TALISE_setRfPllFrequency() : Invalid rfpllLoFreq, rfPllLoFreq - RxProfileRFBW/2 must be > 0 (DC)\n";
|
||||
case TAL_ERR_RFPLLFREQ_ORX_OUT_OF_RANGE : return "TALISE_setRfPllFrequency() : Invalid rfpllLoFreq, rfPllLoFreq - ORxProfileRFBW/2 must be > 0 (DC)\n";
|
||||
case TAL_ERR_INV_SIREV: return "Talise API only supports Talise B1 silicon and greater. Older Si detected.\n";
|
||||
case TAL_ERR_REGISTER_ERRORMSG_C0: return "talRegisterErrorMessage() failed for Talise.\n";
|
||||
case TAL_ERR_SETEXTWORDCTRLGPIO_INV_CHANNEL : return "TALISE_setGainTableExtCtrlPins() : Invalid channel (Only TAL_RX1 or TAL_RX2 are allowed\n";
|
||||
case TAL_ERR_SETEXTWORDCTRLGPIO_UNINITIALIZED_RX1 : return "TALISE_setGainTableExtCtrlPins() : Please verify that channel Rx1 is enabled and initialized\n";
|
||||
case TAL_ERR_SETEXTWORDCTRLGPIO_UNINITIALIZED_RX2 : return "TALISE_setGainTableExtCtrlPins() : Please verify that channel Rx2 is enabled and initialized\n";
|
||||
case TAL_ERR_SETEXTWORDCTRLGPIO_GPIO_IN_USE_RX1 : return "TALISE_setGainTableExtCtrlPins() : GPIO Pins Requested for Rx1 Ext Ctrl Word Output already in use\n";
|
||||
case TAL_ERR_SETEXTWORDCTRLGPIO_GPIO_IN_USE_RX2 : return "TALISE_setGainTableExtCtrlPins() : GPIO Pins Requested for Rx2 Ext Ctrl Word Output already in use\n";
|
||||
case TAL_ERR_READEVENTSTATUS_NULL_PARM: return "Null pointer for parameter in TALISE_readEventStatus()\n";
|
||||
case TAL_ERR_FRAMERSYSREFTOGGLE_INV_FRAMERSEL_PARAM: return "TALISE_framerSyncbToggle(): Invalid framer select parameter\n";
|
||||
case TAL_ERR_SETORXLOSRC_INVALIDPARAM: return "TALISE_setOrxLoSource: Invalid orxLoSource input parameter\n";
|
||||
case TAL_ERR_GETORXLOSRC_NULLPARAM: return "TALISE_getOrxLoSource: Function input parameters were null\n";
|
||||
case TAL_ERR_SETORXLOSRC_TIMEDOUT_ARMMAILBOXBUSY: return "TALISE_setOrxLoSource: failed due to timeout waiting on ARM mailbox to become idle\n";
|
||||
case TAL_ERR_SETORXLOCFG_NULL_PARAM: return "TALISE_setOrxLoCfg: orxLoCfg parameter is null\n";
|
||||
case TAL_ERR_SETORXLOCFG_INVALIDPARAM: return "TALISE_setOrxLoCfg: Invalid gpioSelect parameter\n";
|
||||
case TAL_ERR_SETORXLOCFG_INVALID_ARMSTATE: return "TALISE_setOrxLoCfg: ARM must be in radio Off state\n";
|
||||
case TAL_ERR_SETORXLOCFG_GPIOUSED: return "TALISE_setOrxLoCfg: GPIO pin is already used\n";
|
||||
case TAL_ERR_GETORXLOCFG_NULL_PARAM: return "TALISE_getOrxLoCfg: orxLoCfg parameter is null\n";
|
||||
case TAL_ERR_GETORXLOCFG_INVALID_ARMSTATE: return "TALISE_getOrxLoCfg: ARM must be in radio Off state\n";
|
||||
case TAL_ERR_SETFHMCONFIG_NULL_PARAM : return "TALISE_setFhmConfig: fhmConfig parameter is null\n";
|
||||
case TAL_ERR_SETFHMCONFIG_INV_FHMGPIOPIN : return "TALISE_setFhmConfig: Invalid fhmGpioPin selected. Valid TAL_GPIO_00 - TAL_GPIO_15 for enabling and TAL_GPIO_INVALID for disabling\n";
|
||||
case TAL_ERR_SETFHMCONFIG_INV_FHMCONFIG_FHM_MIN_FREQ : return "TALISE_setFhmConfig: Invalid FHM range minimum hop frequency. fhmMinFreq - ProfileRFBW/2 must be > 0 (DC)\n";
|
||||
case TAL_ERR_SETFHMCONFIG_INV_FHMCONFIG_FHM_MAX_FREQ : return "TALISE_setFhmConfig: FHM range maximum frequency should be greater than minimum frequency";
|
||||
case TAL_ERR_SETFHMCONFIG_FHMGPIOPIN_IN_USE : return "TALISE_setFhmConfig : GPIO pin requested for Frequency hopping already in use by another feature\n";
|
||||
case TAL_ERR_GETFHMCONFIG_NULL_PARAM : return "TALISE_getFhmConfig : fhmConfig parameter is null\n";
|
||||
case TAL_ERR_SETFHMMODE_NULL_PARAM : return "TALISE_setFhmMode : fhmMode parameter is null\n";
|
||||
case TAL_ERR_SETFHMMODE_INV_FHM_INIT_FREQ : return "TALISE_setFhmMode : Out of range fhmInitFreq requested\n";
|
||||
case TAL_ERR_SETFHMMODE_INV_FHM_TRIGGER_MODE : return "TALISE_setFhmMode : Invalid FHM trigger mode requested. Valid values TAL_FHM_GPIO_MODE, TAL_FHM_NON_GPIO_MODE\n";
|
||||
case TAL_ERR_SETFHMMODE_INV_FHM_EXIT_MODE : return "TALISE_setFhmMode : Invalid FHM exit mode requested. Valid values are TAL_FHM_QUICK_EXIT, TAL_FHM_FULL_EXIT\n";
|
||||
case TAL_ERR_GETFHMMODE_NULL_PARAM : return "TALISE_getFhmMode : fhmMode parameter is null\n";
|
||||
case TAL_ERR_SETFHMHOP_INV_FHM_FREQ : return "TALISE_setFhmHop : nextFhmRfPllFrequency is out of scan range\n";
|
||||
case TAL_ERR_GETFHMSTS_NULL_PARAM : return "TALISE_getFhmStatus : fhmStatus parameter is null\n";
|
||||
case TAL_ERR_SETDCMSHIFT_INV_CH_PARAM: return "TALISE_setDigDcOffsetMShift(): Invalid channel parameter\n";
|
||||
case TAL_ERR_SETDCMSHIFT_INV_MSHIFT_PARAM: return "TALISE_setDigDcOffsetMShift(): Invalid mShift parameter\n";
|
||||
case TAL_ERR_GETDCMSHIFT_INV_CH_PARAM: return "TALISE_getDigDcOffsetMShift(): Invalid channel parameter\n";
|
||||
case TAL_ERR_GETDCMSHIFT_NULL_MSHIFT_PARAM: return "TALISE_getDigDcOffsetMShift(): NULL mShift parameter\n";
|
||||
case TAL_ERR_SETEXTLOOUT_INV_DIV_PARAM: return "TALISE_setExtLoOutCfg(): Invalid extLoOutDivide parameter (use enum)\n";
|
||||
case TAL_ERR_SETEXTLOOUT_LO_IN_ENABLED: return "TALISE_setExtLoOutCfg(): Can not enable Ext LO output because Ext LO input was enabled during init.\n";
|
||||
case TAL_ERR_GETEXTLOOUT_NULL_PARAM: return "TALISE_getExtLoOutCfg(): Null function parameter\n";
|
||||
case TAL_ERR_NUMBER_OF_ERRORS: return "Invalid API error passed, last in error list\n"; /*Use for TestApiErrorStrings */
|
||||
default: return "Invalid API error passed, not in error list\n";
|
||||
}
|
||||
}
|
||||
else if (errSrc == TAL_ERRSRC_TAL_API_GPIO)
|
||||
{
|
||||
return talGetGpioErrorMessage(errSrc, errCode);
|
||||
}
|
||||
else
|
||||
{
|
||||
return "Invalid TALISE error passed, not in error list\n";
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
const char* TALISE_getRegisteredErrorMessage(taliseDevice_t *device, uint32_t errSrc, uint32_t errCode)
|
||||
{
|
||||
#ifndef TALISE_VERBOSE
|
||||
return "";
|
||||
#else
|
||||
/* Get core functionality error message from TALISE_getErrorMessage() */
|
||||
if ((errSrc == TAL_ERRSRC_API) ||
|
||||
(errSrc == TAL_ERRSRC_ADIHAL) ||
|
||||
(errSrc == TAL_ERRSRC_TALARMCMD) ||
|
||||
(errSrc == TAL_ERRSRC_TAL_API_GPIO) ||
|
||||
(errSrc == TAL_ERRSRC_TALAPIARM) ||
|
||||
(errSrc == TAL_ERRSRC_INITCALS))
|
||||
{
|
||||
return TALISE_getErrorMessage(errSrc, errCode);
|
||||
}
|
||||
/* Check for any addon feature error messages */
|
||||
else
|
||||
{
|
||||
return talCallbackErrorMessage(device, errSrc, errCode);
|
||||
|
||||
}
|
||||
|
||||
#endif
|
||||
}
|
||||
|
||||
talRecoveryActions_t talApiErrHandler(taliseDevice_t *device, taliseErrHdls_t errHdl,
|
||||
uint32_t detErr, talRecoveryActions_t retVal, talRecoveryActions_t recAction)
|
||||
{
|
||||
switch (errHdl)
|
||||
{
|
||||
case TAL_ERRHDL_HAL_GPIO: /* Fall through */
|
||||
case TAL_ERRHDL_HAL_WAIT:
|
||||
if (detErr != ADIHAL_OK)
|
||||
{
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getErrorMessage(TAL_ERRSRC_ADIHAL, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_ADIHAL;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
}
|
||||
return retVal;
|
||||
|
||||
case TAL_ERRHDL_HAL_LOG:
|
||||
if (detErr != ADIHAL_OK)
|
||||
{
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_ADIHAL;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
}
|
||||
return retVal;
|
||||
|
||||
case TAL_ERRHDL_HAL_SPI:
|
||||
if (detErr != ADIHAL_OK)
|
||||
{
|
||||
/*Ignore Error from log as lower priority than error being handled*/
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getErrorMessage(TAL_ERRSRC_ADIHAL, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_ADIHAL;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
}
|
||||
return retVal;
|
||||
|
||||
case TAL_ERRHDL_INVALID_PARAM: /* Fall through */
|
||||
case TAL_ERRHDL_API_FAIL:
|
||||
/*Ignore Error from log as lower priority than error being handled*/
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getErrorMessage(TAL_ERRSRC_API, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_API;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
|
||||
case TAL_ERRHDL_APIARM_ERR:
|
||||
/*Ignore Error from log as lower priority than error being handled*/
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getErrorMessage(TAL_ERRSRC_TALAPIARM, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_TALAPIARM;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
|
||||
case TAL_ERRHDL_ARM_CMD_ERR:
|
||||
return talArmCmdErrorHandler(device, errHdl, detErr, retVal, recAction);
|
||||
|
||||
case TAL_ERRHDL_ARM_INITCALS_ERR:
|
||||
/*Ignore Error from log as lower priority than error being handled*/
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getErrorMessage(TAL_ERRSRC_INITCALS, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_INITCALS;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
|
||||
case TAL_ERRHDL_API_GPIO:
|
||||
/*Ignore Error from log as lower priority than error being handled*/
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getErrorMessage(TAL_ERRSRC_TAL_API_GPIO, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_TAL_API_GPIO;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
|
||||
case TAL_ERRHDL_API_C0_PCA:
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getRegisteredErrorMessage(device, TAL_ERRSRC_TAL_API_C0_PCA, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_TAL_API_C0_PCA;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
|
||||
case TAL_ERRHDL_API_C0_PHMFOVR:
|
||||
talWriteToLog(device->devHalInfo, ADIHAL_LOG_ERR, detErr,
|
||||
TALISE_getRegisteredErrorMessage(device, TAL_ERRSRC_TAL_API_C0_PHMFOVR, detErr));
|
||||
device->devStateInfo.errSource = TAL_ERRSRC_TAL_API_C0_PHMFOVR;
|
||||
device->devStateInfo.errCode = detErr;
|
||||
return recAction;
|
||||
|
||||
default:
|
||||
return retVal;
|
||||
}
|
||||
}
|
||||
|
||||
Executable
+119
@@ -0,0 +1,119 @@
|
||||
/**
|
||||
* \file talise_error.h
|
||||
* \brief Contains Talise API error handling function prototypes and data types for talise_error.c
|
||||
* These functions are public to the customer for getting more details on
|
||||
* errors and debugging.
|
||||
*
|
||||
* 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_ERROR_H_
|
||||
#define TALISE_ERROR_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define IF_ERR_RETURN_U32(a) if(a > TALACT_ERR_CHECK_TIMER) { return (uint32_t)a; }
|
||||
#define IF_ERR_RETURN(a) if(a > TALACT_ERR_CHECK_TIMER) { return a; }
|
||||
|
||||
#include "talise_types.h"
|
||||
#include "talise_error_types.h"
|
||||
|
||||
/**
|
||||
* \brief Helper function for return of current Error code
|
||||
*
|
||||
* Returns an error code containing root source of the error and an error code
|
||||
* from that source. The sources are defined by the enumeration taliseErrSources_t
|
||||
* Each source has its own enumerated list of error codes.
|
||||
* HAL layer error codes are defined by adiHalErr_t in adi_hal.h
|
||||
* and API errors are defined by taliseErr_t.
|
||||
*
|
||||
* \param device Pointer to device data structure identifying desired instance of Talise device
|
||||
* \param errSrc Return Source of error at the pointer address
|
||||
* \param errCode Returns Enumerated error code value at the pointer address
|
||||
*
|
||||
* \retval TALACT_NO_ACTION function completed successfully, no action required
|
||||
* \retval TALACT_ERR_CHECK_PARAM if device reference unknown or invalid parameter
|
||||
*/
|
||||
uint32_t TALISE_getErrCode(taliseDevice_t *device, uint32_t *errSrc, uint32_t *errCode);
|
||||
|
||||
/**
|
||||
* \brief Helper function to return a character string based on error code.
|
||||
*
|
||||
* A helper function to return a string message for each error code.
|
||||
* The error source and error code is available from the read only devStateInfo
|
||||
* member of the Talise device reference.
|
||||
*
|
||||
* This debug feature is enabled when the MACRO TALISE_VERBOSE is set to 1 in
|
||||
* talise_user.h configuration file.
|
||||
*
|
||||
* \param errSrc A value representing the source of error.
|
||||
*
|
||||
* \param errCode Error code. There is an enumerated list of
|
||||
* error codes per source.
|
||||
*
|
||||
* \return Returns character string based on errSrc and errCode values
|
||||
*/
|
||||
const char* TALISE_getErrorMessage(uint32_t errSrc, uint32_t errCode);
|
||||
|
||||
/**
|
||||
* \brief Helper function to return a character string based on error code.
|
||||
*
|
||||
* A helper function to return a string message for each error code.
|
||||
* The error source and error code is available from the read only devStateInfo
|
||||
* member of the Talise device reference.
|
||||
*
|
||||
* This debug feature is enabled when the MACRO TALISE_VERBOSE is set to 1 in
|
||||
* talise_user.h configuration file.
|
||||
*
|
||||
* \param device Pointer to device data structure identifying desired instance of Talise device
|
||||
*
|
||||
* \param errSrc A value representing the source of error.
|
||||
*
|
||||
* \param errCode Error code. There is an enumerated list of
|
||||
* error codes per source.
|
||||
*
|
||||
* \return Returns character string based on errSrc and errCode values
|
||||
*/
|
||||
const char* TALISE_getRegisteredErrorMessage(taliseDevice_t *device, uint32_t errSrc, uint32_t errCode);
|
||||
|
||||
/**
|
||||
* \brief Private helper function to register error message callback functions.
|
||||
*
|
||||
* \param device Pointer to device data structure identifying desired instance of Talise device
|
||||
*
|
||||
* \param errSrc A value representing the source of error.
|
||||
*
|
||||
* \param callbackFunction pointer to callback function which processes Error Messages.
|
||||
* const char* (*callbackFunction)(uint32_t errSrc, uint32_t errCode).
|
||||
* The callback function params are (unit32_t errSrc, uint32_t errCode).
|
||||
* The callback function return a (const char *).
|
||||
*
|
||||
* \retval uint32_t 0 - Success ; 1 - Failure
|
||||
*/
|
||||
uint32_t talRegisterErrorMessage(taliseDevice_t *device, uint32_t errSrc, const char* (*callbackFunction)(uint32_t, uint32_t));
|
||||
|
||||
/**
|
||||
* \brief Private Helper function to process detected errors and determine if
|
||||
* a new recovery action should be recommended.
|
||||
*
|
||||
*
|
||||
* \param device Pointer to device data structure identifying desired device instance
|
||||
* \param errHdl Error Handler type
|
||||
* \param detErr Error detected to be processed by handler
|
||||
* \param retVal current Recovery Action,
|
||||
* \param recAction new Recovery Action to be returned should error handler determine an error
|
||||
*
|
||||
* \retval uint32_t Value representing the latest recovery Action following processing of detected error.
|
||||
*/
|
||||
talRecoveryActions_t talApiErrHandler(taliseDevice_t *device, taliseErrHdls_t errHdl, uint32_t detErr, talRecoveryActions_t retVal, talRecoveryActions_t recAction);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_ERROR_H_ */
|
||||
Binary file not shown.
Executable
+573
@@ -0,0 +1,573 @@
|
||||
/**
|
||||
* \file talise_error_types.h
|
||||
* \brief Contains Talise data types for API Error messaging
|
||||
*
|
||||
* 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_ERROR_TYPES_H_
|
||||
#define TALISE_ERROR_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_arm_macros.h"
|
||||
|
||||
/**
|
||||
* \brief Enum of possible sources of error codes.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ERRSRC_API, /*!<API Error Src: Error codes defined by taliseErr_t */
|
||||
TAL_ERRSRC_ADIHAL, /*!<ADI HAL Error Src: Error codes defined by adiHalErr_t*/
|
||||
TAL_ERRSRC_TALARMCMD, /*!< TALISE ARM returned error */
|
||||
TAL_ERRSRC_TAL_API_GPIO, /*!< TALISE GPIO returned error */
|
||||
TAL_ERRSRC_TALAPIARM, /*!< TALISE API returned ARM error */
|
||||
TAL_ERRSRC_INITCALS, /*!< TALISE INITCALS returned error */
|
||||
TAL_ERRSRC_TAL_API_C0_PCA, /*!< Reserved Error source */
|
||||
TAL_ERRSRC_TAL_API_C0_PHMFOVR /*!< Reserved Error source */
|
||||
} taliseErrSources_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of unique error codes from the Talise API functions.
|
||||
* Each error condition in the library shall have its own enum value
|
||||
* to ease debug of errors.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ERR_OK=0,
|
||||
TAL_ERR_INV_NULL_INIT_PARAM,
|
||||
TAL_ERR_WAITFOREVENT_INV_PARM,
|
||||
TAL_ERR_CLKPLL_INV_HSDIV,
|
||||
TAL_ERR_SETCLKPLL_INV_VCOINDEX,
|
||||
TAL_ERR_SETCLKPLL_INV_NDIV,
|
||||
TAL_ERR_SETRFPLL_INV_PLLNAME,
|
||||
TAL_ERR_SETRFPLL_INITCALS_INPROGRESS,
|
||||
TAL_ERR_INV_SCALEDDEVCLK_PARAM,
|
||||
TAL_ERR_SETRFPLL_INV_REFCLK,
|
||||
TAL_ERR_SETORXGAIN_INV_ORXPROFILE,
|
||||
TAL_ERR_SETORXGAIN_INV_CHANNEL,
|
||||
TAL_ERR_SETORXGAIN_INV_ORX1GAIN,
|
||||
TAL_ERR_SETORXGAIN_INV_ORX2GAIN,
|
||||
TAL_ERR_SETTXATTEN_INV_STEPSIZE_PARM,
|
||||
TAL_ERR_SETRX1GAIN_INV_GAIN_PARM,
|
||||
TAL_ERR_SETRX2GAIN_INV_GAIN_PARM,
|
||||
TAL_ERR_SER_INV_M_PARM,
|
||||
TAL_ERR_SER_INV_NP_PARM,
|
||||
TAL_ERR_SER_INV_L_PARM,
|
||||
TAL_ERR_SER_INV_ORX_L_PARM,
|
||||
TAL_ERR_SER_INV_ORX_M_PARM,
|
||||
TAL_ERR_SER_INV_ORX_NP_PARM,
|
||||
TAL_ERR_SER_INV_ORX_LANEEN_PARM,
|
||||
TAL_ERR_SER_INV_LANERATE_PARM,
|
||||
TAL_ERR_SER_INV_ORX_LANERATE_PARM,
|
||||
TAL_ERR_SER_INV_LANEEN_PARM,
|
||||
TAL_ERR_SER_INV_AMP_PARM,
|
||||
TAL_ERR_SER_INV_PREEMP_PARM,
|
||||
TAL_ERR_SER_INV_LANEPN_PARM,
|
||||
TAL_ERR_SER_LANE_CONFLICT_PARM,
|
||||
TAL_ERR_SER_INV_TXSER_DIV_PARM,
|
||||
TAL_ERR_SER_LANE_RATE_CONFLICT_PARM,
|
||||
TAL_ERR_SER_INV_ZIF_TO_RIF_DATA_PARM,
|
||||
TAL_ERR_SER_INV_DUALBAND_DATA_PARM,
|
||||
TAL_ERR_SER_INV_RXFRAMER_SEL,
|
||||
TAL_ERR_SER_INV_ORXFRAMER_SEL,
|
||||
TAL_ERR_SER_LANERATE_ZERO,
|
||||
TAL_ERR_HS_AND_LANE_RATE_NOT_INTEGER_MULT,
|
||||
TAL_ERR_DESES_HS_AND_LANE_RATE_NOT_INTEGER_MULT,
|
||||
TAL_ERR_DESES_INV_LANE_RATE,
|
||||
TAL_ERR_DESES_INV_LANE_RATE_DIV,
|
||||
TAL_ERR_DESER_INV_M_PARM,
|
||||
TAL_ERR_DESER_INV_NP_PARM,
|
||||
TAL_ERR_DESER_INV_L_PARM,
|
||||
TAL_ERR_DESER_INV_LANERATE_PARM,
|
||||
TAL_ERR_DESER_INV_LANEEN_PARM,
|
||||
TAL_ERR_DESER_INV_EQ_PARM,
|
||||
TAL_ERR_DESER_INV_LANEPN_PARM,
|
||||
TAL_ERR_DESER_LANECONFLICT_PARM,
|
||||
TAL_ERR_DESER_M_CONFLICT,
|
||||
TAL_ERR_DESER_INV_DEFAB_M,
|
||||
TAL_ERR_DESER_NP_CONFLICT,
|
||||
TAL_ERR_DESER_INV_DEFRAMERSEL,
|
||||
TAL_ERR_DESER_TXPROFILE_INV,
|
||||
TAL_ERR_FRAMER_INV_M_PARM,
|
||||
TAL_ERR_FRAMER_INV_NP_PARM,
|
||||
TAL_ERR_FRAMER_INV_S_PARM,
|
||||
TAL_ERR_FRAMER_INV_BANKID_PARM,
|
||||
TAL_ERR_FRAMER_INV_LANEID_PARM,
|
||||
TAL_ERR_FRAMER_INV_SYNCBIN_PARM,
|
||||
TAL_ERR_FRAMER_INV_LMFC_OFFSET_PARAM,
|
||||
TAL_ERR_FRAMER_INV_DUALBAND_DATA_PARM,
|
||||
TAL_ERR_DEFRAMER_INV_BANKID,
|
||||
TAL_ERR_ERR_DEFRAMER_INV_LANEID,
|
||||
TAL_ERR_DEFRAMER_INV_LMFC_OFFSET,
|
||||
TAL_ERR_DEFRAMER_INV_DEFSEL,
|
||||
TAL_ERR_DEFRAMER_INV_TXPROFILE,
|
||||
TAL_ERR_DEFRAMER_INV_LANESEN,
|
||||
TAL_ERR_DEFRAMER_INV_L,
|
||||
TAL_ERR_DEFRAMER_INV_M,
|
||||
TAL_ERR_DEFRAMER_INV_NP,
|
||||
TAL_ERR_DEFRAMER_INV_F,
|
||||
TAL_ERR_DEFRAMER_INV_K,
|
||||
TAL_ERR_DEFRAMER_INV_FK,
|
||||
TAL_ERR_DEFRAMER_INV_PCLK,
|
||||
TAL_ERR_DEFRAMER_INV_PCLKDIV,
|
||||
TAL_ERR_RSTDEFRAMER_INV_DEFSEL,
|
||||
TAL_ERR_RSTFRAMER_INV_FRAMERSEL,
|
||||
TAL_ERR_SETDFRMIRQMASK_INV_DEFRAMERSEL_PARAM,
|
||||
TAL_ERR_DEFSTATUS_INV_DEFRAMERSEL_PARAM,
|
||||
TAL_ERR_DEFSTATUS_NULL_DEFRAMERSTATUS_PARAM,
|
||||
TAL_ERR_GETDFRMIRQMASK_NULL_IRQMASK_PARAM,
|
||||
TAL_ERR_GETDFRMIRQMASK_INV_DEFRAMERSELECT_PARAM,
|
||||
TAL_ERR_CLRDFRMIRQ_INV_DEFRAMERSEL_PARAM,
|
||||
TAL_ERR_GETDFRMIRQSRC_INV_DEFRAMERSEL_PARAM,
|
||||
TAL_ERR_GETDFRMIRQSRC_NULL_STATUS_PARAM,
|
||||
TAL_ERR_ENDEFSYSREF_INV_DEFRAMERSEL_PARAM,
|
||||
TAL_ERR_ENFRAMERSYSREF_INV_FRAMERSEL_PARAM,
|
||||
TAL_ERR_FRAMER_INV_TESTDATA_SOURCE_PARAM,
|
||||
TAL_ERR_FRAMER_INV_INJECTPOINT_PARAM,
|
||||
TAL_ERR_FRAMERSTATUS_INV_FRAMERSEL_PARAM,
|
||||
TAL_ERR_FRAMERSTATUS_NULL_FRAMERSTATUS_PARAM,
|
||||
TAL_ERR_EN_DEFRAMER_PRBS_INV_PARAM,
|
||||
TAL_ERR_READDFRMPRBS_INV_DEFSEL_PARAM,
|
||||
TAL_ERR_READDFRMPRBS_NULL_PARAM,
|
||||
TAL_ERR_INITARM_INV_ARMCLK_PARAM,
|
||||
TAL_ERR_LOADHEX_INVALID_CHKSUM,
|
||||
TAL_ERR_LOADBIN_INVALID_BYTECOUNT,
|
||||
TAL_ERR_READARMMEM_INV_ADDR_PARM,
|
||||
TAL_ERR_WRITEARMMEM_INV_ADDR_PARM,
|
||||
TAL_ERR_ARMCMD_INV_OPCODE_PARM,
|
||||
TAL_ERR_ARMCMD_INV_NUMBYTES_PARM,
|
||||
TAL_ERR_ARMCMDSTATUS_INV_OPCODE_PARM,
|
||||
TAL_ERR_JESD204B_ILAS_MISMATCH_NULLPARAM,
|
||||
TAL_ERR_JESD204B_ILAS_MISMATCH_NO_ACTIVE_LINK,
|
||||
TAL_ERR_JESD204B_ILAS_MISMATCH_SYNC_NOT_DETECTED,
|
||||
TAL_ERR_JESD204B_ILAS_MISMATCH_INVALID_DEFRAMER,
|
||||
TAL_ERR_TALFINDDFRMRLANECNTERROR_INV_DEFRAMERSEL_PARAM,
|
||||
TAL_ERR_TALFINDDFRMRLANECNTERROR_NULL_PARAM,
|
||||
TAL_ERR_TALFINDDFRMRLANEERROR_NULL_PARAM,
|
||||
TAL_ERR_RXGAINTABLE_INV_CHANNEL,
|
||||
TAL_ERR_RXGAINTABLE_INV_PROFILE,
|
||||
TAL_ERR_RXGAINTABLE_INV_GAIN_INDEX_RANGE,
|
||||
TAL_ERR_ORXGAINTABLE_INV_CHANNEL,
|
||||
TAL_ERR_ORXGAINTABLE_INV_PROFILE,
|
||||
TAL_ERR_ORXGAINTABLE_INV_GAIN_INDEX_RANGE,
|
||||
TAL_ERR_RXFRAMER_INV_FK_PARAM,
|
||||
TAL_ERR_RXFRAMER_INV_L_PARAM,
|
||||
TAL_ERR_INV_RX_GAIN_MODE_PARM,
|
||||
TAL_ERR_UNSUPPORTED_RX_GAIN_MODE_PARM,
|
||||
TAL_ERR_INV_AGC_RX_STRUCT_INIT,
|
||||
TAL_ERR_INV_AGC_PWR_STRUCT_INIT,
|
||||
TAL_ERR_INV_AGC_PWR_LWR0THRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_LWR1THRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_LWR0PWRGAINSTEP_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_LWR1PWRGAINSTEP_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_MSR_DURATION_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_IP3RANGE_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_UPPWR0THRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_UPPWR1THRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_LOGSHIFT_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_UPPWR0GAINSTEP_PARAM,
|
||||
TAL_ERR_INV_AGC_PWR_UPPWR1GAINSTEP_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_STRUCT_INIT,
|
||||
TAL_ERR_INV_AGC_PKK_HIGHTHRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_LOWGAINMODEHIGHTHRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_LOWGAINHIGHTHRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_LOWGAINTHRSH_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_GAINSTEPATTACK_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_GAINSTEPRECOVERY_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2OVRLD_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2OVRLDDURATION_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2OVRLDTHRSHCNT_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2GAINSTEPRECOVERY_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2GAINSTEP0RECOVERY_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2GAINSTEP1RECOVERY_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2GAINSTEPATTACK_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2OVRLDPWRMODE_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2OVRLDSEL_PARAM,
|
||||
TAL_ERR_INV_AGC_PKK_HB2THRSHCFG_PARAM,
|
||||
TAL_ERR_INV_AGC_RX_APD_HIGH_LOW_THRESH,
|
||||
TAL_ERR_INV_AGC_RX_PEAK_WAIT_TIME_PARM,
|
||||
TAL_ERR_INV_AGC_RX_MIN_MAX_GAIN_PARM,
|
||||
TAL_ERR_INV_AGC_RX_MIN_GAIN_GRT_THAN_MAX_GAIN_PARM,
|
||||
TAL_ERR_INV_AGC_RX_GAIN_UPDATE_TIME_PARM,
|
||||
TAL_ERR_INV_AGC_RX1ATTACKDELAY_PARAM,
|
||||
TAL_ERR_INV_AGC_RX2ATTACKDELAY_PARAM,
|
||||
TAL_ERR_INV_AGC_RX_LOWTHRSHPREVENTGAIN_PARM,
|
||||
TAL_ERR_INV_AGC_RX_CHANGEGAINTHRSHHIGH_PARM,
|
||||
TAL_ERR_INV_AGC_RX_RESETONRXON_PARM,
|
||||
TAL_ERR_INV_AGC_RX_ENSYNCHPULSECAINCNTR_PARM,
|
||||
TAL_ERR_INV_AGC_RX_ENIP3OPTTHRSH_PARM,
|
||||
TAL_ERR_INV_AGC_RX_ENFASTRECOVERYLOOP_PARM,
|
||||
TAL_ERR_INV_AGC_SLOWLOOPDELAY_PARAM,
|
||||
TAL_ERR_INV_MINAGCSLOWLOOPDELAY_PARAM,
|
||||
TAL_ERR_INV_AGC_CLK_DIV_RATIO_PARM,
|
||||
TAL_ERR_INV_AGC_CLK_PARM,
|
||||
TAL_ERR_INV_AGC_CLK_RATIO,
|
||||
TAL_ERR_INV_AGC_RX_GAIN_UNDERRANGE_UPDATE_TIME_PARM,
|
||||
TAL_ERR_INV_AGC_RX_GAIN_UNDERRANGE_MID_INTERVAL_PARM,
|
||||
TAL_ERR_INV_AGC_RX_GAIN_UNDERRANGE_HIGH_INTERVAL_PARM,
|
||||
TAL_ERR_WAITFOREVENT_TIMEDOUT_CLKPLLCP,
|
||||
TAL_ERR_WAITFOREVENT_TIMEDOUT_CLKPLL_LOCK,
|
||||
TAL_ERR_WAITFOREVENT_TIMEDOUT_RFPLLCP,
|
||||
TAL_ERR_WAITFOREVENT_TIMEDOUT_RFPLL_LOCK,
|
||||
TAL_ERR_WAITFOREVENT_TIMEDOUT_AUXPLLCP,
|
||||
TAL_ERR_WAITFOREVENT_TIMEDOUT_AUXPLL_LOCK,
|
||||
TAL_ERR_WAITFOREVENT_TIMEDOUT_ARMBUSY,
|
||||
TAL_ERR_TIMEDOUT_ARMMAILBOXBUSY,
|
||||
TAL_ERR_EN_TRACKING_CALS_ARMSTATE_ERROR,
|
||||
TAL_ERR_GETPENDINGTRACKINGCALS_NULL_PARAM,
|
||||
TAL_ERR_TRACKINGCAL_OUTOFRANGE_PARAM,
|
||||
TAL_ERR_PAUSETRACKINGCAL_INV_PARAM,
|
||||
TAL_ERR_GETPAUSECALSTATE_NULL_PARAM,
|
||||
TAL_ERR_SET_ARMGPIO_PINS_GPIO_IN_USE,
|
||||
TAL_ERR_SET_ARMGPIO_PINS_INV_SIGNALID,
|
||||
TAL_ERR_SET_ARMGPIO_PINS_INV_GPIOPIN,
|
||||
TAL_ERR_SET_RXDATAFRMT_NULL_PARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_FORMATSELECT_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_TEMPCOMP_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_ROUNDMODE_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_FPDATAFRMT_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_FPENCNAN_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_FPEXPBITS_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_FPHIDELEADINGONE_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_FPRX1ATTEN_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_FPRX2ATTEN_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_INTEMBEDDEDBITS_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_INTSAMPLERESOLUTION_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_PINSTEPSIZE_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_RX1GPIOSELECT_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_RX2GPIOSELECT_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_RXCHAN_DISABLED,
|
||||
TAL_ERR_SET_RXDATAFRMT_EXTERNALLNAGAIN_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_RX1GPIO_INUSE,
|
||||
TAL_ERR_SET_RXDATAFRMT_RX2GPIO_INUSE,
|
||||
TAL_ERR_SET_RXDATAFRMT_DATARES_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_EXTSLICER_RX1GPIO_INVPARAM,
|
||||
TAL_ERR_SET_RXDATAFRMT_EXTSLICER_RX2GPIO_INVPARAM,
|
||||
TAL_ERR_GET_DATAFORMAT_NULL_PARAM,
|
||||
TAL_ERR_GET_SLICERPOS_NULL_PARAM,
|
||||
TAL_ERR_INV_RX_DEC_POWER_PARAM,
|
||||
TAL_ERR_GETRXDECPOWER_INV_CHANNEL,
|
||||
TAL_ERR_GETRXDECPOWER_INV_PROFILE,
|
||||
TAL_ERR_INIT_NULLPARAM,
|
||||
TAL_ERR_INIT_INV_DEVCLK,
|
||||
TAL_ERR_GETRADIOSTATE_NULL_PARAM,
|
||||
TAL_ERR_CHECKGETMCS_STATUS_NULL_PARM,
|
||||
TAL_ERR_WAIT_INITCALS_ARMERROR,
|
||||
TAL_ERR_WAIT_INITCALS_NULL_PARAM,
|
||||
TAL_ERR_CHECK_PLL_LOCK_NULL_PARM,
|
||||
TAL_ERR_READGPIOSPI_NULL_PARM,
|
||||
TAL_ERR_READGPIO3V3SPI_NULL_PARM,
|
||||
TAL_ERR_GET_TXFILTEROVRG_NULL_PARM,
|
||||
TAL_ERR_PROGRAM_RXGAIN_TABLE_NULL_PARM,
|
||||
TAL_ERR_PROGRAM_ORXGAIN_TABLE_NULL_PARM,
|
||||
TAL_ERR_PROGRAMFIR_NULL_PARM,
|
||||
TAL_ERR_PROGRAMFIR_COEFS_NULL,
|
||||
TAL_ERR_READ_DEFRAMERSTATUS_NULL_PARAM,
|
||||
TAL_ERR_READ_DEFRAMERPRBS_NULL_PARAM,
|
||||
TAL_ERR_ARMCMDSTATUS_NULL_PARM,
|
||||
TAL_ERR_PROGRAMFIR_INV_FIRNAME_PARM,
|
||||
TAL_ERR_RXFIR_INV_GAIN_PARM,
|
||||
TAL_ERR_PROGRAMFIR_INV_NUMTAPS_PARM,
|
||||
TALISE_ERR_TXFIR_INV_NUMTAPS_PARM,
|
||||
TALISE_ERR_TXFIR_INV_NUMROWS,
|
||||
TALISE_ERR_TXFIR_TAPSEXCEEDED,
|
||||
TALISE_ERR_RXFIR_INV_DDC,
|
||||
TALISE_ERR_RXFIR_INV_NUMTAPS_PARM,
|
||||
TALISE_ERR_RXFIR_INV_NUMROWS,
|
||||
TALISE_ERR_RXFIR_TAPSEXCEEDED,
|
||||
TALISE_ERR_ORXFIR_INV_DDC,
|
||||
TALISE_ERR_ORXFIR_INV_NUMTAPS_PARM,
|
||||
TALISE_ERR_ORXFIR_INV_NUMROWS,
|
||||
TALISE_ERR_ORXFIR_TAPSEXCEEDED,
|
||||
TAL_ERR_WAITARMCMDSTATUS_INV_OPCODE,
|
||||
TAL_ERR_WAITARMCMDSTATUS_TIMEOUT,
|
||||
TAL_ERR_READARMCMDSTATUS_NULL_PARM,
|
||||
TAL_ERR_LOADBIN_NULL_PARAM,
|
||||
TAL_ERR_GETARMVER_NULL_PARM,
|
||||
TAL_ERR_GETARMVER_V2_NULL_PARM,
|
||||
TAL_ERR_GETARMVER_V2_INVALID_ARM_NOT_LOADED,
|
||||
TAL_ERR_READEVENTSTATUS_INV_PARM,
|
||||
TAL_ERR_FRAMER_INV_FRAMERSEL_PARAM,
|
||||
TAL_ERR_FRAMER_ERRINJECT_INV_FRAMERSEL_PARAM,
|
||||
TAL_ERR_CHECKPLLLOCK_NULL_PARM,
|
||||
TAL_ERR_FRAMER_INV_FRAMERSEL_PARM,
|
||||
TAL_ERR_SETTXATTEN_INV_TXCHANNEL,
|
||||
TAL_ERR_SETTXATTEN_INV_PARM,
|
||||
TAL_ERR_RXFRAMER_INV_OUTPUT_RATE,
|
||||
TAL_ERR_RXFRAMER_INV_PCLKFREQ,
|
||||
TAL_ERR_BBIC_INV_CHN,
|
||||
TAL_ERR_INV_GP_INT_MASK_PARM,
|
||||
TAL_ERR_INV_GP_INT_MASK_NULL_PARM,
|
||||
TAL_ERR_GP_INT_STATUS_NULL_PARAM,
|
||||
TAL_ERR_INV_DAC_SAMP_XBAR_CHANNEL_SEL,
|
||||
TAL_ERR_INV_ADC_SAMP_XBAR_FRAMER_SEL,
|
||||
TAL_ERR_INV_ADC_SAMP_XBAR_SELECT_PARAM,
|
||||
TAL_ERR_INV_DAC_SAMP_XBAR_SELECT_PARAM,
|
||||
TAL_ERR_GETRFPLL_INV_PLLNAME,
|
||||
TAL_ERR_GET_PLLFREQ_INV_REFCLKDIV,
|
||||
TAL_ERR_GET_PLLFREQ_INV_HSDIV,
|
||||
TAL_ERR_GETRFPLL_NULLPARAM,
|
||||
TAL_ERR_FRAMER_A_AND_B_INV_M_PARM,
|
||||
TAL_ERR_SETRXGAIN_RXPROFILE_INVALID,
|
||||
TAL_ERR_SETRXGAIN_INV_CHANNEL,
|
||||
TAL_ERR_INIT_CALS_COMPLETED_NULL_PTR,
|
||||
TAL_ERR_CHKINITCALS_NULL_PTR,
|
||||
TAL_ERR_INIT_CALS_LASTRUN_NULL_PTR,
|
||||
TAL_ERR_GETENABLED_TRACK_CALS_NULL_PTR,
|
||||
TAL_ERR_INIT_CALS_MIN_NULL_PTR,
|
||||
TAL_ERR_INIT_ERR_CAL_NULL_PTR,
|
||||
TAL_ERR_INIT_ERR_CODE_NULL_PTR,
|
||||
TAL_ERR_READARMCFG_ARMERRFLAG,
|
||||
TAL_ERR_GETRXGAIN_INV_RXPROFILE,
|
||||
TAL_ERR_GETRXGAIN_INV_CHANNEL,
|
||||
TAL_ERR_GETRXGAIN_GAIN_RANGE_EXCEEDED,
|
||||
TAL_ERR_GETOBSRXGAIN_INV_ORXPROFILE,
|
||||
TAL_ERR_GETOBSRXGAIN_INV_CHANNEL,
|
||||
TAL_ERR_GETOBSRXGAIN_GAIN_RANGE_EXCEEDED,
|
||||
TAL_ERR_SETUPDUALBANDRXAGC_GAIN_RANGE_MISMATCH,
|
||||
TAL_ERR_SETUPDUALBANDRXAGC_GAIN_OUT_OF_RANGE,
|
||||
TAL_ERR_VERIFYBIN_CHECKSUM_TIMEOUT,
|
||||
TAL_ERR_ARMCMDSTATUS_ARMERROR,
|
||||
TAL_ERR_VERRXPFILE_INV_IQRATE,
|
||||
TAL_ERR_VERRXPFILE_INV_RFBW,
|
||||
TAL_ERR_VERRXPFILE_INV_RHB1,
|
||||
TAL_ERR_VERRXPFILE_INV_DEC5,
|
||||
TAL_ERR_VERRXPFILE_INV_FIR,
|
||||
TAL_ERR_VERRXPFILE_INV_COEF,
|
||||
TAL_ERR_VERRXPFILE_INV_DDC,
|
||||
TAL_ERR_VERORXPFILE_INV_IQRATE,
|
||||
TAL_ERR_VERORXPFILE_INV_RFBW,
|
||||
TAL_ERR_VERORXPFILE_INV_RHB1,
|
||||
TAL_ERR_VERORXPFILE_INV_DEC5,
|
||||
TAL_ERR_VERORXPFILE_INV_FIR,
|
||||
TAL_ERR_VERORXPFILE_INV_COEF,
|
||||
TAL_ERR_VERORXPFILE_INV_DDC,
|
||||
TAL_ERR_VERTXPFILE_INV_DISONPLLUNLOCK,
|
||||
TAL_ERR_VERTXPFILE_INV_IQRATE,
|
||||
TAL_ERR_VERTXPFILE_INV_RFBW,
|
||||
TAL_ERR_VERTXPFILE_INV_THB1,
|
||||
TAL_ERR_VERTXPFILE_INV_THB2,
|
||||
TAL_ERR_VERTXPFILE_INV_THB3,
|
||||
TAL_ERR_VERTXPFILE_INV_INT5,
|
||||
TAL_ERR_VERTXPFILE_INV_HBMUTEX,
|
||||
TAL_ERR_VERTXPFILE_INV_FIRIPL,
|
||||
TAL_ERR_VERTXPFILE_INV_COEF,
|
||||
TAL_ERR_VERTXPFILE_INV_DACDIV,
|
||||
TAL_ERR_VERPFILE_INV_RFPLLMCSMODE,
|
||||
TAL_ERR_VERPFILE_TXHSCLK,
|
||||
TAL_ERR_VERPFILE_RXHSCLK,
|
||||
TAL_ERR_VERPFILE_ORXHSCLK,
|
||||
TAL_ERR_SETSPI_INV_CMOS_DRV_STR,
|
||||
TAL_ERR_SETCLKPLL_INV_TXATTENDIV,
|
||||
TAL_ERR_SETTXTOORXMAP_INV_ORX1_MAP,
|
||||
TAL_ERR_SETTXTOORXMAP_INV_ORX2_MAP,
|
||||
TAL_ERR_GETRXTXENABLE_NULLPARAM,
|
||||
TAL_ERR_SETRXTXENABLE_INVCHANNEL,
|
||||
TAL_ERR_GETTXATTEN_NULL_PARM,
|
||||
TAL_ERR_GETTXATTEN_INV_TXCHANNEL,
|
||||
TAL_ERR_INV_RADIO_CTL_MASK_PARM,
|
||||
TAL_ERR_GETPINMODE_NULLPARAM,
|
||||
TAL_ERR_SET_ARMGPIO_NULLPARAM,
|
||||
TAL_ERR_GETTEMPERATURE_NULLPARAM,
|
||||
TAL_ERR_GETTXLOLSTATUS_NULL_PARAM,
|
||||
TAL_ERR_GETTXLOLSTATUS_INV_CHANNEL_PARM,
|
||||
TAL_ERR_GETTXQECSTATUS_NULL_PARAM,
|
||||
TAL_ERR_GETTXQECSTATUS_INV_CHANNEL_PARM,
|
||||
TAL_ERR_GETRXQECSTATUS_NULL_PARAM,
|
||||
TAL_ERR_GETRXQECSTATUS_INV_CHANNEL_PARM,
|
||||
TAL_ERR_GETORXQECSTATUS_NULL_PARAM,
|
||||
TAL_ERR_GETORXQECSTATUS_INV_CHANNEL_PARM,
|
||||
TAL_ERR_GETRXHD2STATUS_NULL_PARAM,
|
||||
TAL_ERR_GETRXHD2STATUS_INV_CHANNEL_PARM,
|
||||
TAL_ERR_VERIFYSPI_READ_LOW_ADDR_ERROR,
|
||||
TAL_ERR_VERIFYSPI_WRITE_LOW_ADDR_ERROR,
|
||||
TAL_ERR_VERIFYSPI_READ_HIGH_ADDR_ERROR,
|
||||
TAL_ERR_VERIFYSPI_WRITE_HIGH_ADDR_ERROR,
|
||||
TAL_ERR_GETAPIVERSION_NULLPARAM,
|
||||
TAL_ERR_INV_DAC_FULLSCALE_PARM,
|
||||
TAL_ERR_RESET_TXLOL_INV_CHANNEL_PARM,
|
||||
TAL_ERR_RESET_TXLOL_ARMSTATE_ERROR,
|
||||
TAL_ERR_SETHD2CFG_NULL_PARAM,
|
||||
TAL_ERR_SETHD2CFG_ARMSTATE_ERROR,
|
||||
TAL_ERR_GETHD2CFG_NULL_PARAM,
|
||||
TAL_ERR_GETHD2CFG_ARMSTATE_ERROR,
|
||||
TAL_ERR_SET_SPI2_ENABLE_INVALID_TX_ATTEN_SEL,
|
||||
TAL_ERR_SET_SPI2_ENABLE_GPIO_IN_USE,
|
||||
TAL_ERR_SETRXMGCPINCTRL_INV_RX1_INC_PIN,
|
||||
TAL_ERR_SETRXMGCPINCTRL_INV_RX1_DEC_PIN,
|
||||
TAL_ERR_SETRXMGCPINCTRL_INV_RX2_INC_PIN,
|
||||
TAL_ERR_SETRXMGCPINCTRL_INV_RX2_DEC_PIN,
|
||||
TAL_ERR_SETRXMGCPINCTRL_INV_CHANNEL,
|
||||
TAL_ERR_SETRXMGCPINCTRL_INV_INC_STEP,
|
||||
TAL_ERR_SETRXMGCPINCTRL_INV_DEC_STEP,
|
||||
TAL_ERR_SETRXMGCPINCTRL_RX1_GPIO_IN_USE,
|
||||
TAL_ERR_SETRXMGCPINCTRL_RX2_GPIO_IN_USE,
|
||||
TAL_ERR_GETRXMGCPINCTRL_INV_CHANNEL,
|
||||
TAL_ERR_GETRXMGCPINCTRL_NULL_PARAM,
|
||||
TAL_ERR_SETRFPLL_LOOPFILTER_INV_LOOPBANDWIDTH,
|
||||
TAL_ERR_SETRFPLL_LOOPFILTER_INV_STABILITY,
|
||||
TAL_ERR_SETRFPLL_LOOPFILTER_INV_PLLSEL,
|
||||
TAL_ERR_GETRFPLL_LOOPFILTER_NULLPARAM,
|
||||
TAL_ERR_GETRFPLL_LOOPFILTER_INV_PLLSEL,
|
||||
TAL_ERR_GETDEVICEREV_NULLPARAM,
|
||||
TAL_ERR_GETPRODUCTID_NULLPARAM,
|
||||
TAL_ERR_ENABLETXNCO_INV_PROFILE,
|
||||
TAL_ERR_ENABLETXNCO_NULL_PARM,
|
||||
TAL_ERR_ENABLETXNCO_INV_TX1_FREQ,
|
||||
TAL_ERR_ENABLETXNCO_INV_TX2_FREQ,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_NULL_PARAM,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_TX1_GPIO_IN_USE,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_TX2_GPIO_IN_USE,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_INV_PARM,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_INV_TX1_INC_PIN,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_INV_TX1_DEC_PIN,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_INV_TX2_INC_PIN,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_INV_TX2_DEC_PIN,
|
||||
TAL_ERR_SETTXATTENCTRLPIN_INV_CHANNEL,
|
||||
TAL_ERR_GETTXATTENCTRLPIN_INV_CHANNEL,
|
||||
TAL_ERR_GETTXATTENCTRLPIN_NULL_PARAM,
|
||||
TAL_ERR_SETUPDUALBANDRX1AGC_GPIO3P3_IN_USE,
|
||||
TAL_ERR_SETUPDUALBANDRX2AGC_GPIO3P3_IN_USE,
|
||||
TAL_ERR_SETUPDUALBANDRXAGC_INV_CHANNEL,
|
||||
TAL_ERR_SETUPDUALBANDRXAGC_NULL_PARAM,
|
||||
TAL_ERR_SETUPDUALBANDRXAGC_INV_PWRMARGIN,
|
||||
TAL_ERR_SETUPDUALBANDRXAGC_INV_DECPWR,
|
||||
TAL_ERR_GETDUALBANDLNA_INV_CHANNEL,
|
||||
TAL_ERR_GETDUALBANDLNA_NULL_PARAM,
|
||||
TAL_ERR_INITIALIZE_DDC_INV_TOTAL_M_2OR4,
|
||||
TAL_ERR_INITIALIZE_DDC_INV_TOTAL_M_4OR8,
|
||||
TAL_ERR_INITIALIZE_DDC_NULL_PARAM,
|
||||
TAL_ERR_RXNCOFTW_INVNCO,
|
||||
TAL_ERR_INITIALIZE_DDC_INV_RXDDCMODE,
|
||||
TAL_ERR_INITIALIZE_DDC_INV_DEC_AT_PFIR,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_INV_CENTER_FREQ,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_INV_BAND_SEP,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_INV_IN_UPPER_FREQ,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_INV_IN_LOWER_FREQ,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_INV_OUT_UPPER_FREQ,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_INV_OUT_LOWER_FREQ,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_OUT_OVERLAP,
|
||||
TAL_ERR_SETDUALBANDSETTINGS_FTW_OVRG,
|
||||
TAL_ERR_DUALBAND_LNA_TABLE_INV_PROFILE,
|
||||
TAL_ERR_DUALBAND_LNA_TABLE_INV_INDEX,
|
||||
TAL_ERR_DUALBAND_LNA_TABLE_INV_CHANNEL,
|
||||
TAL_ERR_DUALBAND_LNA_TABLE_NULL_PARM,
|
||||
TAL_ERR_SETUPNCOSHIFTER_INV_PFIR_CORNER,
|
||||
TAL_ERR_SETUPNCOSHIFTER_INV_DDCHB_CORNER,
|
||||
TAL_ERR_SETUPNCOSHIFTER_INV_NCO2SHIFT,
|
||||
TAL_ERR_SETUPNCOSHIFTER_FTW_OVRG,
|
||||
TAL_ERR_INV_DEFA_SLEWRATE,
|
||||
TAL_ERR_INV_DEFB_SLEWRATE,
|
||||
TAL_ERR_GETTXSAMPLEPWR_NULL_PARAM,
|
||||
TAL_ERR_GETTXSAMPLEPWR_INV_TXREADCHAN,
|
||||
TAL_ERR_SETPAPRO_NULL_PARAM,
|
||||
TAL_ERR_SETPAPRO_INV_AVGDURATION,
|
||||
TAL_ERR_SETPAPROT_INV_PEAKCNT,
|
||||
TAL_ERR_SETPAPROT_INV_TXATTENSTEP,
|
||||
TAL_ERR_SETPAPROT_INV_TX1THRESH,
|
||||
TAL_ERR_SETPAPROT_INV_TX2THRESH,
|
||||
TAL_ERR_SETPAPROT_INV_TX1PEAKTHRESH,
|
||||
TAL_ERR_SETPAPROT_INV_TX2PEAKTHRESH,
|
||||
TAL_ERR_GETPAERRFLAGS_NULL_PARAM,
|
||||
TAL_ERR_GETPAPRO_NULL_PARAM,
|
||||
TAL_ERR_DAC_FULLSCALE_INVARMSTATE,
|
||||
TAL_ERR_DEFSTATUS_INV_COUNTERERRTHRESHOLD_PARAM,
|
||||
TAL_ERR_RFPLLFREQ_TX_OUT_OF_RANGE,
|
||||
TAL_ERR_RFPLLFREQ_RX_OUT_OF_RANGE,
|
||||
TAL_ERR_RFPLLFREQ_ORX_OUT_OF_RANGE,
|
||||
TAL_ERR_READEVENTSTATUS_NULL_PARM,
|
||||
TAL_ERR_INV_SIREV,
|
||||
TAL_ERR_REGISTER_ERRORMSG_C0,
|
||||
TAL_ERR_SETEXTWORDCTRLGPIO_INV_CHANNEL,
|
||||
TAL_ERR_SETEXTWORDCTRLGPIO_UNINITIALIZED_RX1,
|
||||
TAL_ERR_SETEXTWORDCTRLGPIO_UNINITIALIZED_RX2,
|
||||
TAL_ERR_SETEXTWORDCTRLGPIO_GPIO_IN_USE_RX1,
|
||||
TAL_ERR_SETEXTWORDCTRLGPIO_GPIO_IN_USE_RX2,
|
||||
TAL_ERR_FRAMERSYSREFTOGGLE_INV_FRAMERSEL_PARAM,
|
||||
TAL_ERR_SETORXLOSRC_INVALIDPARAM,
|
||||
TAL_ERR_GETORXLOSRC_NULLPARAM,
|
||||
TAL_ERR_SETORXLOSRC_TIMEDOUT_ARMMAILBOXBUSY,
|
||||
TAL_ERR_SETORXLOCFG_NULL_PARAM,
|
||||
TAL_ERR_SETORXLOCFG_INVALIDPARAM,
|
||||
TAL_ERR_SETORXLOCFG_INVALID_ARMSTATE,
|
||||
TAL_ERR_SETORXLOCFG_GPIOUSED,
|
||||
TAL_ERR_GETORXLOCFG_NULL_PARAM,
|
||||
TAL_ERR_GETORXLOCFG_INVALID_ARMSTATE,
|
||||
TAL_ERR_SETFHMCONFIG_NULL_PARAM,
|
||||
TAL_ERR_SETFHMCONFIG_INV_FHMGPIOPIN,
|
||||
TAL_ERR_SETFHMCONFIG_INV_FHMCONFIG_FHM_MIN_FREQ,
|
||||
TAL_ERR_SETFHMCONFIG_INV_FHMCONFIG_FHM_MAX_FREQ,
|
||||
TAL_ERR_SETFHMCONFIG_FHMGPIOPIN_IN_USE,
|
||||
TAL_ERR_GETFHMCONFIG_NULL_PARAM,
|
||||
TAL_ERR_SETFHMMODE_NULL_PARAM,
|
||||
TAL_ERR_SETFHMMODE_INV_FHM_INIT_FREQ,
|
||||
TAL_ERR_SETFHMMODE_INV_FHM_TRIGGER_MODE,
|
||||
TAL_ERR_SETFHMMODE_INV_FHM_EXIT_MODE,
|
||||
TAL_ERR_GETFHMMODE_NULL_PARAM,
|
||||
TAL_ERR_SETFHMHOP_INV_FHM_FREQ,
|
||||
TAL_ERR_GETFHMSTS_NULL_PARAM,
|
||||
TAL_ERR_SETDCMSHIFT_INV_CH_PARAM,
|
||||
TAL_ERR_SETDCMSHIFT_INV_MSHIFT_PARAM,
|
||||
TAL_ERR_GETDCMSHIFT_INV_CH_PARAM,
|
||||
TAL_ERR_GETDCMSHIFT_NULL_MSHIFT_PARAM,
|
||||
TAL_ERR_SETEXTLOOUT_INV_DIV_PARAM,
|
||||
TAL_ERR_SETEXTLOOUT_LO_IN_ENABLED,
|
||||
TAL_ERR_GETEXTLOOUT_NULL_PARAM,
|
||||
TAL_ERR_NUMBER_OF_ERRORS /* Keep this ENUM last as a reference to the total number of error enum values */
|
||||
} taliseErr_t;
|
||||
|
||||
/**
|
||||
* \brief Private Enum to list of available error handlers
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ERRHDL_HAL_WAIT, /*!<API Error handler for HAL wait/delay function errors */
|
||||
TAL_ERRHDL_HAL_LOG, /*!<API Error handler for HAL log function error */
|
||||
TAL_ERRHDL_HAL_SPI, /*!<API Error handler for HAL SPI function errors */
|
||||
TAL_ERRHDL_HAL_GPIO, /*!<API Error handler for HAL GPIO function errors */
|
||||
TAL_ERRHDL_INVALID_PARAM, /*!<API Error handler invalid parameter errors */
|
||||
TAL_ERRHDL_API_FAIL, /*!<API Error handler API functional errors */
|
||||
TAL_ERRHDL_APIARM_ERR, /*!< Talise API layer ARM error handler */
|
||||
TAL_ERRHDL_ARM_CMD_ERR, /*!< Talise sendArmCommand error handler */
|
||||
TAL_ERRHDL_ARM_INITCALS_ERR, /*!< Talise init calibration error handler */
|
||||
TAL_ERRHDL_API_GPIO, /*!< Talise GPIO error handler */
|
||||
TAL_ERRHDL_API_C0_PCA, /*!< reserved error handler */
|
||||
TAL_ERRHDL_API_C0_PHMFOVR /*!< reserved error handler */
|
||||
} taliseErrHdls_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of Talise Recovery Actions used as return values
|
||||
* APIs.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TALACT_NO_ACTION = 0, /*!< API OK - NO ACTION REQUIRED */
|
||||
TALACT_WARN_RESET_LOG, /*!< API OK - LOG Not working */
|
||||
TALACT_WARN_RERUN_TRCK_CAL, /*!< API NG - RESET SPEC TRACK CALS */
|
||||
TALACT_WARN_RESET_GPIO, /*!< API OK - GPIO Not working */
|
||||
TALACT_ERR_CHECK_TIMER, /*!< API OK - timer not working */
|
||||
TALACT_ERR_RESET_ARM, /*!< API NG - RESET ARM ONLY */
|
||||
TALACT_ERR_RERUN_INIT_CALS, /*!< API NG - RESET INIT CAL SEQ */
|
||||
TALACT_ERR_RESET_SPI, /*!< API NG - SPI Not Working */
|
||||
TALACT_ERR_RESET_GPIO, /*!< API NG - GPIO Not working */
|
||||
TALACT_ERR_CHECK_PARAM, /*!< API OK - INVALID PARAM */
|
||||
TALACT_ERR_RESET_FULL, /*!< API NG - FULL RESET REQUIRED */
|
||||
TALACT_ERR_RESET_JESD204FRAMERA, /*!< API NG - RESET the JESD204 FRAMER A */
|
||||
TALACT_ERR_RESET_JESD204FRAMERB, /*!< API NG - RESET the JESD204 FRAMER B */
|
||||
TALACT_ERR_RESET_JESD204DEFRAMERA, /*!< API NG - RESET the JESD204 DEFRAMER A */
|
||||
TALACT_ERR_RESET_JESD204DEFRAMERB, /*!< API NG - RESET the JESD204 DEFRAMER B */
|
||||
TALACT_ERR_BBIC_LOG_ERROR, /*!< API NG - USER Should log this error and decide recovery action */
|
||||
TALACT_ERR_REDUCE_TXSAMPLE_PWR /*!< API NG - RESET the TX Sample power for the Channel specified */
|
||||
} talRecoveryActions_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_ERROR_TYPES_H_ */
|
||||
Executable
+2404
File diff suppressed because it is too large
Load Diff
Executable
+1031
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Executable
+238
@@ -0,0 +1,238 @@
|
||||
/**
|
||||
* \file talise_gpio_types.h
|
||||
* \brief Contains functions to allow control of the General Purpose IO functions on the Talise device
|
||||
*
|
||||
* 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_GPIO_TYPES_H_
|
||||
#define TALISE_GPIO_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Enum to set the low voltage GPIO mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_GPIO_MONITOR_MODE = 0, /*!< Allows a choice of debug signals to output from Talise to monitor the state of the device */
|
||||
TAL_GPIO_BITBANG_MODE = 3, /*!< Manual mode, API function sets output pin levels and reads input pin levels */
|
||||
TAL_GPIO_ARM_OUT_MODE = 9, /*!< Allows internal ARM processor to output on GPIO pins */
|
||||
TAL_GPIO_SLICER_OUT_MODE = 10 /*!< Allows Slicer active configuration to the GPIO output pins */
|
||||
} taliseGpioMode_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to set the GPIO3v3 mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_GPIO3V3_LEVELTRANSLATE_MODE = 1, /*!< Level translate mode, signal level on low voltage GPIO output on GPIO3v3 pins */
|
||||
TAL_GPIO3V3_INVLEVELTRANSLATE_MODE = 2, /*!< Inverted Level translate mode, inverse of signal level on low voltage GPIO output on GPIO3v3 pins */
|
||||
TAL_GPIO3V3_BITBANG_MODE = 3, /*!< Manual mode, API function sets output pin levels and reads input pin levels */
|
||||
TAL_GPIO3V3_EXTATTEN_LUT_MODE = 4 /*!< GPIO3v3 output level follows Rx1/Rx2 gain table external control 6bit field. */
|
||||
} taliseGpio3v3Mode_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of unique error codes for the Talise GPIO API functions.
|
||||
* Each error condition in the library should get its own enum value to allow
|
||||
* easy debug of errors.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TALISE_ERR_GPIO_OK = 0,
|
||||
TALISE_ERR_MONITOR_OUT_INDEX_RANGE,
|
||||
TALISE_ERR_GETGPIOMON_INDEX_NULL_PARM,
|
||||
TALISE_ERR_GETGPIOMON_MONITORMASK_NULL_PARM,
|
||||
TALISE_ERR_GETGPIO_OE_NULL_PARM,
|
||||
TALISE_ERR_GPIO_OE_INV_PARM,
|
||||
TALISE_ERR_GPIO_SRC_INV_PARM,
|
||||
TALISE_ERR_GETGPIO_SRC_NULL_PARM,
|
||||
TALISE_ERR_GPIO_LEVEL_INV_PARM,
|
||||
TALISE_ERR_GETGPIO_LEVEL_NULL_PARM,
|
||||
TALISE_ERR_GETGPIO_SETLEVEL_NULL_PARM,
|
||||
TALISE_ERR_SETUPAUXDAC_NULL_PARM,
|
||||
TALISE_ERR_SETUPAUXDAC_INV_10BIT_AUXDACCODE,
|
||||
TALISE_ERR_SETUPAUXDAC_INV_12BIT_AUXDACCODE,
|
||||
TALISE_ERR_WRITEAUXDAC_INV_10BIT_AUXDACCODE,
|
||||
TALISE_ERR_WRITEAUXDAC_INV_12BIT_AUXDACCODE,
|
||||
TALISE_ERR_WRITEAUXDAC_INV_AUXDACINDEX,
|
||||
TALISE_ERR_SETUPAUXDAC_INV_RESOLUTION,
|
||||
TALISE_ERR_GPIO3V3_OE_INV_PARM,
|
||||
TALISE_ERR_GETGPIO3V3_OE_NULL_PARM,
|
||||
TALISE_ERR_GPIO3V3_SRC_INV_PARM,
|
||||
TALISE_ERR_GETGPIO3V3_SRC_NULL_PARM,
|
||||
TALISE_ERR_GPIO3V3_LEVEL_INV_PARM,
|
||||
TALISE_ERR_GETGPIO3V3_LEVEL_NULL_PARM,
|
||||
TALISE_ERR_GETGPIO3V3_SETLEVEL_NULL_PARM,
|
||||
TALISE_ERR_GPINT_OK,
|
||||
TALISE_ERR_GPINT_STATUS_NULL_PARM,
|
||||
TALISE_ERR_GPINT_GPINTDIAG_NULL_PARM,
|
||||
TALISE_ERR_GPINT_NO_SOURCE_FOUND,
|
||||
TALISE_ERR_GPINT_SOURCE_NOT_IMPLEMENTED,
|
||||
TALISE_ERR_GPINT_CLKPLL_UNLOCKED,
|
||||
TALISE_ERR_GPINT_RFPLL_UNLOCKED,
|
||||
TALISE_ERR_GPINT_AUXPLL_UNLOCKED,
|
||||
TALISE_ERR_GPINT_ARM_WATCHDOG_TIMEOUT,
|
||||
TALISE_ERR_GPINT_ARM_FORCE_GPINT,
|
||||
TALISE_ERR_GPINT_ARM_SYSTEM_ERROR,
|
||||
TALISE_ERR_GPINT_ARM_DATA_PARITY_ERROR,
|
||||
TALISE_ERR_GPINT_ARM_PROG_PARITY_ERROR,
|
||||
TALISE_ERR_GPINT_ARM_CALIBRATION_ERROR,
|
||||
TALISE_ERR_GPINT_FRAMERA,
|
||||
TALISE_ERR_GPINT_DEFRAMERA,
|
||||
TALISE_ERR_GPINT_FRAMERB,
|
||||
TALISE_ERR_GPINT_DEFRAMERB,
|
||||
TALISE_ERR_GPINT_PA_PROTECT_CH1,
|
||||
TALISE_ERR_GPINT_PA_PROTECT_CH2,
|
||||
TALISE_ERR_GPINT_STREAM_ERROR,
|
||||
TALISE_ERR_SETAUXADCPINMODEGPIO_INV_GPIO,
|
||||
TALISE_ERR_SETAUXADCPINMODEGPIO_GPIO_IN_USE,
|
||||
TALISE_ERR_STARTAUXADC_INV_CHANNEL,
|
||||
TALISE_ERR_STARTAUXADC_INV_MODE,
|
||||
TALISE_ERR_STARTAUXADC_INV_NUM_SAMPLES,
|
||||
TALISE_ERR_STARTAUXADC_INV_SAMPLING_PERIOD,
|
||||
TALISE_ERR_STARTAUXADC_NULL_PARAM,
|
||||
TALISE_ERR_READAUXADC_NULL_PARAM,
|
||||
TAL_ERR_GPIO_NUMBER_OF_ERRORS /* Keep this ENUM last as a reference to the total number of error enum values */
|
||||
} taliseGpioErr_t;
|
||||
|
||||
/**
|
||||
* \brief Enumeration for 10bit AuxDAC voltage for center DAC code (code 512).
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_AUXDACVREF_1V = 0, /*!< AuxDAC reference at 1V */
|
||||
TAL_AUXDACVREF_1P5V = 1, /*!< AuxDAC reference at 1.5V */
|
||||
TAL_AUXDACVREF_2V = 2, /*!< AuxDAC reference at 2V */
|
||||
TAL_AUXDACVREF_2P5V = 3 /*!< AuxDAC reference at 2.5V */
|
||||
} taliseAuxDacVref_t;
|
||||
|
||||
/**
|
||||
* \brief Enumeration for AuxDAC resolution modes.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_AUXDACRES_12BIT = 0, /*!< 12bit DAC resolution for a subset of the output voltage range centered around VREF */
|
||||
TAL_AUXDACRES_11BIT = 1, /*!< 11bit DAC resolution for a subset of the output voltage range centered around VREF */
|
||||
TAL_AUXDACRES_10BIT = 2 /*!< 10bit DAC resolution for 100mv to 3v range */
|
||||
} taliseAuxDacResolution_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold the auxiliary DAC settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint16_t auxDacEnables; /*!< Aux DAC enable bit for each DAC, where the first ten bits correspond to the 10-bit DACs, and the next consecutive two bits enable the 12-bit DACs */
|
||||
taliseAuxDacVref_t auxDacVref[10]; /*!< Aux DAC voltage reference value for each of the 10-bit DACs */
|
||||
taliseAuxDacResolution_t auxDacResolution[10]; /*!< Aux DAC slope (resolution of voltage change per AuxDAC code) - only applies to 10bit DACs (0-9) */
|
||||
uint16_t auxDacValues[12]; /*!< Aux DAC values for each 10-bit DAC correspond to the first 10 array elements, the next consecutive array elements correspond to the two 12-bit DAC values */
|
||||
} taliseAuxDac_t;
|
||||
|
||||
/**
|
||||
* \brief General Purpose interrupt mask types
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_GP_MASK_STREAM_ERROR = 0x1000, /*!< Stream processor error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_ARM_CALIBRATION_ERROR = 0x0800, /*!< ARM calibration error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_ARM_SYSTEM_ERROR = 0x0400, /*!< ARM System error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_ARM_FORCE_INTERRUPT = 0x0200, /*!< ARM force GP Interrupt mask bit */
|
||||
TAL_GP_MASK_WATCHDOG_TIMEOUT = 0x0100, /*!< Watchdog GP Interrupt mask bit */
|
||||
TAL_GP_MASK_PA_PROTECTION_TX2_ERROR = 0x0080, /*!< Tx2 PA protection error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_PA_PROTECTION_TX1_ERROR = 0x0040, /*!< Tx1 PA protection error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_JESD_DEFRMER_IRQ = 0x0020, /*!< JESD204B Deframer IRQ error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_JESD_FRAMER_IRQ = 0x0010, /*!< JESD204B Framer IRQ error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_CLK_SYNTH_UNLOCK = 0x0008, /*!< Device clock PLL non-lock error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_AUX_SYNTH_UNLOCK = 0x0004, /*!< Auxiliary PLL non-lock error GP Interrupt mask bit */
|
||||
TAL_GP_MASK_RF_SYNTH_UNLOCK = 0x0002 /*!< RF PLL non-lock error GP Interrupt mask bit */
|
||||
} taliseGpIntMask_t;
|
||||
|
||||
#define TAL_GPMASK_MSB (uint16_t)(TAL_GP_MASK_STREAM_ERROR | \
|
||||
TAL_GP_MASK_ARM_CALIBRATION_ERROR | \
|
||||
TAL_GP_MASK_ARM_SYSTEM_ERROR | \
|
||||
TAL_GP_MASK_ARM_FORCE_INTERRUPT | \
|
||||
TAL_GP_MASK_WATCHDOG_TIMEOUT)
|
||||
|
||||
#define TAL_GPMASK_LSB (uint16_t)(TAL_GP_MASK_PA_PROTECTION_TX1_ERROR | \
|
||||
TAL_GP_MASK_PA_PROTECTION_TX2_ERROR | \
|
||||
TAL_GP_MASK_JESD_DEFRMER_IRQ | \
|
||||
TAL_GP_MASK_JESD_FRAMER_IRQ | \
|
||||
TAL_GP_MASK_CLK_SYNTH_UNLOCK | \
|
||||
TAL_GP_MASK_AUX_SYNTH_UNLOCK | \
|
||||
TAL_GP_MASK_RF_SYNTH_UNLOCK)
|
||||
/**
|
||||
* \brief GPIO settings for SPI2 TxAtten select
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_SPI2_TXATTEN_GPIO4 = 0x00, /*!< Select GPIO4 for SPI2 Tx Attenuation select */
|
||||
TAL_SPI2_TXATTEN_GPIO8 = 0x01, /*!< Select GPIO8 for SPI2 Tx Attenuation select */
|
||||
TAL_SPI2_TXATTEN_GPIO14 = 0x02, /*!< Select GPIO14 for SPI2 Tx Attenuation select */
|
||||
TAL_SPI2_TXATTEN_DISABLE = 0x03 /*!< Disable GPIO for SPI2 Tx Attenuation select */
|
||||
} taliseSpi2TxAttenGpioSel_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief gpIntHandler diagnostic structure
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t data[9]; /*!< All GP_INT sources */
|
||||
taliseFramerSel_t framer; /*!< Interrupting framer, valid only for framer sources */
|
||||
taliseDeframerSel_t deframer; /*!< Interrupting deframer, valid only for deframer sources */
|
||||
int32_t deframerInputsMask; /*!< Interrupting deframer input mask (bit per deframer input), valid only for deframer sources (valid 0x0-0xF)
|
||||
deframerInputsMask is the deframer lane after the deframer lane crossbar swapping (lane input of the deframer) */
|
||||
} taliseGpIntInformation_t;
|
||||
|
||||
/**
|
||||
* \brief Talise Aux ADC Channel types
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_AUXADC_CH0 = 0, /*!< Select Aux ADC Channel 0 for sampling and conversion*/
|
||||
TAL_AUXADC_CH1 = 1, /*!< Select Aux ADC Channel 1 for sampling and conversion*/
|
||||
TAL_AUXADC_CH2 = 2, /*!< Select Aux ADC Channel 2 for sampling and conversion*/
|
||||
TAL_AUXADC_CH3 = 3 /*!< Select Aux ADC Channel 3 for sampling and conversion*/
|
||||
} taliseAuxAdcChannels_t;
|
||||
|
||||
/**
|
||||
* \brief Talise Aux ADC modes for sampling
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_AUXADC_NONPIN_MODE = 0, /*!< Select Aux ADC sampling and conversion in Non-Pin mode (ARM Internal timer is used for sampling and conversion)*/
|
||||
TAL_AUXADC_PIN_MODE = 1 /*!< Select Aux ADC sampling and conversion in Pin mode (Pulses on ARM GPIO Input pins are used to schedule sampling and conversion)*/
|
||||
} taliseAuxAdcModes_t;
|
||||
|
||||
/**
|
||||
* \brief Talise Aux ADC configuration structure
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseAuxAdcChannels_t auxAdcChannelSel; /*!< Selects the channel which is supposed to sample AuxADC input for A/D conversion */
|
||||
taliseAuxAdcModes_t auxAdcMode; /*!< Selects mode to latch and store conversion results */
|
||||
uint16_t numSamples; /*!< No. of A/D conversions to be performed in range 1 - 1000 */
|
||||
uint16_t samplingPeriod_us; /*!< Sampling interval time in microseconds (Minimum 15us) NOTE: Valid only for non pin mode. Ignored for pin mode. */
|
||||
} taliseAuxAdcConfig_t;
|
||||
|
||||
/**
|
||||
* \brief Talise Aux ADC conversion result structure
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint16_t auxAdcCodeAvg; /*!< 12-bit Average of AuxADC A/D conversion samples */
|
||||
uint16_t numSamples; /*!< No. of samples averaged in AuxAdcCodeAvg */
|
||||
uint8_t completeIndicator; /*!< Flag to indicate if a scheduled AuxADC conversion completed. 1 - AuxADC Conversion Complete, 0 - AuxADC Conversion Incomplete */
|
||||
} taliseAuxAdcResult_t;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_GPIO_TYPES_H_ */
|
||||
Executable
+114
@@ -0,0 +1,114 @@
|
||||
/**
|
||||
* \file talise_hal.c
|
||||
* \brief Contains TALISE API Hardware Abstraction Layer (HAL) functions
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "talise_hal.h"
|
||||
|
||||
adiHalErr_t talSpiReadByte(void *devHalInfo, uint16_t addr, uint8_t *readdata)
|
||||
{
|
||||
adiHalErr_t halError = ADIHAL_OK;
|
||||
|
||||
halError = ADIHAL_spiReadByte(devHalInfo, addr, readdata);
|
||||
if (halError == ADIHAL_WAIT_TIMEOUT)
|
||||
{
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT * HAL_TIMEOUT_MULT);
|
||||
halError = ADIHAL_spiReadByte(devHalInfo, addr, readdata);
|
||||
}
|
||||
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT);
|
||||
return halError;
|
||||
}
|
||||
|
||||
adiHalErr_t talSpiWriteByte(void *devHalInfo, uint16_t addr, uint8_t data)
|
||||
{
|
||||
adiHalErr_t halError = ADIHAL_OK;
|
||||
|
||||
halError = ADIHAL_spiWriteByte(devHalInfo, addr, data);
|
||||
if (halError == ADIHAL_WAIT_TIMEOUT)
|
||||
{
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT * HAL_TIMEOUT_MULT);
|
||||
halError = ADIHAL_spiWriteByte(devHalInfo, addr, data);
|
||||
}
|
||||
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT);
|
||||
return halError;
|
||||
}
|
||||
|
||||
#include "stdio.h"
|
||||
adiHalErr_t talSpiWriteBytes(void *devHalInfo, uint16_t *addr, uint8_t *data, uint32_t count)
|
||||
{
|
||||
adiHalErr_t halError = ADIHAL_OK;
|
||||
|
||||
//printf("[%s,%d] start. count=%d addr=0x%x\n", __FUNCTION__, __LINE__, count, addr);
|
||||
halError = ADIHAL_spiWriteBytes(devHalInfo, addr, data, count);
|
||||
if (halError == ADIHAL_WAIT_TIMEOUT)
|
||||
{
|
||||
//printf("[%s,%d] tout. count=%d addr=0x%x\n", __FUNCTION__, __LINE__, count, addr);
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT * HAL_TIMEOUT_MULT);
|
||||
halError = ADIHAL_spiWriteBytes(devHalInfo, addr, data, count);
|
||||
}
|
||||
//printf("[%s,%d] end. count=%d addr=0x%x\n", __FUNCTION__, __LINE__, count, addr);
|
||||
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT);
|
||||
return halError;
|
||||
}
|
||||
|
||||
adiHalErr_t talSpiReadBytes(void *devHalInfo, uint16_t *addr, uint8_t *readdata, uint32_t count)
|
||||
{
|
||||
adiHalErr_t halError = ADIHAL_OK;
|
||||
|
||||
halError = ADIHAL_spiReadBytes(devHalInfo, addr, readdata, count);
|
||||
if (halError == ADIHAL_WAIT_TIMEOUT)
|
||||
{
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT * HAL_TIMEOUT_MULT);
|
||||
halError = ADIHAL_spiReadBytes(devHalInfo, addr, readdata, count);
|
||||
}
|
||||
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT);
|
||||
return halError;
|
||||
}
|
||||
|
||||
adiHalErr_t talSpiReadField(void *devHalInfo, uint16_t addr, uint8_t *fieldVal, uint8_t mask, uint8_t startBit)
|
||||
{
|
||||
adiHalErr_t halError = ADIHAL_OK;
|
||||
|
||||
halError = ADIHAL_spiReadField(devHalInfo, addr, fieldVal, mask, startBit);
|
||||
if (halError == ADIHAL_WAIT_TIMEOUT)
|
||||
{
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT * HAL_TIMEOUT_MULT);
|
||||
halError = ADIHAL_spiReadField(devHalInfo, addr, fieldVal, mask, startBit);
|
||||
}
|
||||
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT);
|
||||
return halError;
|
||||
}
|
||||
|
||||
adiHalErr_t talSpiWriteField(void *devHalInfo, uint16_t addr, uint8_t fieldVal, uint8_t mask, uint8_t startBit)
|
||||
{
|
||||
adiHalErr_t halError = ADIHAL_OK;
|
||||
|
||||
halError = ADIHAL_spiWriteField(devHalInfo, addr, fieldVal, mask, startBit);
|
||||
if (halError == ADIHAL_WAIT_TIMEOUT)
|
||||
{
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT * HAL_TIMEOUT_MULT);
|
||||
halError = ADIHAL_spiWriteField(devHalInfo, addr, fieldVal, mask, startBit);
|
||||
}
|
||||
|
||||
ADIHAL_setTimeout(devHalInfo, HAL_TIMEOUT_DEFAULT);
|
||||
return halError;
|
||||
}
|
||||
|
||||
adiHalErr_t talWriteToLog(void *devHalInfo, adiLogLevel_t logLevel, uint32_t errorCode, const char *comment)
|
||||
{
|
||||
adiHalErr_t halError = ADIHAL_OK;
|
||||
|
||||
halError = ADIHAL_writeToLog(devHalInfo, logLevel, errorCode, comment);
|
||||
|
||||
return halError;
|
||||
}
|
||||
Executable
+163
@@ -0,0 +1,163 @@
|
||||
/**
|
||||
* \file talise_hal.h
|
||||
* \brief Contains prototypes and macro definitions for Private ADI HAL wrapper
|
||||
* functions implemented in talise_hal.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_HAL_H_
|
||||
#define TALISE_HAL_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "../adi_hal/adi_hal.h"
|
||||
|
||||
#define HAL_TIMEOUT_DEFAULT 100 /* 100ms */
|
||||
#define HAL_TIMEOUT_NONE 0x0 /* Non-blocking */
|
||||
#define HAL_TIMEOUT_INFINITE 0xFFFFFFFF /* Blocking */
|
||||
#define HAL_TIMEOUT_MULT 2 /* HAL timeout worse-case factor */
|
||||
|
||||
/**
|
||||
* \brief Private wrapper function for ADIHAL_spiReadField with error handling
|
||||
*
|
||||
* This function can be called any time after devHalInfo has been initialized
|
||||
* with valid settings by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param devHalInfo Pointer to device HAL information container
|
||||
* \param addr 16-bit SPI address
|
||||
* \param fieldVal Pointer to byte read-back value
|
||||
* \param mask Bit mask for desired field
|
||||
* \param startBit Starting bit position for field mask operation
|
||||
*
|
||||
* \retval Returns adiHalErr_t enumerated type
|
||||
*/
|
||||
adiHalErr_t talSpiReadField(void *devHalInfo, uint16_t addr, uint8_t *fieldVal, uint8_t mask, uint8_t startBit);
|
||||
|
||||
/**
|
||||
* \brief Private Wrapper function for ADIHAL_spiWriteField with error handling
|
||||
*
|
||||
* This function can be called any time after the devHalInfo has been initialized
|
||||
* with valid settings by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param devHalInfo Pointer to device HAL information container
|
||||
* \param addr 16-bit SPI address
|
||||
* \param fieldVal Byte value to be written
|
||||
* \param mask Bit mask for desired field
|
||||
* \param startBit Starting bit position for field mask operation
|
||||
*
|
||||
* \retval Returns adiHalErr_t enumerated type
|
||||
*/
|
||||
adiHalErr_t talSpiWriteField(void *devHalInfo, uint16_t addr, uint8_t fieldVal, uint8_t mask, uint8_t startBit);
|
||||
|
||||
/**
|
||||
* \brief Private Wrapper function for ADIHAL_writeToLog with error handling
|
||||
*
|
||||
* This function can be called any time after the devHalInfo has been initialized
|
||||
* with valid settings by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param devHalInfo Pointer to device HAL information container
|
||||
* \param logLevel Enumerated type to distinguish logging level
|
||||
* \param errorCode Error code value to be written to log file
|
||||
* \param comment String pointer to error reporting comment string
|
||||
*
|
||||
* \retval Returns adiHalErr_t enumerated type
|
||||
*/
|
||||
adiHalErr_t talWriteToLog(void *devHalInfo, adiLogLevel_t logLevel, uint32_t errorCode, const char *comment);
|
||||
|
||||
/**
|
||||
* \brief Private Wrapper function for ADIHAL_spiWriteByte with error handling
|
||||
*
|
||||
* This function can be called any time after the devHalInfo has been initialized
|
||||
* with valid settings by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param devHalInfo Pointer to device HAL information container
|
||||
* \param addr 16-bit SPI address
|
||||
* \param data Byte to be written to addr
|
||||
*
|
||||
* \retval Returns adiHalErr_t enumerated type
|
||||
*/
|
||||
adiHalErr_t talSpiWriteByte(void *devHalInfo, uint16_t addr, uint8_t data);
|
||||
|
||||
/**
|
||||
* \brief Wrapper function for ADIHAL_spiReadByte with error handling
|
||||
*
|
||||
* This function can be called any time after the devHalInfo has been initialized
|
||||
* with valid settings by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param devHalInfo Pointer to device HAL information container
|
||||
* \param addr 16-bit SPI address
|
||||
* \param readdata Pointer to byte value read from addr
|
||||
*
|
||||
* \retval Returns adiHalErr_t enumerated type
|
||||
*/
|
||||
adiHalErr_t talSpiReadByte(void *devHalInfo, uint16_t addr, uint8_t *readdata);
|
||||
|
||||
/**
|
||||
* \brief Wrapper function for ADIHAL_spiWriteBytes with error handling
|
||||
*
|
||||
* This function can be called any time after the devHalInfo has been initialized
|
||||
* with valid settings by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param devHalInfo Pointer to device HAL information container
|
||||
* \param addr 16-bit SPI address
|
||||
* \param data Pointer to byte array to be written starting at addr
|
||||
* \param count Number of bytes to be written
|
||||
*
|
||||
* \retval Returns adiHalErr_t enumerated type
|
||||
*/
|
||||
adiHalErr_t talSpiWriteBytes(void *devHalInfo, uint16_t *addr, uint8_t *data, uint32_t count);
|
||||
|
||||
/**
|
||||
* \brief Wrapper function for ADIHAL_spiReadBytes with error handling
|
||||
*
|
||||
* This function can be called any time after the devHalInfo has been initialized
|
||||
* with valid settings by the user
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param devHalInfo Pointer to device HAL information container
|
||||
* \param addr 16-bit SPI address
|
||||
* \param readdata Pointer to byte array for storing read data starting at addr
|
||||
* \param count Number of bytes to be read
|
||||
*
|
||||
* \retval Returns adiHalErr_t enumerated type
|
||||
*/
|
||||
adiHalErr_t talSpiReadBytes(void *devHalInfo, uint16_t *addr, uint8_t *readdata, uint32_t count);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_HAL_H_ */
|
||||
Binary file not shown.
Executable
+2775
File diff suppressed because it is too large
Load Diff
Executable
+799
@@ -0,0 +1,799 @@
|
||||
/**
|
||||
* \file talise_jesd204.h
|
||||
* \brief Contains Talise JESD204b data path related function prototypes for
|
||||
* talise_jesd204.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_JESD204_H_
|
||||
#define TALISE_JESD204_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
#include "talise_jesd204_types.h"
|
||||
#include "talise_tx_types.h"
|
||||
#include "talise_error_types.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Initialization functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Sets up the JESD204B Serializers
|
||||
*
|
||||
* This function uses init->rx.framerSel and init->obsRx.framerSel to determine
|
||||
* the framerA and framerB structures settings to use to setup the correct serializer
|
||||
* lanes that are shared between the two framers. This function configures the following
|
||||
* for the serializers:
|
||||
* 1) Sets the serializer lane clock frequency
|
||||
* 2) Powers up the requested serializer lanes
|
||||
* 3) Resets the powered up serializers
|
||||
* 4) Sets the serializers preEmphasis
|
||||
* 5) Sets the serializers amplitude
|
||||
* 6) Sets the serializer PN invert setting per lane
|
||||
*
|
||||
* Since the Rx and ORx IQ data rates can be different, and the serializers are shared between
|
||||
* the two framers, the serializer lane clock is set for the faster of the two
|
||||
* framer rates. The framers will automatically oversample or bit repeat to
|
||||
* account for the clock rate difference, depending on the oversample framer parameter. The
|
||||
* oversample mode is only needed if Rx and ORx share the same framer and have different
|
||||
* IQ sample rates.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{init->rx (most members)}
|
||||
* \dep{init->obsRx (most members)}
|
||||
* \dep{init->jesd204Settings (most members)}
|
||||
* \dep{init->clocks.clkPllVcoFreq_kHz}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the device settings structure
|
||||
* \param init Pointer to the device initialization settings structure
|
||||
*
|
||||
* \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_setupSerializers(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief Sets up the JESD204B Deserializers
|
||||
*
|
||||
* This function is called automatically by TALISE_initialize() if the Tx profile is valid.
|
||||
* This function enables the necessary deserializer lanes, sets the deserializer clocks
|
||||
* PN inversion settings, and EQ settings based on the info found in the device data structure.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{init->tx.deframerSel}
|
||||
* \dep{init->jesd204Settings (most members)}
|
||||
* \dep{init->tx.txProfile.txInputRate_kHz}
|
||||
* \dep{init->clocks.clkPllVcoFreq_kHz}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the device settings structure
|
||||
* \param init Pointer to the device initialization settings data structure
|
||||
*
|
||||
* \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_setupDeserializers(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief Sets up the JESD204B Framer
|
||||
*
|
||||
* If the number of converters, M = 0 or no lanes are enabled, then the framer will be disabled.
|
||||
* Otherwise, the framer selected in the framerSelect parameter will be configured based on the
|
||||
* settings in the data structure.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{init->rxChannels}
|
||||
* \dep{init->jesd204Settings.framerA :All members}
|
||||
* \dep{init->jesd204Settings.framerB :All members}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the device settings structure
|
||||
* \param init Pointer to init settings for this Talise instance
|
||||
* \param framerSel Select the framer to configure (TAL_FRAMER_A or TAL_FRAMER_B)
|
||||
*
|
||||
* \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_setupJesd204bFramer(taliseDevice_t *device, taliseInit_t *init, taliseFramerSel_t framerSel);
|
||||
|
||||
/**
|
||||
* \brief Sets up the JESD204B Deframer
|
||||
*
|
||||
* This function updates the JESD204B deframer settings.
|
||||
*
|
||||
* \pre This function is private and is not called directly by the user.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{init->jesd204Settings}
|
||||
* \dep{init->tx}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to device settings data structure
|
||||
* \param init Pointer to device initialization settings data structure
|
||||
* \param deframerSel Desired deframer to configure
|
||||
*
|
||||
* \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_setupJesd204bDeframer(taliseDevice_t *device, taliseInit_t *init, taliseDeframerSel_t deframerSel);
|
||||
|
||||
/**
|
||||
* \brief Enables/Disables the JESD204B Framer
|
||||
*
|
||||
* This function is normally not necessary. In the event that the link needs to be reset, this
|
||||
* function allows a framer to be disabled and re-enabled.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param framerSel Desired framer to reset.
|
||||
* \param enable 0 = Disable the selected framer, 1 = enable the selected framer link
|
||||
*
|
||||
* \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_enableFramerLink(taliseDevice_t *device, taliseFramerSel_t framerSel, uint8_t enable);
|
||||
|
||||
/**
|
||||
* \brief Enables/Disables the JESD204B Deframer
|
||||
*
|
||||
* This function is normally not necessary. In the event that the link needs to be reset, this
|
||||
* function allows a deframer to be disabled and re-enabled. During disable, the lane FIFOs
|
||||
* for the selected deframer are also disabled. When the deframer link is enabled, the
|
||||
* lane FIFOs for the selected deframer are re-enabled (reset). The BBIC should send valid
|
||||
* serializer data before enabling the link so the Talise CDR (recovered clock) is locked.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talised device settings data structure
|
||||
* \param deframerSel Desired deframer to reset.
|
||||
* \param enable 0 = Disable the selected deframer, 1 = enable the selected deframer link
|
||||
*
|
||||
* \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_enableDeframerLink(taliseDevice_t *device, taliseDeframerSel_t deframerSel, uint8_t enable);
|
||||
|
||||
/**
|
||||
* \brief Enables or disables the external SYSREF JESD204b signal to the transceiver's framers
|
||||
*
|
||||
* For the framer to retime its LMFC (local multi frame clock), a SYSREF rising edge is required.
|
||||
* The external SYSREF signal at the pin can be gated off internally so the framer does not see
|
||||
* a potential invalid SYSREF pulse before it is configured correctly.
|
||||
*
|
||||
* By default Talise has the SYSREF signal ungated, however, the Talise Multichip Sync state machine
|
||||
* still does not allow the external SYSREF to reach the framer until the other stages of multichip
|
||||
* sync have completed. As long as the external SYSREF is correctly configured before performing MCS,
|
||||
* this function may not be needed by the BBIC, since the MCS state machine gates the SYSREF to the
|
||||
* framer.
|
||||
*
|
||||
* \pre This function is called after the device has been initialized and the JESD204B framer is enabled
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param framerSel Select framer to enable/disable SYSREF input for (Valid TAL_FRAMER_A, TAL_FRAMER_B or TAL_FRAMER_A_AND_B)
|
||||
* \param enable = '1' enables SYSREF to deframer, '0' disables SYSREF to deframer
|
||||
*
|
||||
* \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_enableSysrefToFramer(taliseDevice_t *device, taliseFramerSel_t framerSel, uint8_t enable);
|
||||
|
||||
/**
|
||||
* \brief Enables or disables the external SYSREF JESD204b signal to the transceiver's deframers
|
||||
*
|
||||
* \pre This function is called after the device has been initialized and the JESD204B deframer is enabled
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param deframerSel Select deframer to enable/disable SYSREF input for (Valid TAL_DEFRAMER_A, TAL_DEFRAMER_B or TAL_DEFRAMER_A_AND_B)
|
||||
* \param enable = '1' enables SYSREF to deframer, '0' disables SYSREF to deframer
|
||||
*
|
||||
* \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_enableSysrefToDeframer(taliseDevice_t *device, taliseDeframerSel_t deframerSel, uint8_t enable);
|
||||
|
||||
/**
|
||||
* \brief Reads the Talise framer status for the framer selected by the framerSel input parameter
|
||||
*
|
||||
* \pre The Rx JESD204B link(s) needs to be configured and running to use this function
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* framerStatus | Description
|
||||
* -------------|-----------------------------------------------------------------------------
|
||||
* [6] | Flag indicating that configuration parameters are not supported when set(1). Valid only on C0 or higher silicon revisions. This field is set to 0 for lower revisions.
|
||||
* [5] | JESD204 Negative Edge Count for SYNC 0 = not greater than zero, 1 = greater than zero
|
||||
* [4] | Reserved (0)
|
||||
* [3] | SYNCB IN select (which SYNCB IN pin is used by the requested framer) 0 = SYNCBIN0, 1 = SYNCBIN1
|
||||
* [2] | Current SYNCBIN level (1= high, 0 = low)
|
||||
* [1] | SYSREF phase error ? a new SYSREF had different timing than the first that set the LMFC timing.
|
||||
* [0] | SYSREF received by framer
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param framerSel Read back the framer status of the selected framer (A or B)
|
||||
* \param framerStatus is the RX framer status byte read
|
||||
*
|
||||
* \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_readFramerStatus(taliseDevice_t *device, taliseFramerSel_t framerSel, uint8_t *framerStatus);
|
||||
|
||||
/**
|
||||
* \brief Reads the status of the requested deframer
|
||||
*
|
||||
* \pre The Tx JESD204B link(s) needs to be configured and running to use this function
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* deframerStatus | Bit Name | Description
|
||||
* ----------------|--------------------------|---------------------------------------------
|
||||
* [8] | Tx JESD Config Invalid | Flag indicating that configuration parameters are not supported when set(1). Valid only on C0 or higher silicon revisions. This field is set to 0 for lower revisions.
|
||||
* [7] | Valid checksum | 1 if the checksum calculated by the Talise matched the one sent in the ILAS data.
|
||||
* [6] | EOF Event | This bit captures the internal status of the framer End of Frame event. Value =1 if framing error during ILAS
|
||||
* [5] | EOMF Event | This bit captures the internal status of the framer End of Multi-Frame event. Value =1 if framing error during ILAS
|
||||
* [4] | FS Lost | This bit captures the internal status of the framer Frame Symbol event. Value =1 if framing error during ILAS or user data (invalid replacement characters)
|
||||
* [3] | LMFC out | Not useful to read across SPI
|
||||
* [2] | User Data Valid | =1 when in user data (deframer link is up and sending valid DAC data)
|
||||
* [1] | SYSREF Received | Deframer has received the external SYSREF signal
|
||||
* [0] | Sync Error | A link synchronization error occurred
|
||||
*
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param deframerSel Select the deframer to read back the status of
|
||||
* \param deframerStatus 8bit deframer status word return value
|
||||
*
|
||||
* \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_readDeframerStatus(taliseDevice_t *device, taliseDeframerSel_t deframerSel, uint16_t *deframerStatus);
|
||||
|
||||
/****************************************************************************
|
||||
* Runtime functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Helper functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Sets the DAC sample crossbar
|
||||
*
|
||||
* \pre This function is called during JESD204B initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param channelSel is a taliseTxChannels_t enumerated data type for DAC crossbar channel selection, where only TX1 or TX2 are valid choices
|
||||
* \param dacXbar is taliseDacSampleXbar_t enumerated data type used to map any deframer output to a specific DAC channel I or Q converter input for Tx
|
||||
*
|
||||
* In the event that less than four (4) DACs are enabled for deframing, the least significant deframer outputs are used
|
||||
*
|
||||
* \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_setupDacSampleXbar(taliseDevice_t *device, taliseTxChannels_t channelSel, taliseDacSampleXbar_t dacXbar);
|
||||
|
||||
/**
|
||||
* \brief Sets the ADC sample crossbar to map Rx1/Rx2/ORx1/ORx2 'I/Q' data to
|
||||
* the chosen JESD204B framer's converter
|
||||
*
|
||||
* \pre This function is called during JESD204B initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param framerSel selects framer A or framer B to set the ADC crossbar on
|
||||
* it's input where only TAL_FRAMER_A or TAL_FRAMER_B are valid choices
|
||||
* \param adcXbar is the ADC crossbar setting for the framer of choice
|
||||
*
|
||||
* The adcXbar is a structure of crossbar settings for the eight converters
|
||||
* The settings use the taliseAdcSampleXbarSelect_t enumerated type
|
||||
*
|
||||
* \retval Returns uint32_t value of the enumerated type talRecoveryActions_t
|
||||
* TALACT_NO_ACTION indicates the API completed successfully. Any other value indicates
|
||||
* an error with a recommended Recovery action.
|
||||
*/
|
||||
uint32_t TALISE_setupAdcSampleXbar(taliseDevice_t *device, taliseFramerSel_t framerSel, taliseAdcSampleXbar_t adcXbar);
|
||||
/****************************************************************************
|
||||
* Debug functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Selects the PRBS type and enables or disables RX Framer PRBS generation
|
||||
*
|
||||
* This is a debug function to be used for debug of the Rx JESD204B lanes.
|
||||
* Rx data transmission on the JESD204B link(s) is not possible
|
||||
* when the framer test data is activated. To disable PRBS call this function
|
||||
* again with the framer data source set to FTD_ADC_DATA.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param framerSelect select the framer of interest, FRAMER_A, FRAMER_B, or FRAMER_A_AND_B
|
||||
* \param testDataSource selects the desired test data pattern (normal data path = FTD_ADC_DATA)
|
||||
* \param injectPoint Point in data path to inject the test data.
|
||||
* PRBS data should be injected into serializer for physical
|
||||
* layer testing.
|
||||
*
|
||||
* \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_enableFramerTestData(taliseDevice_t *device, taliseFramerSel_t framerSelect, taliseFramerDataSource_t testDataSource, taliseFramerInjectPoint_t injectPoint);
|
||||
|
||||
/**
|
||||
* \brief Injects an error into the Framer test data by inverting the data
|
||||
*
|
||||
* This is a debug function to be used for debug of the the Rx JESD204B lanes.
|
||||
* Rx data transmission on the JESD204B link(s) is not possible
|
||||
* when the framer test data is activated.
|
||||
*
|
||||
* \pre This function is called after the framer test data is enabled.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param framerSelect Select the desired framer (TAL_FRAMER_A or TAL_FRAMER_B), TAL_FRAMER_A_AND_B not supported
|
||||
*
|
||||
* \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_injectFramerTestDataError(taliseDevice_t *device, taliseFramerSel_t framerSelect);
|
||||
|
||||
/**
|
||||
* \brief Configures and enables or disables the transceiver's lane/sample PRBS
|
||||
* checker.
|
||||
*
|
||||
* This is a debug function to be used for debug of the Tx JESD204B lanes.
|
||||
* The Tx link(s) need to be configured and on to use this function. If the
|
||||
* checkerLocation is TAL_PRBSCHECK_LANEDATA, the PRBS is checked at the
|
||||
* output of the deserializer. If the checkLocation is TAL_PRBSCHECK_SAMPLEDATA
|
||||
* the PRBS data is expected to be framed JESD204b data and the PRBS is checked
|
||||
* after the JESD204b data is deframed. For the sample data, there is only
|
||||
* a PRBS checker on deframer output 0. The lane PRBS has a checker on each
|
||||
* deserializer lane.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param polyOrder selects the PRBS type based on enum values (TAL_PRBS_DISABLE, TAL_PRBS7, TAL_PRBS15, TAL_PRBS31)
|
||||
* \param checkerLocation Check at deserializer (framer0 input) or sample (framer 0 output).
|
||||
*
|
||||
* \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_enableDeframerPrbsChecker(taliseDevice_t *device, taliseDeframerPrbsOrder_t polyOrder, taliseDefPrbsCheckLoc_t checkerLocation);
|
||||
|
||||
/**
|
||||
* \brief Clears the deserializer lane and deframer sample PRBS error counters
|
||||
*
|
||||
* \pre The Tx JESD204B link(s) needs to be configured and running to use this function
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
*
|
||||
* \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_clearDeframerPrbsCounters(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Reads the deserializer lane or deframer sample PRBS counters
|
||||
*
|
||||
* In the case that the PRBS checker is set to check at the deframer output
|
||||
* sample, there is only a checker on the Deframer Sample 0 output. In this
|
||||
* case the lane function parameter is ignored and the sample 0 PRBS counter
|
||||
* is returned.
|
||||
*
|
||||
* \pre The Tx JESD204B link(s) needs to be configured and running to use this function
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param lane Specify which lane to read the counter back for. (Valid 0-3)
|
||||
* \param prbsErrorCount Pointer to single uint8_t variable that returns the
|
||||
* 8-bit PRBS error count
|
||||
*
|
||||
* \param prbsInvertedStatus Pointer to single uint8_t variable that returns
|
||||
* the bitmask indicating PRBS sequence is valid but inverted.
|
||||
*
|
||||
* prbsInvertedStatus | Description
|
||||
* -------------------|---------------------------------------------
|
||||
* [3] | Lane3 PRBS sequence is valid but inverted
|
||||
* [2] | Lane2 PRBS sequence is valid but inverted
|
||||
* [1] | Lane1 PRBS sequence is valid but inverted
|
||||
* [0] | Lane0 PRBS sequence is valid but inverted
|
||||
*
|
||||
*
|
||||
* \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_readDeframerPrbsCounters(taliseDevice_t *device, uint8_t lane, uint8_t *prbsErrorCount, uint8_t *prbsInvertedStatus);
|
||||
|
||||
/**
|
||||
* \brief Compares received Lane0 ILAS configuration to Talise deframer
|
||||
* configuration and returns 32-bit mask indicating values that
|
||||
* mismatched. Actual lane0 ILAS configuration and deframer
|
||||
* configuration values can be obtained by passing a pointer to a
|
||||
* structure of type taliseJesd204bLane0Config_t to the dfrmCfg and
|
||||
* dfrmIlas function parameters individually or together. Passing NULL
|
||||
* to either of these parameters will result in no values returned for
|
||||
* that parameter.
|
||||
*
|
||||
* \pre The Rx JESD204B link(s) needs to be configured and running to use
|
||||
* this function
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* mismatch Mask| Description
|
||||
* -------------|------------------------------------------
|
||||
* [17] | Lane3 Checksum, 0 = match, 1 = mismatch
|
||||
* [16] | Lane2 Checksum, 0 = match, 1 = mismatch
|
||||
* [15] | Lane1 Checksum, 0 = match, 1 = mismatch
|
||||
* [14] | Lane0 Checksum, 0 = match, 1 = mismatch
|
||||
* [13] | HD, 0 = match, 1 = mismatch
|
||||
* [12] | CF, 0 = match, 1 = mismatch
|
||||
* [11] | S, 0 = match, 1 = mismatch
|
||||
* [10] | NP, 0 = match, 1 = mismatch
|
||||
* [9] | CS, 0 = match, 1 = mismatch
|
||||
* [8] | N, 0 = match, 1 = mismatch
|
||||
* [7] | M, 0 = match, 1 = mismatch
|
||||
* [6] | K, 0 = match, 1 = mismatch
|
||||
* [5] | F, 0 = match, 1 = mismatch
|
||||
* [4] | SCR, 0 = match, 1 = mismatch
|
||||
* [3] | L, 0 = match, 1 = mismatch
|
||||
* [2] | LID0, 0 = match, 1 = mismatch
|
||||
* [1] | BID, 0 = match, 1 = mismatch
|
||||
* [0] | DID, 0 = match, 1 = mismatch
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param deframerSelect Enum indicating which deframer to address.
|
||||
* \param mismatch Pointer to a single uint32_t variable for reporting the ILAS
|
||||
* match status. Always returned.
|
||||
*
|
||||
* \param dfrmCfg Pointer to a taliseJesd204bLane0Config_t structure that
|
||||
* returns the deframer configuration settings. If NULL, data
|
||||
* is not returned to the pointer.
|
||||
*
|
||||
* \param dfrmIlas Pointer to a taliseJesd204bLane0Config_t structure that
|
||||
* returns the received Lane0 ILAS settings. If NULL, no data
|
||||
* is returned to this pointer.
|
||||
*
|
||||
* \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_getDfrmIlasMismatch(taliseDevice_t *device, taliseDeframerSel_t deframerSelect, uint32_t *mismatch, taliseJesd204bLane0Config_t *dfrmCfg, taliseJesd204bLane0Config_t *dfrmIlas);
|
||||
|
||||
/**
|
||||
* \brief Reads the IRQ interrupt clear register of the specified deframer.
|
||||
* This function reads the contents of the deframer IRQ clear register. Use this function whenever a general purpose (GP)
|
||||
* deframer IRQ asserts to find the maskable deframer IRQ sources. Note: Deframer IRQ sources Elastic Buffer Error Flag,
|
||||
* Sysref Buffer Error, and the four Lane FIFO Async Error IRQ sources are always enabled and can not be masked in the
|
||||
* interrupt clear register.
|
||||
*
|
||||
* \pre This function may be called any time after JESD204B link initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param deframerSelect selects the deframer to interrogate.
|
||||
* \param irqMask is a pointer to the bit mask value containing the contents of the deframer IRQ Clear Register
|
||||
*
|
||||
* Bit | Description
|
||||
* -------------|-----------------------------------------------------------------------------
|
||||
* [8] | CMM - Reserved
|
||||
* [7] | BD - Bad Disparity error counter 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [6] | Not-In-Table error counter 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [5] | Unexpected K error counter 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [4] | ILD - Inter-lane De-skew 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [3] | ILS - Initial lane synce 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [2] | GCS - Good Check Sum 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [1] | FS - Frame Sync 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [0] | CSG - Code Group Sync 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
*
|
||||
*
|
||||
* \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_getDfrmIrqMask(taliseDevice_t *device, taliseDeframerSel_t deframerSelect, uint16_t *irqMask);
|
||||
|
||||
/**
|
||||
* \brief Writes the IRQ interrupt clear register of the specified deframer.
|
||||
* This function writes the specified IRQ mask value to the deframer IRQ clear register. Use this function whenever a general purpose (GP)
|
||||
* deframer IRQ asserts to clear the pending maskable deframer IRQ or to enable/disable deframer interrupt sources. Note: Deframer IRQ sources
|
||||
* Elastic Buffer Error Flag, Sysref Buffer Error, and the four Lane FIFO Async Error IRQ sources are always enabled and can not be masked in the
|
||||
* interrupt clear register. This function does not read-modify-write the interrupt clear register. To manually clear the interrupt, write
|
||||
* a one (set) to disable or mask the bit of the interrupt followed by writing a zero (clear) to enable the bit of the interrupt. However, if the interrupt condition
|
||||
* still exists after setting the mask bit, the corresponding IRQ vector bit will re-assert.
|
||||
*
|
||||
* \pre This function may be called any time after Jesd204B link initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param deframerSelect selects the deframer to interrogate.
|
||||
* \param irqMask is the bit mask value to be written to the deframer IRQ Clear Register (this is not a read-modify-write)
|
||||
*
|
||||
* Bit | Description
|
||||
* -------------|-----------------------------------------------------------------------------
|
||||
* [8] | CMM - Reserved
|
||||
* [7] | BD - Bad Disparity error counter 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
* [6] | Not-In-Table error counter 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
* [5] | Unexpected K error counter 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
* [4] | ILD - Inter-lane De-skew 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
* [3] | ILS - Initial lane sync 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
* [2] | GCS - Good Check Sum 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
* [1] | FS - Frame Sync 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
* [0] | CSG - Code Group Sync 1 = Disable/Clear Interrupt, 0 = Enable Interrupt to assert corresponding bit in IRQ Vector Register
|
||||
*
|
||||
*
|
||||
* \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_setDfrmIrqMask(taliseDevice_t *device, taliseDeframerSel_t deframerSelect, uint16_t irqMask);
|
||||
|
||||
/**
|
||||
* \brief Write the IRQ interrupt clear register for the specified deframer.
|
||||
* This function clears all deframer IRQ sources. Use this function whenever a general purpose (GP)
|
||||
* deframer IRQ asserts to clear the pending deframer IRQ.
|
||||
*
|
||||
* \pre This function may be called any time after JESD204 link initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param deframerSelect selects the deframer to interrogate.
|
||||
*
|
||||
* \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_clearDfrmIrq(taliseDevice_t *device, taliseDeframerSel_t deframerSelect);
|
||||
|
||||
/**
|
||||
* \brief Read the IRQ interrupt source registers for the specified deframer.
|
||||
* This function fetches the contents of the deframer IRQ Vector register and other IRQ sources. Use this function whenever
|
||||
* a general purpose (GP) deframer IRQ asserts to determine the source of the deframer IRQ. Common IRQ sources are Bad Disparity (BD),
|
||||
* Not-In_Table (NIT), and Unexpected K-char (UEK) counters greater than the specified error threshold count value.
|
||||
*
|
||||
* \pre This function may be called any time after JESD204 link initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param deframerSelect selects the deframer to interrogate.
|
||||
* \param irqSourceValue is a pointer to a bit mask containing the status of the IRQ Vector source register at read time.
|
||||
*
|
||||
* Bit | Description
|
||||
* -------------|-----------------------------------------------------------------------------
|
||||
* [14] | Lane3 Fifo Async Error - Set when lane pointers have come out of alignment during write or clear
|
||||
* [13] | Lane2 Fifo Async Error - Set when lane pointers have come out of alignment during write or clear
|
||||
* [12] | Lane1 Fifo Async Error - Set when lane pointers have come out of alignment during write or clear
|
||||
* [11] | Lane0 Fifo Async Error - Set when lane pointers have come out of alignment during write or clear
|
||||
* [10] | Sysref Phase Error - Set when sysref is misaligned to global LMFC
|
||||
* [9] | Elastic Buffer Error Flag - Set when pointer come out of alignment during write or clear
|
||||
* [8] | CMM - Configuration mismatch for lane0 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [7] | BD - Bad Disparity error counter 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [6] | Not-In-Table error counter 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [5] | Unexpected K error counter 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [4] | ILD - Inter-lane De-skew 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [3] | ILS - Initial lane synce 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [2] | GCS - Good Check Sum 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [1] | FS - Frame Sync 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
* [0] | CSG - Code Group Sync 0 = No Interrupt, 1 = Interrupt Asserted
|
||||
*
|
||||
*
|
||||
* \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_getDfrmIrqSource(taliseDevice_t *device, taliseDeframerSel_t deframerSelect, uint16_t *irqSourceValue);
|
||||
|
||||
/**
|
||||
* \brief Private function for scanning deframer error counters to report which lane number is reporting an counter overflow.
|
||||
*
|
||||
* \pre This function may be called any time a deframer is reporting an error counter terminal count reached interrupt.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param deframer selects the deframer to interrogate.
|
||||
* \param deframerInputsMask is a pointer to the deframer inputs bitmask
|
||||
* indicating the input that is reporting an error. Note that these are
|
||||
* not phyiscal lanes, but are inputs to the deframer after the lane
|
||||
* cross bar.
|
||||
*
|
||||
* bit | Lane
|
||||
* -----|----------------
|
||||
* 0 | deframer Input 0
|
||||
* 1 | deframer Input 1
|
||||
* 2 | deframer Input 2
|
||||
* 3 | deframer Input 3
|
||||
*
|
||||
* \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
|
||||
*/
|
||||
talRecoveryActions_t talFindDfrmrLaneCntErr(taliseDevice_t *device, taliseDeframerSel_t deframer, int32_t *deframerInputsMask);
|
||||
|
||||
/**
|
||||
* \brief Private function for scanning deframer error flags to report which lane number is reporting an error.
|
||||
*
|
||||
* \pre This function may be called any time a deframer is reporting an error interrupt.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is a pointer to the device settings structure
|
||||
* \param dfrmErrAddress deframer register address to interrogate.
|
||||
* \param nibbleToUse specify nibble to use
|
||||
* \param deframerInputsMask is a pointer to the deframer inputs bitmask
|
||||
* indicating the input that is reporting an error. Note that these are
|
||||
* not phyiscal lanes, but are inputs to the deframer after the lane
|
||||
* cross bar.
|
||||
*
|
||||
* bit | Lane
|
||||
* -----|------------------
|
||||
* 0 | deframer Input 0
|
||||
* 1 | deframer Input 1
|
||||
* 2 | deframer Input 2
|
||||
* 3 | deframer Input 3
|
||||
*
|
||||
* \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
|
||||
*/
|
||||
talRecoveryActions_t talFindDfrmrLaneErr(taliseDevice_t *device, uint32_t dfrmErrAddress, uint8_t nibbleToUse, int32_t *deframerInputsMask);
|
||||
|
||||
/**
|
||||
* \brief Manually toggles JESD204B framer SYNCB signal internal to framer
|
||||
*
|
||||
* NOTE: DO NOT USE THIS FUNCTION UNLESS INSTRUCTED TO BY AN ADI APPLICATIONS
|
||||
* ENGINEER.
|
||||
*
|
||||
* This function is normally not needed and should only be used when required
|
||||
* by the system hardware due to non-conformance to the JESD204B specification.
|
||||
*
|
||||
* Normally, during initialization, the framer moves from the CGS state to ILAS
|
||||
* state when the BBIC sends a rising edge on the SYNCB pin. In systems that
|
||||
* do not control the SYNCB per the JESD204B spec, this function allows a method
|
||||
* to toggle SYNCB internal to the Talise device framer, allowing valid high
|
||||
* speed serial data to start outputting from the Talise device.
|
||||
*
|
||||
* This function would be used during device initialization when the JESD204B
|
||||
* links are being initialized, after enabling the Talise framer link, and
|
||||
* after sending a SYSREF pulse.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param framerSel Enum to select framer to apply SYNCB reset to
|
||||
*
|
||||
* \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_framerSyncbToggle(taliseDevice_t *device, taliseFramerSel_t framerSel);
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_JESD204_H_ */
|
||||
Binary file not shown.
Executable
+245
@@ -0,0 +1,245 @@
|
||||
/**
|
||||
* \file talise_jesd204_types.h
|
||||
* \brief Contains Talise API JESD data types
|
||||
*
|
||||
* 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_JESD204_TYPES_H_
|
||||
#define TALISE_JESD204_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Enum to select desired framer
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_FRAMER_A = 0, /*!< Framer A selection */
|
||||
TAL_FRAMER_B, /*!< Framer B selection */
|
||||
TAL_FRAMER_A_AND_B /*!< Used for cases where Rx1 uses one framer, Rx2 uses the second framer */
|
||||
} taliseFramerSel_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to select desired deframer
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_DEFRAMER_A = 0, /*!< Deframer A selection */
|
||||
TAL_DEFRAMER_B, /*!< Deframer B selection */
|
||||
TAL_DEFRAMER_A_AND_B /*!< Used for cases where Tx1 uses one deframer, Tx2 uses the second deframer */
|
||||
} taliseDeframerSel_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of DAC Sample Xbar options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_DEFRAMERA_OUT0 = 0x0, /*!< Link 0, Deframer out 0 */
|
||||
TAL_DEFRAMERA_OUT1 = 0x1, /*!< Link 0, Deframer out 1 */
|
||||
TAL_DEFRAMERA_OUT2 = 0x2, /*!< Link 0, Deframer out 2 */
|
||||
TAL_DEFRAMERA_OUT3 = 0x3, /*!< Link 0, Deframer out 3 */
|
||||
TAL_DEFRAMERB_OUT0 = 0x4, /*!< Link 1, Deframer out 0 */
|
||||
TAL_DEFRAMERB_OUT1 = 0x5, /*!< Link 1, Deframer out 1 */
|
||||
TAL_DEFRAMERB_OUT2 = 0x6, /*!< Link 1, Deframer out 2 */
|
||||
TAL_DEFRAMERB_OUT3 = 0x7 /*!< Link 1, Deframer out 3 */
|
||||
} taliseDacSampleXbarSelect_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of ADC Sample Xbar options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ADC_RX1_I = 0x0, /*!< Rx1 I data */
|
||||
TAL_ADC_RX1_Q = 0x1, /*!< Rx1 Q data */
|
||||
TAL_ADC_RX2_I = 0x2, /*!< Rx2 I data */
|
||||
TAL_ADC_RX2_Q = 0x3, /*!< Rx2 Q data */
|
||||
TAL_ADC_DUALBAND_RX1_BAND_A_I = 0x0, /*!< Dualband Rx1 Band A I data */
|
||||
TAL_ADC_DUALBAND_RX1_BAND_A_Q = 0x1, /*!< Dualband Rx1 Band A Q data */
|
||||
TAL_ADC_DUALBAND_RX2_BAND_A_I = 0x2, /*!< Dualband Rx2 Band A I data */
|
||||
TAL_ADC_DUALBAND_RX2_BAND_A_Q = 0x3, /*!< Dualband Rx2 Band A Q data */
|
||||
TAL_ADC_DUALBAND_RX1_BAND_B_I = 0x4, /*!< Dualband Rx1 Band B I data */
|
||||
TAL_ADC_DUALBAND_RX1_BAND_B_Q = 0x5, /*!< Dualband Rx1 Band B Q data */
|
||||
TAL_ADC_DUALBAND_RX2_BAND_B_I = 0x6, /*!< Dualband Rx2 Band B I data */
|
||||
TAL_ADC_DUALBAND_RX2_BAND_B_Q = 0x7 /*!< Dualband Rx2 Band B Q data */
|
||||
|
||||
} taliseAdcSampleXbarSelect_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Framer Test Data sources
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_FTD_ADC_DATA = 0, /*!< Framer test data ADC data source */
|
||||
TAL_FTD_CHECKERBOARD, /*!< Framer test data checkerboard data source */
|
||||
TAL_FTD_TOGGLE0_1, /*!< Framer test data toggle 0 to 1 data source */
|
||||
TAL_FTD_PRBS31, /*!< Framer test data PRBS31 data source */
|
||||
TAL_FTD_PRBS23, /*!< Framer test data PRBS23 data source */
|
||||
TAL_FTD_PRBS15, /*!< Framer test data PRBS15 data source */
|
||||
TAL_FTD_PRBS9, /*!< Framer test data PRBS9 data source */
|
||||
TAL_FTD_PRBS7, /*!< Framer test data PRBS7 data source */
|
||||
TAL_FTD_RAMP /*!< Framer test data ramp data source */
|
||||
|
||||
} taliseFramerDataSource_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of Framer test data injection points
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_FTD_FRAMERINPUT = 0, /*!< Framer test data injection point at framer input */
|
||||
TAL_FTD_SERIALIZER, /*!< Framer test data injection point at serializer input */
|
||||
TAL_FTD_POST_LANEMAP /*!< Framer test data injection point after lane mapping */
|
||||
|
||||
} taliseFramerInjectPoint_t;
|
||||
|
||||
/**
|
||||
* \brief Enum for JESD204B PRBS generated types
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_PRBS_DISABLE = 0, /*!< Deframer PRBS pattern disable */
|
||||
TAL_PRBS7, /*!< Deframer PRBS7 pattern select */
|
||||
TAL_PRBS15, /*!< Deframer PRBS15 pattern select */
|
||||
TAL_PRBS31 /*!< Deframer PRBS31 pattern select */
|
||||
|
||||
} taliseDeframerPrbsOrder_t;
|
||||
|
||||
/**
|
||||
* \brief Enum for JESD204B deserializer / deframer PRBS selection
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_PRBSCHECK_LANEDATA = 0, /*!< Check PRBS at deserializer lane output (does not require JESD204b link) */
|
||||
TAL_PRBSCHECK_SAMPLEDATA /*!< Check PRBS at output of deframer (JESD204b deframed sample) */
|
||||
|
||||
} taliseDefPrbsCheckLoc_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold the DAC sample crossbar information
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseDacSampleXbarSelect_t dacChanI; /*!< Sample Crossbar select for I channel data*/
|
||||
taliseDacSampleXbarSelect_t dacChanQ; /*!< Sample Crossbar select for Q channel data*/
|
||||
} taliseDacSampleXbar_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold the ADC sample crossbar information
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseAdcSampleXbarSelect_t conv0; /*!< Sample Crossbar select for converter 0*/
|
||||
taliseAdcSampleXbarSelect_t conv1; /*!< Sample Crossbar select for converter 1*/
|
||||
taliseAdcSampleXbarSelect_t conv2; /*!< Sample Crossbar select for converter 2*/
|
||||
taliseAdcSampleXbarSelect_t conv3; /*!< Sample Crossbar select for converter 3*/
|
||||
taliseAdcSampleXbarSelect_t conv4; /*!< Sample Crossbar select for converter 4*/
|
||||
taliseAdcSampleXbarSelect_t conv5; /*!< Sample Crossbar select for converter 5*/
|
||||
taliseAdcSampleXbarSelect_t conv6; /*!< Sample Crossbar select for converter 6*/
|
||||
taliseAdcSampleXbarSelect_t conv7; /*!< Sample Crossbar select for converter 7*/
|
||||
} taliseAdcSampleXbar_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise JESD204b DeFramer ILAS configuration settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t DID; /*!< JESD204B Configuration Device ID for ILAS check */
|
||||
uint8_t BID; /*!< JESD204B Configuration Bank ID for ILAS check */
|
||||
uint8_t LID0; /*!< JESD204B Configuration starting Lane ID for ILAS check */
|
||||
uint8_t L; /*!< JESD204B Configuration L = lanes per data converter for ILAS check */
|
||||
uint8_t SCR; /*!< JESD204B Configuration scramble setting for ILAS check */
|
||||
uint8_t F; /*!< JESD204B Configuration F = octets per frame for ILAS check */
|
||||
uint8_t K; /*!< JESD204B Configuration K = frames per multiframe for ILAS check */
|
||||
uint8_t M; /*!< JESD204B Configuration M = number of data converters for ILAS check */
|
||||
uint8_t N; /*!< JESD204B Configuration N = data converter sample resolution for ILAS check */
|
||||
uint8_t CS; /*!< JESD204B Configuration CS = number of control bits transferred per sample per frame for ILAS check */
|
||||
uint8_t NP; /*!< JESD204B Configuration NP = JESD204B word size based on the highest resolution of the data converter for ILAS check */
|
||||
uint8_t S; /*!< JESD204B Configuration S = number of samples/data converter/frame for ILAS check */
|
||||
uint8_t CF; /*!< JESD204B Configuration CF = '0' = control bits appended to each sample, '1' = appended to end of frame for ILAS check */
|
||||
uint8_t HD; /*!< JESD204B Configuration HD = high density bit - samples are contained within lane (0) or divided over more than one lane (1) for ILAS check */
|
||||
uint8_t FCHK0; /*!< JESD204B Configuration checksum for ILAS check lane0 */
|
||||
uint8_t FCHK1; /*!< JESD204B Configuration checksum for ILAS check lane1 */
|
||||
uint8_t FCHK2; /*!< JESD204B Configuration checksum for ILAS check lane2 */
|
||||
uint8_t FCHK3; /*!< JESD204B Configuration checksum for ILAS check lane3 */
|
||||
} taliseJesd204bLane0Config_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise JESD204b Framer configuration settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t bankId; /*!< JESD204B Configuration Bank ID extension to Device ID. Range is 0..15 */
|
||||
uint8_t deviceId; /*!< JESD204B Configuration Device ID link identification number. Range is 0..255 */
|
||||
uint8_t lane0Id; /*!< JESD204B Configuration starting Lane ID. If more than one lane is used, each lane will increment from the Lane0 ID. Range is 0..31 */
|
||||
uint8_t M; /*!< Number of ADCs (0, 2, or 4) where 2 ADCs are required per receive chain (I and Q) */
|
||||
uint8_t K; /*!< Number of frames in a multiframe. Default = 32, F*K must be modulo 4. Where, F=2*M/numberOfLanes */
|
||||
uint8_t F; /*!< Number of bytes(octets) per frame (Valid 1, 2, 4, 8) */
|
||||
uint8_t Np; /*!< converter sample resolution (12, 16, 24) */
|
||||
uint8_t scramble; /*!< Scrambling off if framerScramble = 0, if framerScramble > 0 scrambling is enabled */
|
||||
uint8_t externalSysref; /*!< External SYSREF select. 0 = use internal SYSREF(not currently valid), 1 = use external SYSREF */
|
||||
uint8_t serializerLanesEnabled; /*!< Serializer lane select bit field. Where, [0] = Lane0 enabled, [1] = Lane1 enabled, etc */
|
||||
uint8_t serializerLaneCrossbar; /*!< Lane crossbar to map framer lane outputs to physical lanes */
|
||||
uint8_t lmfcOffset; /*!< LMFC offset value for deterministic latency setting. Range is 0..31 */
|
||||
uint8_t newSysrefOnRelink; /*!< Flag for determining if SYSREF on relink should be set. Where, if > 0 = set, 0 = not set */
|
||||
uint8_t syncbInSelect; /*!< Selects SYNCb input source. Where, 0 = use SYNCBIN0 for this framer, 1 = use SYNCBIN1 for this framer */
|
||||
uint8_t overSample; /*!< Selects framer bit repeat or oversampling mode for lane rate matching. Where, 0 = bitRepeat mode (changes effective lanerate), 1 = overSample (maintains same lane rate between ObsRx framer and Rx framer and oversamples the ADC samples) */
|
||||
uint8_t syncbInLvdsMode; /*!< 1 - enable LVDS input pad with 100ohm internal termination, 0 - enable CMOS input pad */
|
||||
uint8_t syncbInLvdsPnInvert; /*!< 0 - syncb LVDS PN not inverted, 1 - syncb LVDS PN inverted */
|
||||
uint8_t enableManualLaneXbar; /*!< 0 - Automatic Lane crossbar mapping, 1 - Manual Lane crossbar mapping (use serializerLaneCrossbar value with no checking) */
|
||||
} taliseJesd204bFramerConfig_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold the settings for the deframer configuration
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t bankId; /*!< Extension to Device ID. Range is 0..15 */
|
||||
uint8_t deviceId; /*!< Link identification number. Range is 0..255 */
|
||||
uint8_t lane0Id; /*!< Lane0 ID. Range is 0..31 */
|
||||
uint8_t M; /*!< Number of DACs (0, 2, or 4) - 2 DACs per transmit chain (I and Q) */
|
||||
uint8_t K; /*!< Number of frames in a multiframe. Default = 32, F*K = modulo 4. Where, F=2*M/numberOfLanes */
|
||||
uint8_t scramble; /*!< Scrambling off if scramble = 0, if framerScramble > 0 scrambling is enabled */
|
||||
uint8_t externalSysref; /*!< External SYSREF select. 0 = use internal SYSREF, 1 = external SYSREF */
|
||||
uint8_t deserializerLanesEnabled; /*!< Deserializer lane select bit field. Where, [0] = Lane0 enabled, [1] = Lane1 enabled, etc */
|
||||
uint8_t deserializerLaneCrossbar; /*!< Lane crossbar to map deframer lane outputs to physical lanes */
|
||||
uint8_t lmfcOffset; /*!< LMFC offset value to adjust deterministic latency. Range is 0..31 */
|
||||
uint8_t newSysrefOnRelink; /*!< Flag for determining if SYSREF on relink should be set. Where, if > 0 = set, '0' = not set */
|
||||
uint8_t syncbOutSelect; /*!< Selects deframer SYNCBOUT pin (0 = SYNCBOUT0, 1 = SYNCBOUT1) */
|
||||
uint8_t Np; /*!< converter sample resolution (12, 16) */
|
||||
uint8_t syncbOutLvdsMode; /*!< 1 - enable LVDS output pad, 0 - enable CMOS output pad */
|
||||
uint8_t syncbOutLvdsPnInvert; /*!< 0 - syncb LVDS PN not inverted, 1 - syncb LVDS PN inverted */
|
||||
uint8_t syncbOutCmosSlewRate; /*!< 0 - fastest rise/fall times, 3 - slowest rise/fall times */
|
||||
uint8_t syncbOutCmosDriveLevel; /*!< 0 - normal cmos drive level, 1 - double cmos drive level */
|
||||
uint8_t enableManualLaneXbar; /*!< 0 - Automatic Lane crossbar mapping, 1 - Manual Lane crossbar mapping (use deserializerLaneCrossbar value with no checking) */
|
||||
} taliseJesd204bDeframerConfig_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise JESD204b Framer and Deframer configuration information
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseJesd204bFramerConfig_t framerA; /*!< Framer A configuration data structure */
|
||||
taliseJesd204bFramerConfig_t framerB; /*!< Framer B configuration data structure */
|
||||
taliseJesd204bDeframerConfig_t deframerA; /*!< Deframer A configuration data structure */
|
||||
taliseJesd204bDeframerConfig_t deframerB; /*!< Deframer A configuration data structure */
|
||||
uint8_t serAmplitude; /*!< Serializer amplitude setting. Default = 15. Range is 0..15 */
|
||||
uint8_t serPreEmphasis; /*!< Serializer pre-emphasis setting. Default = 1 Range is 0..4 */
|
||||
uint8_t serInvertLanePolarity; /*!< Serializer Lane PN inversion select. Default = 0. Where, bit[0] = 1 will invert lane [0], bit[1] = 1 will invert lane 1, etc. */
|
||||
uint8_t desInvertLanePolarity; /*!< Deserializer Lane PN inversion select. bit[0] = 1 Invert PN of Lane 0, bit[1] = Invert PN of Lane 1, etc */
|
||||
uint8_t desEqSetting; /*!< Deserializer Equalizer setting. Applied to all deserializer lanes. Range is 0..2 (default 2, 0 = max boost) */
|
||||
uint8_t sysrefLvdsMode; /*!< 1 - enable LVDS Input pad with 100ohm internal termination, 0 - enable CMOS input pad */
|
||||
uint8_t sysrefLvdsPnInvert; /*!< 0 - sysref LVDS PN is not inverted, 1 - sysref LVDS PN is inverted */
|
||||
} taliseJesdSettings_t;
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_JESD204_TYPES_H_ */
|
||||
Executable
+2470
File diff suppressed because it is too large
Load Diff
Executable
+950
@@ -0,0 +1,950 @@
|
||||
/**
|
||||
* \file talise_radioctrl.h
|
||||
* \brief Contains Talise related function prototypes for talise_radioctrl.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_RADIOCTRL_H_
|
||||
#define TALISE_RADIOCTRL_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
#include "talise_radioctrl_types.h"
|
||||
#include "talise_tx_types.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Initialization functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Loads binary array into stream processor data memory
|
||||
*
|
||||
* A 4096 element byte array is passed into this function. The byte array is
|
||||
* obtained by reading the binary stream processor file provided by Analog
|
||||
* Devices. The stream processor uses the information in the stream file to
|
||||
* properly power up and down the various signal chains.
|
||||
*
|
||||
* \pre This function is called after the device has been initialized, and PLL
|
||||
* lock status has been verified
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device is structure pointer to the Talise data structure containing settings
|
||||
* \param binary is a byte array containing the parsed stream processor binary file
|
||||
*
|
||||
* \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_loadStreamFromBinary(taliseDevice_t *device, uint8_t *binary);
|
||||
|
||||
/**
|
||||
* \brief Instructs the Talise ARM which GPIO pins are used for TDD pin control
|
||||
*
|
||||
* The Talise can control any of these related signals by sending an ARM command, or
|
||||
* the Talise ARM signals can be routed to GPIO pins. Each signal in the armGpio
|
||||
* structure has an enable member. If the enable member is set, the Talise ARM
|
||||
* will expect the BBP to drive that signal on the specified GPIO pin. The
|
||||
* signals can be intermixed - some on GPIO pins, and some set by ARM command.
|
||||
*
|
||||
* The BBP should call this function after loading the ARM processor
|
||||
* TALISE_loadArmFromBinary() function call. If the BBP wishes to change the GPIO
|
||||
* assignments this function can be called again to change the configuration while
|
||||
* the ARM is in the radioOff state. This function also sets the Talise GPIO pin
|
||||
* direction for any GPIO pins that are enabled in this function.
|
||||
*
|
||||
* \pre This function can be called after loading Talise ARM binary, but before
|
||||
* entering radioOn during initialization.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise data structure containing settings
|
||||
* \param armGpio Pointer to structure that describes which GPIO pins/settings to use for each possible ARM GPIO signal
|
||||
*
|
||||
* \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_setArmGpioPins(taliseDevice_t *device, taliseArmGpioConfig_t *armGpio);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Sets the Tx, Rx, and ORx radio control bit mask for pin mode control
|
||||
*
|
||||
* This function should be used in the radio off state.
|
||||
*
|
||||
* \pre This function may be called after the device has been fully initialized
|
||||
* any time during run-time operation, but only after the ARM and GPIO
|
||||
* have been configured
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param pinOptionsMask is comprised of or'd taliseRadioCtlCfg1_t enumerated types for
|
||||
* radio control configuration register 1:
|
||||
* TAL_TXRX_PIN_MODE = 0x01: selects Tx and Rx signaling via pins
|
||||
* TAL_ORX_PIN_MODE = 0x02: selects ORx signaling via pins
|
||||
* TAL_ORX_USES_RX_PINS = 0x04: selects if Rx pins are used to indicate ORx mode activation/deactivation
|
||||
* TAL_ORX_SEL = 0x10: selects ORx2 (1), when not used defaults to ORx1 (0)
|
||||
* TAL_ORX_SINGLE_CHANNEL = 0x20: selects SPI to choose ORx channel and single pin to enable ORx mode
|
||||
* TAL_ORX_ENAB_SEL_PIN = 0x40: selects the pin from the GPIO pin pair for ORx enable
|
||||
*
|
||||
* \param orxEnGpioPinSel is a taliseRadioCtlCfg2_t enumerated type
|
||||
* which selects one of three possible GPIO pin pair combinations:
|
||||
* TAL_ORX1ORX2_PAIR_01_SEL = 0x00: GPIO pin pair (0,1) assigned to ORx1 and ORx2 respectively
|
||||
* TAL_ORX1ORX2_PAIR_45_SEL = 0x01: GPIO pin pair (4,5) assigned to ORx1 and ORx2 respectively
|
||||
* TAL_ORX1ORX2_PAIR_89_SEL = 0x02: GPIO pin pair (8,9) assigned to ORx1 and ORx2 respectively
|
||||
* TAL_ORX1ORX2_PAIR_NONE_SEL = 0x03: no GPIO pins selected
|
||||
*
|
||||
* \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_setRadioCtlPinMode(taliseDevice_t *device, uint8_t pinOptionsMask, taliseRadioCtlCfg2_t orxEnGpioPinSel);
|
||||
|
||||
/**
|
||||
* \brief Reads back the Tx, Rx, and ORx radio control bit mask for pin mode
|
||||
* control
|
||||
* This function can be called from the radio off or radio on state.
|
||||
*
|
||||
* \pre This function may be called after the device has been fully initialized
|
||||
* any time during run-time operation, but only after the ARM and GPIO
|
||||
* have been configured
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param pinOptionsMask Return bitmask comprised of or'd taliseRadioCtlCfg1_t enumerated types for
|
||||
* radio control configuration register 1:
|
||||
* TAL_TXRX_PIN_MODE = 0x01: selects Tx and Rx signaling via pins
|
||||
* TAL_ORX_PIN_MODE = 0x02: selects ORx signaling via pins
|
||||
* TAL_ORX_USES_RX_PINS = 0x04: selects if Rx pins are used to indicate ORx mode activation/deactivation
|
||||
* TAL_ORX_SEL = 0x10: selects ORx2 (1), when not used defaults to ORx1 (0)
|
||||
* TAL_ORX_SINGLE_CHANNEL = 0x20: selects SPI to choose ORx channel and single pin to enable ORx mode
|
||||
* TAL_ORX_ENAB_SEL_PIN = 0x40: selects the pin from the GPIO pin pair for ORx enable
|
||||
*
|
||||
* \param orxEnGpioPinSel is a taliseRadioCtlCfg2_t enumerated type
|
||||
* which selects one of three possible GPIO pin pair combinations:
|
||||
* TAL_ORX1ORX2_PAIR_01_SEL = 0x00: GPIO pin pair (0,1) assigned to ORx1 and ORx2 respectively
|
||||
* TAL_ORX1ORX2_PAIR_45_SEL = 0x01: GPIO pin pair (4,5) assigned to ORx1 and ORx2 respectively
|
||||
* TAL_ORX1ORX2_PAIR_89_SEL = 0x02: GPIO pin pair (8,9) assigned to ORx1 and ORx2 respectively
|
||||
* TAL_ORX1ORX2_PAIR_NONE_SEL = 0x03: no GPIO pins selected
|
||||
*
|
||||
* \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_getRadioCtlPinMode(taliseDevice_t *device, uint8_t *pinOptionsMask, taliseRadioCtlCfg2_t *orxEnGpioPinSel);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Sets the ORx LO (local oscillator) source (RFPLL or AuxPLL) settings.
|
||||
*
|
||||
* This function can optionally be called during the application layers init
|
||||
* sequence if it is desired to use the AuxLO for the Observation receiver, or
|
||||
* if it is desired to be able to switch the ORx LO between the RFPLL and
|
||||
* AuxLO. If this function is not called, the ORx LO will use the RFPLL.
|
||||
*
|
||||
* In certain cases, it may be useful for the BBIC to use the AuxLO on the ORx
|
||||
* receiver to offset the ORx receive data from the Tx data, which uses RFPLL.
|
||||
* This can help in separate the Tx LO leakage from the ORx DC offset to improve
|
||||
* calibration performance.
|
||||
*
|
||||
* If this feature is enabled, note that the Talise trackings calibrations
|
||||
* will be limited or not usable, as some of the Talise tracking cals require
|
||||
* using the AuxLO.
|
||||
*
|
||||
* If this function is enabled to set the ORx LO source to AuxLO, the BBIC can
|
||||
* control the ORx Lo source either using the TALISE_setOrxLoSource() function
|
||||
* or by assigning a GPIO pin (GPIO0-15), where the pin level determines the
|
||||
* LO source. If real time ORx LO source control is required, the pin mode
|
||||
* is recommended. Assigning the orxLoCfg->gpioSelect = TAL_GPIO_INVALID
|
||||
* disables pin mode.
|
||||
*
|
||||
* NOTE: When the LO source is changed(either by API or GPIO pin),
|
||||
* the setting does not take affect until the ORx rising edge to power up the
|
||||
* ORx channel(s). If the LO source is changed while ORx is powered up, the
|
||||
* LO source will not take affect until ORx is disabled and re-enabled. This is
|
||||
* valid when using pins to set the LO source and control when ORx is enabled as
|
||||
* well.
|
||||
*
|
||||
* \pre This function should be called after loading the ARM, but before
|
||||
* running init calibrations. The AuxLO frequency must also be set
|
||||
* after setting the RFPLL frequency, but before init cals. This function
|
||||
* can be called in the ARM READY(before init cals) or Radio off state.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param orxLoCfg Structure to provide desired settings for this feature
|
||||
*
|
||||
* \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_setOrxLoCfg(taliseDevice_t *device, const taliseOrxLoCfg_t *orxLoCfg);
|
||||
|
||||
/**
|
||||
* \brief Gets the ORx LO (local oscillator) source (RFPLL or AuxPLL)
|
||||
*
|
||||
* This function can be used to read back the ORx LO config set by the
|
||||
* TALISE_setOrxLoCfg() function.
|
||||
*
|
||||
* \pre This function can be called anytime after TALISE_setOrxLoCfg() has been
|
||||
* called. This function can be called in the ARM READY(before init cals)
|
||||
* or Radio off state.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param orxLoCfg Structure to return settings readback for this feature
|
||||
*
|
||||
* \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_getOrxLoCfg(taliseDevice_t *device, taliseOrxLoCfg_t *orxLoCfg);
|
||||
|
||||
/****************************************************************************
|
||||
* Runtime functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Instructs the ARM processor to move the radio state to the Radio ON state
|
||||
*
|
||||
* When the ARM to the Radio On state, the enabled Rx and Tx signal chains will power up,
|
||||
* and the ARM tracking calibrations will begin. To exit this state back to a low power,
|
||||
* off-line state, call the TALISE_radioOff() function.
|
||||
*
|
||||
* \pre This function is called 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.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
*
|
||||
* \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 user ARM reset required
|
||||
* \retval TALACT_ERR_RERUN_INIT_CALS Recovery action to re-run init calibrations required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_radioOn(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Instructs the ARM processor to move the radio state to the off state
|
||||
*
|
||||
* When the ARM moves from the Radio On state to Radio Off (Idle) the ARM tracking calibrations
|
||||
* are stopped and the TxEnable/RxEnable, etc GPIO control pins will be ignored. This will also
|
||||
* keep the receive and transmit chains powered down until the TALISE_radioOn() function
|
||||
* is called again.
|
||||
*
|
||||
* \pre This function may be called any time TALISE_radioOn had been called previously
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
|
||||
* \param device Pointer to the device settings structure
|
||||
*
|
||||
* \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_radioOff(taliseDevice_t *device);
|
||||
|
||||
/**
|
||||
* \brief Reads the current ARM radio state
|
||||
*
|
||||
* Currently, *radioStatus only returns data in the lower 8 bits, but
|
||||
* is defined as a 32-bit status word to permit future bitfield expansion.
|
||||
*
|
||||
* Bits | Bitfield
|
||||
* -------------------------
|
||||
* 1:0 | State[1:0], 0 = POWERUP, 1 = READY, 2 = IDLE, 3 = RADIO ON
|
||||
* 2 | Indicates invalid Rx/Tx/ORx profile information was loaded into ARM memory during init/ARM powerup
|
||||
* 7:3 | unused
|
||||
*
|
||||
* \pre This function may be called any time after full device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param radioStatus The current ARM radio state is returned in this parameter
|
||||
*
|
||||
* \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_getRadioState(taliseDevice_t *device, uint32_t *radioStatus);
|
||||
|
||||
/**
|
||||
* \brief This API sets the Rx/ORx/Tx channels to be enabled or disabled in the
|
||||
* transceiver
|
||||
*
|
||||
* For use cases where pin mode is not required, this function can be used to
|
||||
* enable/disable the Rx/ORx/Tx signal paths while in the radioOn state. This
|
||||
* function should be called after initialization and loading the stream
|
||||
* processor. Rx and ORx channels can not be enabled at the same time. Also
|
||||
* ORx1 and ORx2 at the same time is not currently a supported option, but may
|
||||
* be supported later when the ORx profile has a lower bandwidth and does not
|
||||
* require ADC stitching.
|
||||
*
|
||||
* \pre This function can be called after entering radioOn. During radioOff, all
|
||||
* transmit and receive chains are forced off.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param rxOrxChannel Desired Rx/ORx signal chain (channel) to power up.
|
||||
* Either Rx or ORx, not both at the same time.
|
||||
* \param txChannel Desired Tx signal chains (channel) to power up
|
||||
*
|
||||
* \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_setRxTxEnable(taliseDevice_t *device, taliseRxORxChannels_t rxOrxChannel, taliseTxChannels_t txChannel);
|
||||
|
||||
/**
|
||||
* \brief This API reads back the Rx/ORx/Tx channels that are powered up in the
|
||||
* transceiver
|
||||
*
|
||||
* For use cases where pin mode is not required, this function can be used to
|
||||
* read the current state of the Rx/ORx/Tx channel enable (power up) signals.
|
||||
* This function should be called after initialization and loading the stream
|
||||
* processor.
|
||||
*
|
||||
* \pre This function can be called after entering radioOn. During radioOff, all
|
||||
* transmit /receive chains are forced off.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param rxOrxChannel Current Rx/ORx signal chains enabled returned to this pointer address
|
||||
* \param txChannel Current Tx signal chains enabled 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_getRxTxEnable(taliseDevice_t *device, taliseRxORxChannels_t *rxOrxChannel, taliseTxChannels_t *txChannel);
|
||||
|
||||
/**
|
||||
* \brief Sets the Tx to ORx external signal routing for external LOL initialization calibrations and tracking calibrations
|
||||
*
|
||||
* Two pins define the Tx to ORx mappings. Each of these pins can be individually configured using GPIO.
|
||||
* The BBIC can toggle the GPIO pins directly to specify which Tx channel is observable on either
|
||||
* ORx channel. However, in the case of the lack of GPIO pins a command mode can be invoked to perform this task.
|
||||
* This function uses the command mode to map the Tx to ORx routing.
|
||||
*
|
||||
* \pre This function may be called after the ARM has been initialized and loaded. But, before initialization
|
||||
* calibrations are run because this is used for both the external LOL initialization and tracking calibrations.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param txCalEnable Enables Tx calibrations when set. '1' = run, '0' = off. This bit is ignored whenever
|
||||
* oRx1Map[0] = '0' or oRx2Map[0] = '0'
|
||||
*
|
||||
* \param oRx1Map enumerated type taliseTxToOrxMapping_t which maps either Tx1 or Tx2 to ORx1.
|
||||
* \param oRx2Map enumerated type taliseTxToOrxMapping_t which maps either Tx1 or Tx2 to ORx2.
|
||||
*
|
||||
* Both oRx1Map and oRx2Map use the taliseTxToOrxMapping_t enumerated type encoded as a bit-field:
|
||||
* TAL_MAP_NONE = 0x00 = No Tx at ORx input
|
||||
* (No ENUM) = 0x01 = No Tx at ORx input
|
||||
* TAL_MAP_TX1_ORX = 0x02 = Tx1 mapped to enabled ORx
|
||||
* TAL_MAP_TX2_ORX = 0x03 = Tx2 mapped to enabled ORx
|
||||
*
|
||||
* \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_ERR_RERUN_INIT_CALS Recovery action to re-run init calibrations required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setTxToOrxMapping(taliseDevice_t *device, uint8_t txCalEnable, taliseTxToOrxMapping_t oRx1Map, taliseTxToOrxMapping_t oRx2Map);
|
||||
|
||||
/**
|
||||
* \brief Sets the RF PLL local oscillator (LO) frequency (RF carrier frequency).
|
||||
*
|
||||
* \pre This function can be called after the ARM has been initialized, and
|
||||
* device must be in radioOff state.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param pllName Name of the PLL to configure based on the enumerated types in taliseRfPllName_t
|
||||
* \param rfPllLoFrequency_Hz Desired RF LO frequency in Hz
|
||||
*
|
||||
* \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 ARM reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setRfPllFrequency(taliseDevice_t *device, taliseRfPllName_t pllName, uint64_t rfPllLoFrequency_Hz);
|
||||
|
||||
/**
|
||||
* \brief Gets a PLL Local Oscillator (LO) frequency (RF carrier frequency).
|
||||
*
|
||||
* This function is used to get a PLL's current frequency. A taliseRfPllName_t enumerated type is passed for
|
||||
* the desired PLL frequency to read: RF_PLL, AUX_PLL, or CLK_PLL.
|
||||
*
|
||||
* \pre This function can be used after the device has been initialized and the
|
||||
* PLLs configured. For AUX_PLL or RF_PLL, the ARM firmware must also be
|
||||
* loaded and running to read back the PLL frequencies.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param pllName Name of the desired PLL to read the frequency
|
||||
* \param rfPllLoFrequency_Hz Current LO frequency for the PLL specified
|
||||
*
|
||||
* \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 ARM reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getRfPllFrequency(taliseDevice_t *device, taliseRfPllName_t pllName, uint64_t *rfPllLoFrequency_Hz);
|
||||
|
||||
/**
|
||||
* \brief Checks if the PLLs are locked
|
||||
*
|
||||
* This function returns the status of the Talise PLLs via the pllLockStatus pointer.
|
||||
* The 3 LSBs of the uint8_t value at pllLockStatus represent the lock status
|
||||
* of the CLK PLL, RF PLL and AUX PLL.
|
||||
*
|
||||
* pllLockStatus bit 0 = CLK PLL Lock status
|
||||
* pllLockStatus bit 1 = RF PLL Lock status
|
||||
* pllLockStatus bit 2 = AUX PLL Lock Status
|
||||
*
|
||||
* A bit value of 1 indicates the corresponding PLL is locked
|
||||
* A bit value of 0 indicates the corresponding PLL is unlocked.
|
||||
*
|
||||
* \pre This may be called any time after the PLLs have been configured and
|
||||
* are operational
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param pllLockStatus PLLs lock status byte pointer to return the bit wise representation of
|
||||
* the Talise PLLs lock 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_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getPllsLockStatus(taliseDevice_t *device, uint8_t *pllLockStatus);
|
||||
|
||||
/**
|
||||
* \brief Sets the configuration for the RF PLL loop filter
|
||||
*
|
||||
* \deprecated This function is deprecated. TALISE_setPllLoopFilter should be
|
||||
* used instead, as it allows setting the RF or Aux PLL loop
|
||||
* filter settings.
|
||||
*
|
||||
* \pre This function can be called after the ARM has been initialized, and
|
||||
* device must be in radioOff state. This function must be followed with a
|
||||
* TALISE_setRfPllFrequency function for the TAL_RF_PLL to set up the RF PLL
|
||||
* with the new configuration.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param loopBandwidth_kHz Desired loop bandwidth in kHz. Valid range is between
|
||||
* 50kHz and 750kHz.
|
||||
* \param stability Factor impacts noise and stability of the loop filter.
|
||||
* Valid range is between 3 and 15.
|
||||
* Lower the value, the lower the stability and higher the rejection of noise.
|
||||
*
|
||||
* \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 ARM reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setRfPllLoopFilter(taliseDevice_t *device, uint16_t loopBandwidth_kHz, uint8_t stability);
|
||||
|
||||
/**
|
||||
* \brief Gets the configuration for the RF PLL loop filter
|
||||
*
|
||||
* \deprecated This function is deprecated. TALISE_getPllLoopFilter should be
|
||||
* used instead, as it allows reading the RF or Aux PLL loop
|
||||
* filter settings.
|
||||
*
|
||||
* This function is used to get the current loop bandwidth and the stability
|
||||
* factor for the RF_PLL
|
||||
*
|
||||
* \pre This function can be used after the device has been initialized and the
|
||||
* RF_PLL configured. The ARM firmware must also be loaded and running.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param loopBandwidth_kHz Loop bandwidth of RFPLL in kHz
|
||||
* \param stability Factor impacts noise and stability of the loop filter.
|
||||
* Lower the value, the lower the stability and higher the rejection of noise.
|
||||
*
|
||||
* \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 ARM reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getRfPllLoopFilter(taliseDevice_t *device, uint16_t *loopBandwidth_kHz, uint8_t *stability);
|
||||
|
||||
/**
|
||||
* \brief Sets the loop filter bandwidth for the RFPLL or AuxPLL
|
||||
*
|
||||
* \pre This function can be called after the ARM has been initialized, and
|
||||
* device must be in radioOff state. This function must be followed with a
|
||||
* TALISE_setRfPllFrequency function for the selected PLL to set up the PLL
|
||||
* with the new loop filter settings.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param pllName Desired PLL to adjust loop filter settings for
|
||||
* \param loopBandwidth_kHz Desired loop bandwidth in kHz. Valid range is between
|
||||
* 50kHz and 750kHz.
|
||||
* \param stability Factor impacts noise and stability of the loop filter.
|
||||
* Valid range is between 3 and 15.
|
||||
* Lower the value, the lower the stability and higher the rejection of noise.
|
||||
*
|
||||
* \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 ARM reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setPllLoopFilter(taliseDevice_t *device, taliseRfPllName_t pllName, uint16_t loopBandwidth_kHz, uint8_t stability);
|
||||
|
||||
/**
|
||||
* \brief Gets the Loop filter settings for the RFPLL or Aux PLL loop filter
|
||||
*
|
||||
* This function is used to get the current loop bandwidth and the stability
|
||||
* factor for the RF or Aux PLL.
|
||||
*
|
||||
* \pre This function can be used after the device has been initialized and the
|
||||
* desired PLL configured. The ARM firmware must also be loaded and running.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param pllName Desired PLL to read back loop filter settings for
|
||||
* \param loopBandwidth_kHz Loop bandwidth of RFPLL in kHz
|
||||
* \param stability Factor impacts noise and stability of the loop filter.
|
||||
* Lower the value, the lower the stability and higher the rejection of noise.
|
||||
*
|
||||
* \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 ARM reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getPllLoopFilter(taliseDevice_t *device, taliseRfPllName_t pllName, uint16_t *loopBandwidth_kHz, uint8_t *stability);
|
||||
|
||||
/**
|
||||
* \brief Sets the ORx LO (local Oscillator) source (RF PLL or Aux PLL)
|
||||
*
|
||||
* NOTE: This function sets the LO source for ORx to RF PLL or Aux PLL, but
|
||||
* the setting does not take affect until the ORx rising edge to power up the
|
||||
* ORx channel(s). If the LO source is changed while ORx is powered up, the
|
||||
* LO source will not take affect until ORx is disabled and re-enabled. This is
|
||||
* valid when using pins to set the LO source and control when ORx is enabled as
|
||||
* well.
|
||||
*
|
||||
* \pre This function can be used after the device has been fully initialized
|
||||
* and the init cals have already run. This should only be called in the
|
||||
* radio Off state.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param orxLoSource Input parameter to choose the desired ORx LO source (RF PLL or Aux PLL)
|
||||
*
|
||||
* \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_setOrxLoSource(taliseDevice_t *device, taliseObsRxLoSource_t orxLoSource);
|
||||
|
||||
/**
|
||||
* \brief Gets the ORx LO (local Oscillator) source (RF PLL or Aux PLL)
|
||||
*
|
||||
* This function reads back the current ORx LO source (RF PLL or Aux PLL)
|
||||
*
|
||||
* \pre This function can be used after the device has been fully initialized
|
||||
* and the init cals have already run. This can be called in the
|
||||
* radio On or Off state.
|
||||
*
|
||||
* \note In radio Off, this function will read back RF PLL
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param orx1LoSource Returns ORx1 LO source (RFLO or AuxLO)
|
||||
* \param orx2LoSource Returns ORx2 LO source (RFLO or AuxLO)
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getOrxLoSource(taliseDevice_t *device, taliseObsRxLoSource_t *orx1LoSource, taliseObsRxLoSource_t *orx2LoSource);
|
||||
|
||||
/**
|
||||
* \brief This function configures frequency hop trigger GPIO input to ARM and
|
||||
* also the frequency hopping range.
|
||||
*
|
||||
* FHM trigger GPIO pin, frequency hopping minimum frequency and frequency hopping
|
||||
* maximum frequencies are configured by this function.
|
||||
*
|
||||
* Please note that only TAL_GPIO_00 - TAL_GPIO_15 are valid for frequency
|
||||
* hop trigger GPIO pin. If TAL_GPIO_INVALID is set, then the GPIO is
|
||||
* unassigned from FHM trigger functionality.
|
||||
*
|
||||
* \pre This function can be used after the device has been fully initialized
|
||||
* and the ARM processor is initialized. This function can
|
||||
* be called only in the radio Off state.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param fhmConfig pointer to FHM configuration data structure
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setFhmConfig(taliseDevice_t *device, taliseFhmConfig_t *fhmConfig);
|
||||
|
||||
/**
|
||||
* \brief This function retrieves the current FHM setting
|
||||
*
|
||||
* This function reads back FHM trigger GPIO pin, frequency hopping minimum frequency
|
||||
* and frequency hopping maximum frequencies.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param fhmConfig FHM configuration data structure pointer memory which will be
|
||||
* updated with the current FHM config
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getFhmConfig(taliseDevice_t *device, taliseFhmConfig_t *fhmConfig);
|
||||
|
||||
/**
|
||||
* \brief This function sets the mode for frequency hopping
|
||||
*
|
||||
* This function can be used to enable / disable frequency hopping
|
||||
* enable/disable MCS synchronization and sets the exit mode to quick/full
|
||||
* and the initial frequecy for hopping
|
||||
*
|
||||
* For Frequency Hopping, MCS calibration parameters are modified to
|
||||
* speed up calibration but are restored on exiting FHM mode
|
||||
*
|
||||
* PLL loop bandwidth is increased to 600KHz for FHM and on full exit the
|
||||
* PLL loop bandwidth will be resored to narrowband, RF and Aux PLLs recalibrated
|
||||
* and tracking cals resumed. In quick exit case, RF PLL loop bandwidth is left
|
||||
* unchanged.
|
||||
*
|
||||
* Please note that in order to switch modes, FHM mode has to be disabled first.
|
||||
*
|
||||
* \pre This function can be used after the device has been fully initialized
|
||||
* and the ARM processor is initialized and TALISE_setFhmConfig() is called.
|
||||
* This function can only be called in Radio On state.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param fhmMode Frequency hop mode settings
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setFhmMode(taliseDevice_t *device, taliseFhmMode_t *fhmMode);
|
||||
|
||||
/**
|
||||
* \brief This function retrieves the current FHM mode settings for frequency hopping
|
||||
*
|
||||
* This function can be used to read the current FHM configuration (current
|
||||
* status of FHM enable/disable, MCS synchronization and exit mode settings)
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param fhmMode Structure pointer to frequency hop mode settings to update
|
||||
* read back mode settings information.
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getFhmMode(taliseDevice_t *device, taliseFhmMode_t *fhmMode);
|
||||
|
||||
/**
|
||||
* \brief This function sets the next RF PLL LO hop frequency and
|
||||
* in a non-gpio mode sends a command to ARM to hop to next frequency
|
||||
*
|
||||
* This function sets the next RF PLL LO hop frequency for GPIO and Non-GPIO
|
||||
* modes and in case of a Non-GPIO mode, sends a command to the ARM processor
|
||||
* to trigger a frequency hop. In a GPIO mode the user is expected to transmit
|
||||
* a low to high pulse on the assigned GPIO to trigger a frequency hop after
|
||||
* calling this function.
|
||||
*
|
||||
* \pre This function can be called after the device has been fully initialized
|
||||
* and the ARM processor is initialized and FHM config is set via
|
||||
* TALISE_setFhmConfig() API and the FHM mode is set via
|
||||
* TALISE_setFhmMode() API. This API can be called only in Radio ON state
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param nextRfPllFrequency_Hz Next FHM mode hop frequency for RF PLL
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setFhmHop(taliseDevice_t *device, uint64_t nextRfPllFrequency_Hz);
|
||||
|
||||
/**
|
||||
* \brief This function allows the user to readback current RF PLL Frequency
|
||||
* in Frequency Hopping mode
|
||||
*
|
||||
* This function can be used to read the current Rf Pll frequency in fast
|
||||
* frequency hopping mode
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param fhmRfPllFrequency_Hz pointer to FHM hop frequency which will be updated
|
||||
* with the current Rf Pll frequency in hop mode
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getFhmRfPllFrequency(taliseDevice_t *device, uint64_t *fhmRfPllFrequency_Hz);
|
||||
|
||||
/**
|
||||
* \brief This function returns the current FHM status
|
||||
*
|
||||
* This function can be used to read the current FHM status. Please refer to taliseFhmStatus_t structure definition
|
||||
* for detailed description of status fields.
|
||||
*
|
||||
* Currently active FHM error status recorded is available in fhmStatus->currentFhmHopErrorStatus field
|
||||
* The table below gives information about the format of currentFhmHopErrorStatus
|
||||
*
|
||||
* fhmStatus->currentFhmHopErrorStatus | Error Info
|
||||
* -------------------------------------|---------------------------
|
||||
* bit[0] | Not Used
|
||||
* bit[1] | Not Used
|
||||
* bit[2] | Not Used
|
||||
* bit[3] | Not Used
|
||||
* bit[4] | Not Used
|
||||
* bit[5] | 1 = Invalid Scan Range specified, 0 = No invalid scan range encountered
|
||||
* bit[6] | 1 = Requested hop frequency outside scan range, 0 = No invalid hop freq requested
|
||||
* bit[7] | 1 = PLL Error, 0 = No PLL Error
|
||||
* bit[8] | 1 = Loop Filter algorithm failed to find solution, 0 = No loop filter alg error
|
||||
* bit[9] | 1 = Loop Filter invalid input parameter, 0 = No loop filter error
|
||||
* bit[10] | 1 = PLL LO computation error, 0 = No PLL LO computation error
|
||||
* bit[11] | 1 = RF PLL Lock failed, 0 = No RF PLL lock failures
|
||||
* bit[12] | 1 = Aux PLL Lock failed, 0 = No Aux PLL lock failures
|
||||
* bit[13] | 1 = General Error, 0 = No General Error
|
||||
* bit[14] | Not Used
|
||||
* bit[15] | Not Used
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param fhmStatus pointer to FHM status data structure where current arm status read back will be updated
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getFhmStatus(taliseDevice_t *device, taliseFhmStatus_t *fhmStatus);
|
||||
|
||||
/**
|
||||
* \brief This function enables/disables the external LO output and sets the
|
||||
* external LO output divider.
|
||||
*
|
||||
* This function selects the Ext LO output frequency by dividing from
|
||||
* (RFPLL VCO / 2). The RFPLL VCO is always in the range of 6G to 12G.
|
||||
* Therefore, the maximum Ext LO output frequency is 6G.
|
||||
*
|
||||
* To properly set the extLoOutDivide function parameter, the calling function
|
||||
* must know the RFPLL VCO frequency. The easiest way to calculate the RFPLL
|
||||
* VCO frequency is to multiply the RFPLL LO frequency that was set with a
|
||||
* power of 2 until in the 6G to 12G range.
|
||||
*
|
||||
* If the internal LO dividers for the RFPLL are changed with
|
||||
* TALISE_setRfPllFrequency() and the internal LO divider changes, it is likely this
|
||||
* function would need to be called again to scale extLoOutDivide as well to
|
||||
* handle boundary conditions.
|
||||
*
|
||||
* Boundary conditions exist at these frequencies: 3000 Mhz, 1500Mhz, 750Mhz,
|
||||
* 375Mhz, and 187.5Mhz. When the internal LO frequency moves across one of these
|
||||
* boundaries, the extLoOutDivide setting will need to be adjusted.
|
||||
*
|
||||
* If External LO Input mode is enabled, the External LO output can not be used,
|
||||
* as it shares the same pin on the device.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param enableExtLoOutput Enable/Disable the LO output buffer.
|
||||
* \param extLoOutDivide Sets external LO output frequency = (RFPLL VCO/2/extLoOutDivide)
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setExtLoOutCfg(taliseDevice_t *device, uint8_t enableExtLoOutput, taliseExtLoDiv_t extLoOutDivide);
|
||||
|
||||
/**
|
||||
* \brief This function reads back the enable status of the External LO output
|
||||
* and the external LO output divider setting.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure containing settings
|
||||
* \param enableExtLoOutput Readback of Enable/Disable the LO output buffer.
|
||||
* \param extLoOutDivide Readback of the external LO output divider
|
||||
*
|
||||
* \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 to debug why HAL layer timer returned an error
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getExtLoOutCfg(taliseDevice_t *device, uint8_t *enableExtLoOutput, taliseExtLoDiv_t *extLoOutDivide);
|
||||
/****************************************************************************
|
||||
* Helper functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Debug functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_RADIOCTRL_H_ */
|
||||
Binary file not shown.
Executable
+227
@@ -0,0 +1,227 @@
|
||||
/**
|
||||
* \file talise_radioctrl_types.h
|
||||
* \brief Contains Talise API Radio Control data types
|
||||
*
|
||||
* 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_RADIOCTRL_TYPES_H_
|
||||
#define TALISE_RADIOCTRL_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Enum to select desired low voltage GPIO pin used by the API
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_GPIO_00 = 0,
|
||||
TAL_GPIO_01,
|
||||
TAL_GPIO_02,
|
||||
TAL_GPIO_03,
|
||||
TAL_GPIO_04,
|
||||
TAL_GPIO_05,
|
||||
TAL_GPIO_06,
|
||||
TAL_GPIO_07,
|
||||
TAL_GPIO_08,
|
||||
TAL_GPIO_09,
|
||||
TAL_GPIO_10,
|
||||
TAL_GPIO_11,
|
||||
TAL_GPIO_12,
|
||||
TAL_GPIO_13,
|
||||
TAL_GPIO_14,
|
||||
TAL_GPIO_15,
|
||||
TAL_GPIO_16,
|
||||
TAL_GPIO_17,
|
||||
TAL_GPIO_18,
|
||||
TAL_GPIO_INVALID
|
||||
|
||||
} taliseGpioPinSel_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to select desired External LO output frequency = RFPLL VCO / 2 / ExtLoDiv
|
||||
* Where ExtLoDiv is a power of 2 from (1, 2, 4, 8, 16, 32, 64)
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_EXTLO_RFPLLVCO_DIV2 = 0, /*!< External LO output in frequency range 3000 MHz - 6000 MHz */
|
||||
TAL_EXTLO_RFPLLVCO_DIV4 = 1, /*!< External LO output in frequency range 1500 MHz - 3000 MHz */
|
||||
TAL_EXTLO_RFPLLVCO_DIV8 = 2, /*!< External LO output in frequency range 750 MHz - 1500 MHz */
|
||||
TAL_EXTLO_RFPLLVCO_DIV16 = 3, /*!< External LO output in frequency range 375 Mhz - 750 MHz */
|
||||
TAL_EXTLO_RFPLLVCO_DIV32 = 4, /*!< External LO output in frequency range 187.5 MHz - 375 MHz */
|
||||
TAL_EXTLO_RFPLLVCO_DIV64 = 5 /*!< External LO output in frequency range 93.75 MHz - 187.5 MHz */
|
||||
} taliseExtLoDiv_t;
|
||||
/**
|
||||
* \brief Data structure to hold ARM GPIO pin assignments, polarity, and pin enable for the Talise ARM
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseGpioPinSel_t gpioPinSel; /*!< Select desired GPIO pin to input into Talise (valid 0-15) */
|
||||
uint8_t polarity; /*!< Signal polarity (0 = Normal polarity, 1=Talise will invert the signal before using) */
|
||||
uint8_t enable; /*!< 1 = Enable Talise ARM use of GPIO signal, 0 = Talise ARM uses ARM command to set this signal value */
|
||||
|
||||
} taliseArmGpioPinSettings_t;
|
||||
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold ARM GPIO pin assignments for each ARM input/output pin.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
/* Talise ARM input GPIO pins -- Only valid if orxPinMode = 1 */
|
||||
taliseArmGpioPinSettings_t orx1TxSel0Pin; /*!< Select desired GPIO pin to input into Talise(valid 0-15), polarity, enable */
|
||||
taliseArmGpioPinSettings_t orx1TxSel1Pin; /*!< Select desired GPIO pin to input into Talise(valid 0-15), polarity, enable */
|
||||
taliseArmGpioPinSettings_t orx2TxSel0Pin; /*!< Select desired GPIO pin to input into Talise(valid 0-15), polarity, enable */
|
||||
taliseArmGpioPinSettings_t orx2TxSel1Pin; /*!< Select desired GPIO pin to input into Talise(valid 0-15), polarity, enable */
|
||||
taliseArmGpioPinSettings_t enTxTrackingCals; /*!< Select desired GPIO pin to input into Talise(valid 0-15), polarity, enable */
|
||||
|
||||
} taliseArmGpioConfig_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of Radio Control Config2 ORx1/ORx2 GPIO pin pair settings
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ORX1ORX2_PAIR_01_SEL = 0x00, /*!< Radio Control Config 2 ORx1/ORx2 GPIO '0,1' pin pair select */
|
||||
TAL_ORX1ORX2_PAIR_45_SEL, /*!< Radio Control Config 2 ORx1/ORx2 GPIO '4,5' pin pair select */
|
||||
TAL_ORX1ORX2_PAIR_89_SEL, /*!< Radio Control Config 2 ORx1/ORx2 GPIO '8,9' pin pair select */
|
||||
TAL_ORX1ORX2_PAIR_NONE_SEL /*!< Radio Control Config 2 ORx1/ORx2 GPIO 'none' pin pair select */
|
||||
|
||||
} taliseRadioCtlCfg2_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of Radio Control Config1 register bits
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_TXRX_PIN_MODE = 0x01, /*!< Radio Control Config 1 bit '0' mask */
|
||||
TAL_ORX_PIN_MODE = 0x02, /*!< Radio Control Config 1 bit '1' mask */
|
||||
TAL_ORX_USES_RX_PINS = 0x04, /*!< Radio Control Config 1 bit '2' mask */
|
||||
TAL_ORX_SEL = 0x10, /*!< Radio Control Config 1 bit '4' mask */
|
||||
TAL_ORX_SINGLE_CHANNEL = 0x20, /*!< Radio Control Config 1 bit '5' mask */
|
||||
TAL_ORX_ENAB_SEL_PIN = 0x40 /*!< Radio Control Config 1 bit '6' mask */
|
||||
} taliseRadioCtlCfg1_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Rx and ORx stream processor enables to be used with
|
||||
* the TALISE_setRxTxEnable() function
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_RXOFF_EN = 0x00, /*!< All Rx/ORx channels off */
|
||||
TAL_RX1_EN = 0x01, /*!< Rx1 channel enabled */
|
||||
TAL_RX2_EN = 0x02, /*!< Rx2 channel enabled */
|
||||
TAL_RX1RX2_EN = 0x03, /*!< Rx1 + Rx2 channels enabled */
|
||||
TAL_ORX1_EN = 0x04, /*!< ORx1 channel enabled */
|
||||
TAL_ORX2_EN = 0x08, /*!< ORx2 channel enabled */
|
||||
TAL_ORX1ORX2_EN = 0x0C /*!< ORx1 and ORx2 channels enabled - only allowed if ADC stitching is not enabled */
|
||||
|
||||
} taliseRxORxChannels_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of Tx to ORx mapping selections
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_MAP_NONE = 0, /*!< No Tx to ORx mapping select */
|
||||
TAL_MAP_TX1_ORX = 0x02, /*!< Tx1 to ORx mapping select */
|
||||
TAL_MAP_TX2_ORX = 0x03 /*!< Tx2 to ORx mapping select */
|
||||
|
||||
} taliseTxToOrxMapping_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of PLL selections
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_CLK_PLL = 0, /*!< Selects CLK PLL for Rx and Tx */
|
||||
TAL_RF_PLL, /*!< Selects RF PLL for Rx and Tx */
|
||||
TAL_AUX_PLL /*!< Selects AUX PLL for Rx and tx*/
|
||||
|
||||
} taliseRfPllName_t;
|
||||
|
||||
/**
|
||||
* \brief Structure to setup/enable ORx LO Selection feature
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t disableAuxPllRelocking; /*!< Disables the ARM from automatically relocking the Aux PLL.
|
||||
Set to 1 when using AuxLO as ORx LO source, 0 = default when RFPLL used as ORx LO source */
|
||||
taliseGpioPinSel_t gpioSelect; /*!< TAL_GPIO_INVALID = disable pin mode, GPIO0-15 valid */
|
||||
} taliseOrxLoCfg_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of FHM Exit Mode Selections
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_FHM_QUICK_EXIT = 0, /*!< Selects quick exit mode on frequency hopping disable. In this case RF PLL bandwidth is left unchanded */
|
||||
TAL_FHM_FULL_EXIT /*!< Selects full exit mode on frequency hopping disable. RF PLL Loop B/W is restored to narrowband.
|
||||
RF and Aux PLLs recalibrated and tracking cals resumed. */
|
||||
} taliseFhmExitMode_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of FHM Trigger Mode Selections
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_FHM_GPIO_MODE = 0, /*!< Selects FHM trigger mode as GPIO. A low to high pulse triggers frequency hop */
|
||||
TAL_FHM_NON_GPIO_MODE, /*!< Selects FHM trigger mode as non-GPIO. An ARM command triggers frequency hop */
|
||||
TAL_FHM_INVALID_TRIGGER_MODE
|
||||
} taliseFhmTriggerMode_t;
|
||||
|
||||
/**
|
||||
* \brief Structure to setup talise frequency hopping config
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseGpioPinSel_t fhmGpioPin; /*!< Maps the Talise ARM GPIO pin(TAL_GPIO_0 - TAL_GPIO_15) for frequency hopping. A low to high pulse on this pin triggers freq hopping
|
||||
Setting fhmGpioPin = TAL_GPIO_INVALID will unassign ARM GPIO pin mapped to Rf Pll Frequency hopping*/
|
||||
uint32_t fhmMinFreq_MHz; /*!< Sets frequency hopping range minimum frequency */
|
||||
uint32_t fhmMaxFreq_MHz; /*!< Sets frequency hopping range maximum frequency */
|
||||
} taliseFhmConfig_t;
|
||||
|
||||
/**
|
||||
* \brief Structure to setup talise frequency hopping mode settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t fhmEnable; /*!< 0 - Disables Frequency Hopping, 1 - Enables Frequency Hopping */
|
||||
uint8_t enableMcsSync; /*!< 0 - Disables MCS Synchronization on FHM enable, 1 - Enables MCS Synchronization on FHM enable. Ignored if fhmEnable = 0 */
|
||||
taliseFhmTriggerMode_t fhmTriggerMode; /*!< TAL_FHM_GPIO_MODE - Frequency Hop triggered via GPIO low to high pulse
|
||||
TAL_FHM_NON_GPIO_MODE - Frequency Hop triggered via ARM command*/
|
||||
taliseFhmExitMode_t fhmExitMode; /*!< TAL_FHM_QUICK_EXIT = quick exit on frequency hopping disable,
|
||||
TAL_FHM_FULL_EXIT = Full exit on frequency hopping disable. This is ignored if fhmEnable = 1*/
|
||||
uint64_t fhmInitFrequency_Hz; /*!< First hop frequency that Rf Pll is configured to on enabling FHM */
|
||||
} taliseFhmMode_t;
|
||||
|
||||
/**
|
||||
* \brief Structure to read talise frequency hopping mode status
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint16_t currentFhmCmdErrorStatus; /*!< Current FHM Enter Command Error Status. This is same as the mailbox command error status for FHM */
|
||||
uint16_t currentFhmHopErrorStatus; /*!< Currently active FHM errors during frequency hopping */
|
||||
uint32_t numFhmHops; /*!< Total no. of Hops since entering FHM */
|
||||
uint32_t numFhmNoErrorEvents; /*!< Total no. of NO FHM error events */
|
||||
uint64_t lastFhmNoErrorFreq_Hz; /*!< Last frequency for which NO Error was encountered */
|
||||
uint32_t numFhmHopsOutsideScanRange; /*!< Total no. of Hops outside FHM scan range */
|
||||
uint64_t lastFreqOutsideScanRange_Hz; /*!< Last frequency which was outside FHM scan range*/
|
||||
uint32_t numInvalidFhmHopFrequencies; /*!< Invalid Hop Freq */
|
||||
uint64_t lastInvalidHopFreq_Hz; /*!< Last Invalid Hop Freq */
|
||||
uint32_t compPllError; /*!< PLL LO Computation Error */
|
||||
uint64_t compPllErrorFreq_Hz; /*!< PLL LO Computation Error frequency */
|
||||
uint32_t rfPllLockFailed; /*!< RF PLL Lock failed */
|
||||
uint64_t rfPllLockFailedFreq_Hz; /*!< RF PLL Lock failed frequency*/
|
||||
} taliseFhmStatus_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_RADIOCTRL_TYPES_H_ */
|
||||
Executable
+519
@@ -0,0 +1,519 @@
|
||||
/**
|
||||
* \file talise_reg_addr_macros.h
|
||||
* \brief Contains Talise API address macro definitions
|
||||
*
|
||||
* 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_ADDR_MACROS_H
|
||||
#define _TALISE_ADDR_MACROS_H
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define TALISE_ADDR_SPI_INTERFACE_CONFIG_A 0x0000
|
||||
#define TALISE_ADDR_SPI_INTERFACE_CONFIG_B 0x0001
|
||||
#define TALISE_ADDR_PRODUCT_ID_0 0x0004
|
||||
#define TALISE_ADDR_PRODUCT_ID_1 0x0005
|
||||
#define TALISE_ADDR_SCRATCH_PAD 0x000A
|
||||
#define TALISE_ADDR_VENDOR_ID_0 0x000C
|
||||
#define TALISE_ADDR_VENDOR_ID_1 0x000D
|
||||
#define TALISE_ADDR_GPIO_SLEW_CONTROL_BYTE3 0x0045
|
||||
#define TALISE_ADDR_DIGITAL_IO_CONTROL 0x0048
|
||||
#define TALISE_ADDR_TX_RX_DATAPATH_INVERSION 0x004A
|
||||
#define TALISE_ADDR_SPI2_CONFIGURATION 0x004B
|
||||
#define TALISE_ADDR_SPI2_CONFIGURATION2 0x004C
|
||||
#define TALISE_ADDR_SYSREF_PAD_CONFIG 0x0080
|
||||
#define TALISE_ADDR_TX1_SYNC_PAD_CONFIG 0x0081
|
||||
#define TALISE_ADDR_TX2_SYNC_PAD_CONFIG 0x0082
|
||||
#define TALISE_ADDR_RX1_SYNC_PAD_CONFIG 0x0083
|
||||
#define TALISE_ADDR_RX2_SYNC_PAD_CONFIG 0x0084
|
||||
#define TALISE_ADDR_PFIR_COEFF_CTL 0x00C0
|
||||
#define TALISE_ADDR_PFIR_COEFF_DATA 0x00C2
|
||||
#define TALISE_ADDR_PFIR_COEFF_ADDR 0x00C3
|
||||
#define TALISE_ADDR_CONFIGURATION_CONTROL_1 0x0100
|
||||
#define TALISE_ADDR_CONFIGURATION_CONTROL_2 0x0101
|
||||
#define TALISE_ADDR_CONFIGURATION_CONTROL_4 0x0102
|
||||
#define TALISE_ADDR_CONFIGURATION_CONTROL_ORX 0x0103
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_0 0x0140
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_1 0x0141
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_2 0x0142
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_3 0x0143
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_4 0x0144
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_5 0x0145
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_6 0x0146
|
||||
#define TALISE_ADDR_CLOCK_CONTROL_7 0x0147
|
||||
#define TALISE_ADDR_MCS_CONTROL 0x0180
|
||||
#define TALISE_ADDR_MCS_STATUS 0x0181
|
||||
#define TALISE_ADDR_MCS_CONTROL_2 0x0182
|
||||
#define TALISE_ADDR_CLK_SYNTH_BYTE1 0x0201
|
||||
#define TALISE_ADDR_CLK_SYNTH_BYTE2 0x0202
|
||||
#define TALISE_ADDR_CLK_SYNTH_BYTE3 0x0203
|
||||
#define TALISE_ADDR_CLK_SYNTH_BYTE5 0x0205
|
||||
#define TALISE_ADDR_CLK_SYNTH_BYTE6 0x0206
|
||||
#define TALISE_ADDR_CLK_SYNTH_BYTE7 0x0207
|
||||
#define TALISE_ADDR_CLK_SYNTH_BYTE9 0x0209
|
||||
#define TALISE_ADDR_CLK_SYNTH_VCO_VAR_CTR1 0x020E
|
||||
#define TALISE_ADDR_CLK_SYNTH_VCO_VAR_CTR2 0x020F
|
||||
#define TALISE_ADDR_CLK_SYNTH_DIVIDER_INT_BYTE0 0x0210
|
||||
#define TALISE_ADDR_CLK_SYNTH_DIVIDER_INT_BYTE1 0x0211
|
||||
#define TALISE_ADDR_CLK_SYNTH_DIVIDER_FRAC_BYTE0 0x0212
|
||||
#define TALISE_ADDR_CLK_SYNTH_DIVIDER_FRAC_BYTE1 0x0213
|
||||
#define TALISE_ADDR_CLK_SYNTH_DIVIDER_FRAC_BYTE2 0x0214
|
||||
#define TALISE_ADDR_CLK_SYNTH_F_VCOTN_BYTE1 0x0217
|
||||
#define TALISE_ADDR_CLK_SYNTH_LF_R3 0x0218
|
||||
#define TALISE_ADDR_CLK_SYNTH_CAL 0x0219
|
||||
#define TALISE_ADDR_CLK_SYNTH_VCO_CAL_REF 0x021A
|
||||
#define TALISE_ADDR_CLK_SYNTH_VCO_BAND_BYTE1 0x021C
|
||||
#define TALISE_ADDR_CLK_SYNTH_CAL_CONTROL 0x021E
|
||||
#define TALISE_ADDR_RX_NCO_CONTROL_0 0x0240
|
||||
#define TALISE_ADDR_RX_NCO_CH1_FTW_BYTE4 0x0241
|
||||
#define TALISE_ADDR_RX_NCO_CH1_FTW_BYTE3 0x0242
|
||||
#define TALISE_ADDR_RX_NCO_CH1_FTW_BYTE2 0x0243
|
||||
#define TALISE_ADDR_RX_NCO_CH1_FTW_BYTE1 0x0244
|
||||
#define TALISE_ADDR_RX_NCO_CH2_FTW_BYTE4 0x0247
|
||||
#define TALISE_ADDR_RX_NCO_CH2_FTW_BYTE3 0x0248
|
||||
#define TALISE_ADDR_RX_NCO_CH2_FTW_BYTE2 0x0249
|
||||
#define TALISE_ADDR_RX_NCO_CH2_FTW_BYTE1 0x024A
|
||||
#define TALISE_ADDR_RX1_BAND_A_NCO2_FTW_BYTE4 0x024E
|
||||
#define TALISE_ADDR_RX1_BAND_A_NCO2_FTW_BYTE3 0x024F
|
||||
#define TALISE_ADDR_RX1_BAND_A_NCO2_FTW_BYTE2 0x0250
|
||||
#define TALISE_ADDR_RX1_BAND_A_NCO2_FTW_BYTE1 0x0251
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO1_FTW_BYTE4 0x0254
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO1_FTW_BYTE3 0x0255
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO1_FTW_BYTE2 0x0256
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO1_FTW_BYTE1 0x0257
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO2_FTW_BYTE4 0x025A
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO2_FTW_BYTE3 0x025B
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO2_FTW_BYTE2 0x025C
|
||||
#define TALISE_ADDR_RX1_BAND_B_NCO2_FTW_BYTE1 0x025D
|
||||
#define TALISE_ADDR_RX2_BAND_A_NCO2_FTW_BYTE4 0x0260
|
||||
#define TALISE_ADDR_RX2_BAND_A_NCO2_FTW_BYTE3 0x0261
|
||||
#define TALISE_ADDR_RX2_BAND_A_NCO2_FTW_BYTE2 0x0262
|
||||
#define TALISE_ADDR_RX2_BAND_A_NCO2_FTW_BYTE1 0x0263
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO1_FTW_BYTE4 0x0266
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO1_FTW_BYTE3 0x0267
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO1_FTW_BYTE2 0x0268
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO1_FTW_BYTE1 0x0269
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO2_FTW_BYTE4 0x026C
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO2_FTW_BYTE3 0x026D
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO2_FTW_BYTE2 0x026E
|
||||
#define TALISE_ADDR_RX2_BAND_B_NCO2_FTW_BYTE1 0x026F
|
||||
#define TALISE_ADDR_RX_BAND_CONTROL 0x0272
|
||||
#define TALISE_ADDR_RX_NCO_FTW_UPDATE_CONTROL 0x027C
|
||||
#define TALISE_ADDR_BBIC_ENABLES 0x0284
|
||||
#define TALISE_ADDR_RADIO_CONTROL_CONFIG1 0x028A
|
||||
#define TALISE_ADDR_RADIO_CONTROL_CONFIG2 0x028B
|
||||
#define TALISE_ADDR_TX_DP_MASK_CH1 0x028E
|
||||
#define TALISE_ADDR_TX_DP_MASK_CH2 0x028F
|
||||
#define TALISE_ADDR_REFERENCE_CLOCK_CYCLES 0x02C0
|
||||
#define TALISE_ADDR_RF_SYNTHESIZER_POWER_DOWN 0x0301
|
||||
#define TALISE_ADDR_CLK_SYNTHESIZER_POWER_DOWN 0x0302
|
||||
#define TALISE_ADDR_TX1_PD 0x0309
|
||||
#define TALISE_ADDR_TX2_PD 0x030A
|
||||
#define TALISE_ADDR_MASTERBIAS_CONFIG0 0x0340
|
||||
#define TALISE_ADDR_MASTERBIAS_CONFIG1 0x0341
|
||||
#define TALISE_ADDR_RCAL_CONTROL 0x0384
|
||||
#define TALISE_ADDR_REF_PAD_CONFIG2 0x03C1
|
||||
#define TALISE_ADDR_RF_SYNTH_CAL 0x0414
|
||||
#define TALISE_ADDR_RF_SYNTH_VCO_BAND_BYTE1 0x0417
|
||||
#define TALISE_ADDR_EXT_LO_BYTE0 0x04C0
|
||||
#define TALISE_ADDR_EXTLOGEN_BYTE1 0x04C1
|
||||
#define TALISE_ADDR_EXTLOGEN_CONTROL_1 0x04C2
|
||||
#define TALISE_ADDR_EXTLO_DIVMODE 0x04C3
|
||||
#define TALISE_ADDR_RX_PFIR_MODE_MAPPING1 0x0540
|
||||
#define TALISE_ADDR_RX_PFIR_MODE_MAPPING2 0x0541
|
||||
#define TALISE_ADDR_RX_PFIR_BANK_A_SETTINGS 0x0542
|
||||
#define TALISE_ADDR_RX_PFIR_BANK_B_SETTINGS 0x0543
|
||||
#define TALISE_ADDR_RX_PFIR_BANK_C_SETTINGS 0x0544
|
||||
#define TALISE_ADDR_AGC_CONFIG1 0x05C0
|
||||
#define TALISE_ADDR_AGC_CONFIG2 0x05C1
|
||||
#define TALISE_ADDR_MANUAL_GAIN_CONFIG 0x05C2
|
||||
#define TALISE_ADDR_AGC_LOCK_LEVEL 0x05C3
|
||||
#define TALISE_ADDR_AGC_OVRG_GAIN_STEP1 0x05C4
|
||||
#define TALISE_ADDR_AGC_OVRG_GAIN_STEP2 0x05C5
|
||||
#define TALISE_ADDR_AGC_OVRG_GAIN_STEP4 0x05C7
|
||||
#define TALISE_ADDR_AGC_OVRG_GAIN_STEP5 0x05C8
|
||||
#define TALISE_ADDR_UPPER_LEVEL_BLOCKER_THRESHOLD 0x05C9
|
||||
#define TALISE_ADDR_UPPER_LEVEL_BLOCKER_THRESHOLD2 0x05CA
|
||||
#define TALISE_ADDR_LOWER_LEVEL_BLOCKER_THRESHOLD 0x05CB
|
||||
#define TALISE_ADDR_LOWER_LEVEL_BLOCKER_THRESHOLD2 0x05CC
|
||||
#define TALISE_ADDR_AGC_CONFIG_RX1 0x05D0
|
||||
#define TALISE_ADDR_AGC_MANUAL_GAIN_CONTROL_CONFIG_RX1 0x05D1
|
||||
#define TALISE_ADDR_MANUAL_GAIN_INDEX_RX1 0x05D2
|
||||
#define TALISE_ADDR_MANUAL_GAIN_INDEX_ORX_RX1 0x05D3
|
||||
#define TALISE_ADDR_AGC_ATTACK_DELAY_RX1 0x05D6
|
||||
#define TALISE_ADDR_MAX_GAIN_INDEX_RX1 0x05D7
|
||||
#define TALISE_ADDR_MIN_GAIN_INDEX_RX1 0x05D8
|
||||
#define TALISE_ADDR_AGC_CONFIG_RX2 0x05E0
|
||||
#define TALISE_ADDR_AGC_MANUAL_GAIN_CONTROL_CONFIG_RX2 0x05E1
|
||||
#define TALISE_ADDR_MANUAL_GAIN_INDEX_RX2 0x05E2
|
||||
#define TALISE_ADDR_MANUAL_GAIN_INDEX_ORX_RX2 0x05E3
|
||||
#define TALISE_ADDR_AGC_ATTACK_DELAY_RX2 0x05E6
|
||||
#define TALISE_ADDR_MAX_GAIN_INDEX_RX2 0x05E7
|
||||
#define TALISE_ADDR_MIN_GAIN_INDEX_RX2 0x05E8
|
||||
#define TALISE_ADDR_GAIN_VALID_OVERRIDES 0x05E9
|
||||
#define TALISE_ADDR_AGC_LOCK_LEVEL_THRESHOLDS 0x0640
|
||||
#define TALISE_ADDR_ULB_COUNT_THRESHOLD 0x0641
|
||||
#define TALISE_ADDR_LLB_COUNT_THRESHOLD 0x0642
|
||||
#define TALISE_ADDR_ADC_HIGH_OVRG_COUNT_THRESHOLD 0x0643
|
||||
#define TALISE_ADDR_ADC_LOW_OVRG_COUNT_THRESHOLD 0x0644
|
||||
#define TALISE_ADDR_UPPER0_THRESHOLD_GAIN_STEP 0x0646
|
||||
#define TALISE_ADDR_UPPER1_THRESHOLD_GAIN_STEP 0x0648
|
||||
#define TALISE_ADDR_LOWER0_THRESHOLD_GAIN_STEP 0x0647
|
||||
#define TALISE_ADDR_LOWER1_THRESHOLD_GAIN_STEP 0x0649
|
||||
#define TALISE_ADDR_GAIN_UPDATE_COUNTER1 0x064A
|
||||
#define TALISE_ADDR_GAIN_UPDATE_COUNTER2 0x064B
|
||||
#define TALISE_ADDR_GAIN_UPDATE_COUNTER3 0x064C
|
||||
#define TALISE_ADDR_SLOWLOOP_CONFIG 0x064D
|
||||
#define TALISE_ADDR_SLOWLOOP_SETTLING_DELAY 0x064E
|
||||
#define TALISE_ADDR_POWER_THRESHOLDS 0x064F
|
||||
#define TALISE_ADDR_RX1_UL_SIG_POWER_MEAS_DELAY1 0x0650
|
||||
#define TALISE_ADDR_RX1_UL_SIG_POWER_MEAS_DELAY2 0x0651
|
||||
#define TALISE_ADDR_RX1_UL_SIG_POWER_MEAS_DURATION1 0x0652
|
||||
#define TALISE_ADDR_RX1_UL_SIG_POWER_MEAS_DURATION2 0x0653
|
||||
#define TALISE_ADDR_RX2_UL_SIG_POWER_MEAS_DELAY1 0x0654
|
||||
#define TALISE_ADDR_RX2_UL_SIG_POWER_MEAS_DELAY2 0x0655
|
||||
#define TALISE_ADDR_RX2_UL_SIG_POWER_MEAS_DURATION1 0x0656
|
||||
#define TALISE_ADDR_RX2_UL_SIG_POWER_MEAS_DURATION2 0x0657
|
||||
#define TALISE_ADDR_AGC_UNDERRANGE0_0 0x0658
|
||||
#define TALISE_ADDR_AGC_UNDERRANGE0_1 0x0659
|
||||
#define TALISE_ADDR_AGC_UNDERRANGE1 0x065A
|
||||
#define TALISE_ADDR_AGC_UNDERRANGE2 0x065B
|
||||
#define TALISE_ADDR_AGC_IP3_OVERRANGE_THRESHOLD 0x065C
|
||||
#define TALISE_ADDR_AGC_ADCOVRG_IP3_HIGH_COUNTER 0x065D
|
||||
#define TALISE_ADDR_AGC_ADCOVRG_LOW_INT0_COUNTER 0X065E
|
||||
#define TALISE_ADDR_AGC_ADCOVRG_LOW_INT1_COUNTER 0X065F
|
||||
#define TALISE_ADDR_AGC_OVRG_LOW_INT0_GAIN_STEP 0x0660
|
||||
#define TALISE_ADDR_AGC_OVRG_LOW_INT1_GAIN_STEP 0x0661
|
||||
#define TALISE_ADDR_SLOWLOOP_CONFIG2 0x0662
|
||||
#define TALISE_ADDR_RX1_AGC_DUALBAND_INDEX_X 0x0663
|
||||
#define TALISE_ADDR_RX1_AGC_DUALBAND_INDEX_Y 0x0664
|
||||
#define TALISE_ADDR_RX1_SLOWLOOP_CONFIG 0x0665
|
||||
#define TALISE_ADDR_RX2_AGC_DUALBAND_INDEX_X 0x0666
|
||||
#define TALISE_ADDR_RX2_AGC_DUALBAND_INDEX_Y 0x0667
|
||||
#define TALISE_ADDR_RX2_SLOWLOOP_CONFIG 0x0668
|
||||
#define TALISE_ADDR_AGC_DUALBAND_TOTAL_PWR_MARGIN 0x066A
|
||||
#define TALISE_ADDR_AGC_DUALBAND_BAND_PWR_MARGIN 0x066B
|
||||
#define TALISE_ADDR_AGC_UPPER_POWER_THRESHOLD 0x066C
|
||||
#define TALISE_ADDR_AGC_DUALBAND_HIGH_LNA_THRESHOLD 0x066D
|
||||
#define TALISE_ADDR_AGC_DUALBAND_LOW_LNA_THRESHOLD 0x066E
|
||||
#define TALISE_ADDR_RX1_GAIN_INDEX 0x0686
|
||||
#define TALISE_ADDR_ORX1_GAIN_INDEX 0x0687
|
||||
#define TALISE_ADDR_RX2_GAIN_INDEX 0x0688
|
||||
#define TALISE_ADDR_ORX2_GAIN_INDEX 0x0689
|
||||
#define TALISE_ADDR_DEC_POWER_CONFIG_1 0x070B
|
||||
#define TALISE_ADDR_DEC_POWER_DURATION 0x070C
|
||||
#define TALISE_ADDR_DDC_DEC_POWER_CONFIG 0x0720
|
||||
#define TALISE_ADDR_DDC_DEC_POWER_MEAS 0x0721
|
||||
#define TALISE_ADDR_DEC_POWER_CH1 0x0745
|
||||
#define TALISE_ADDR_DEC_POWER_CH2 0x0746
|
||||
#define TALISE_ADDR_DIGITAL_GAIN_CONFIG 0x0780
|
||||
#define TALISE_ADDR_GAIN_COMPENATION_AND_SLICER_CONFIG 0x0781
|
||||
#define TALISE_ADDR_RX1_SLICER_GPIO_CONFIG 0x0782
|
||||
#define TALISE_ADDR_RX2_SLICER_GPIO_CONFIG 0x0783
|
||||
#define TALISE_ADDR_RXDP_SLICER_READBACK 0x0784
|
||||
#define TALISE_ADDR_GAIN_COMPENSATION_AND_SLICER_CONFIG2 0x0785
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_ADDRESS 0x07C0
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_DATA_RXFE 0x07C1
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_DATA_EXT 0x07C2
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_DATA_DIG 0x07C3
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_DATA_DIG2 0x07C4
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_DATA_DUALBAND 0x07C5
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_DATA_PHASE_OFFSET 0x07C6
|
||||
#define TALISE_ADDR_GAIN_TABLE_WORD_DATA_PHASE_OFFSET2 0x07C7
|
||||
#define TALISE_ADDR_GAIN_TABLE_DATA_OUTPUT_DUALBAND_CH1_BAND_A 0x07CD
|
||||
#define TALISE_ADDR_GAIN_TABLE_DATA_OUTPUT_DUALBAND_CH1_BAND_B 0x07CE
|
||||
#define TALISE_ADDR_GAIN_TABLE_DATA_OUTPUT_DUALBAND_CH2_BAND_A 0x07D6
|
||||
#define TALISE_ADDR_GAIN_TABLE_DATA_OUTPUT_DUALBAND_CH2_BAND_B 0x07D7
|
||||
#define TALISE_ADDR_GAIN_TABLE_CONFIGURATION 0x07DA
|
||||
#define TALISE_ADDR_RXFE1_LOCM 0x0800
|
||||
#define TALISE_ADDR_RXFE2_LOCM 0x0801
|
||||
#define TALISE_ADDR_LO_MUX_CONFIG 0x0880
|
||||
#define TALISE_ADDR_DEC_OVERLOAD_CONFIG1 0x0943
|
||||
#define TALISE_ADDR_DEC_OVERLOAD_CONFIG2 0x0944
|
||||
#define TALISE_ADDR_DEC_OVERLOAD_UPPER_THRESHOLD 0x0945
|
||||
#define TALISE_ADDR_DEC_OVERLOAD_LOWER_THRESHOLD 0x0946
|
||||
#define TALISE_ADDR_DEC_UNDERRANGE_INTERVAL0_THRESHOLD 0x0947
|
||||
#define TALISE_ADDR_DEC_UNDERRANGE_INTERVAL1_THRESHOLD 0x0948
|
||||
#define TALISE_ADDR_DEC_IP3_OVERRANGE_THRESHOLD 0x0949
|
||||
#define TALISE_ADDR_ADC_BIAS_FLASH_VISB 0x09C4
|
||||
#define TALISE_ADDR_DIGITAL_DC_OFFSET_SHIFT 0x0B01
|
||||
#define TALISE_ADDR_DIGITAL_DC_OFFSET_ORX_SHIFT 0x0B43
|
||||
#define TALISE_ADDR_TX_FILTER_CONFIGURATION 0x0D45
|
||||
#define TALISE_ADDR_TX1_ATTENUATION_0_READBACK 0x0E00
|
||||
#define TALISE_ADDR_TX1_ATTENUATION_1_READBACK 0x0E01
|
||||
#define TALISE_ADDR_TX2_ATTENUATION_0_READBACK 0x0E03
|
||||
#define TALISE_ADDR_TX2_ATTENUATION_1_READBACK 0x0E04
|
||||
#define TALISE_ADDR_TX1_ATTENUATION_0 0x0E80
|
||||
#define TALISE_ADDR_TX1_ATTENUATION_1 0x0E81
|
||||
#define TALISE_ADDR_TX2_ATTENUATION_0 0x0E82
|
||||
#define TALISE_ADDR_TX2_ATTENUATION_1 0x0E83
|
||||
#define TALISE_ADDR_TX1_GAIN_0 0x0E87
|
||||
#define TALISE_ADDR_TX1_GAIN_1 0x0E88
|
||||
#define TALISE_ADDR_TX1_GAIN_2 0x0E89
|
||||
#define TALISE_ADDR_TX2_GAIN_0 0x0E8A
|
||||
#define TALISE_ADDR_TX2_GAIN_1 0x0E8B
|
||||
#define TALISE_ADDR_TX2_GAIN_2 0x0E8C
|
||||
#define TALISE_ADDR_TX_INCR_DECR_WORD 0x0E8D
|
||||
#define TALISE_ADDR_TX_TPC_CONFIG 0x0E8E
|
||||
#define TALISE_ADDR_TDD_RAMP_TX1 0x0E92
|
||||
#define TALISE_ADDR_TDD_RAMP_TX2 0x0E93
|
||||
#define TALISE_ADDR_TX_TPC_GPIO_CONFIG 0x0E96
|
||||
#define TALISE_ADDR_TXDAC1_GAIN_I 0x0EC6
|
||||
#define TALISE_ADDR_TXDAC1_GAIN_Q 0x0EC7
|
||||
#define TALISE_ADDR_TXDAC2_GAIN_I 0x0EC8
|
||||
#define TALISE_ADDR_TXDAC2_GAIN_Q 0x0EC9
|
||||
#define TALISE_ADDR_TX_ABBF_FREQCAL_NCO_I_UPPER_NIBBLE 0x0F1B
|
||||
#define TALISE_ADDR_TX_ABBF_FREQCAL_NCO_I_MSBS 0x0F1C
|
||||
#define TALISE_ADDR_TX_ABBF_FREQCAL_NCO_I_LSBS 0x0F1D
|
||||
#define TALISE_ADDR_TX_ABBF_FREQCAL_NCO_Q_UPPER_NIBBLE 0x0F1E
|
||||
#define TALISE_ADDR_TX_ABBF_FREQCAL_NCO_Q_MSBS 0x0F1F
|
||||
#define TALISE_ADDR_TX_ABBF_FREQCAL_NCO_Q_LSBS 0x0F20
|
||||
#define TALISE_ADDR_GPIO_3P3V_DIRECTION_CONTROL_0 0x1080
|
||||
#define TALISE_ADDR_GPIO_3P3V_DIRECTION_CONTROL_1 0x1081
|
||||
#define TALISE_ADDR_GPIO_3P3V_SPI_SOURCE_0 0x1082
|
||||
#define TALISE_ADDR_GPIO_3P3V_SPI_SOURCE_1 0x1083
|
||||
#define TALISE_ADDR_GPIO_3P3V_SPI_READ_0 0x1084
|
||||
#define TALISE_ADDR_GPIO_3P3V_SPI_READ_1 0x1085
|
||||
#define TALISE_ADDR_GPIO_3P3V_LOWER_BYTE_SOURCE_CONTROL 0x1086
|
||||
#define TALISE_ADDR_GPIO_3P3V_UPPER_BYTE_SOURCE_CONTROL 0x1087
|
||||
#define TALISE_ADDR_GPIO_DIRECTION_CONTROL_7DOWNTO0 0x10C0
|
||||
#define TALISE_ADDR_GPIO_DIRECTION_CONTROL_15DOWNTO8 0x10C1
|
||||
#define TALISE_ADDR_GPIO_DIRECTION_CONTROL_18DOWNTO16 0x10C2
|
||||
#define TALISE_ADDR_GPIO_SPI_SOURCE_7DOWNTO0 0x10C3
|
||||
#define TALISE_ADDR_GPIO_SPI_SOURCE_15DOWNTO8 0x10C4
|
||||
#define TALISE_ADDR_GPIO_SPI_SOURCE_18DOWNTO16 0x10C5
|
||||
#define TALISE_ADDR_GPIO_SPI_READ_7DOWNTO0 0x10C6
|
||||
#define TALISE_ADDR_GPIO_SPI_READ_15DOWNTO8 0x10C7
|
||||
#define TALISE_ADDR_GPIO_SPI_READ_18DOWNTO16 0x10C8
|
||||
#define TALISE_ADDR_GPIO_LOWER_BYTE_SOURCE_CONTROL 0x10C9
|
||||
#define TALISE_ADDR_GPIO_UPPER_BYTE_SOURCE_CONTROL 0x10CA
|
||||
#define TALISE_ADDR_GPIO_EXTRA_BITS_SOURCE_CONTROL 0x10CB
|
||||
#define TALISE_ADDR_MONITOR_0 0x1140
|
||||
#define TALISE_ADDR_MONITOR_1 0x1141
|
||||
#define TALISE_ADDR_PDAUXDAC_MANUAL_IN_MSB 0x11A5
|
||||
#define TALISE_ADDR_PDAUXDAC_MANUAL_IN_LSB 0x11A6
|
||||
#define TALISE_ADDR_AUX_DAC_0_WORD_MSB 0x11D0
|
||||
#define TALISE_ADDR_AUX_DAC_0_WORD_LSB 0x11D1
|
||||
#define TALISE_ADDR_AUX_DAC_12B_0_MSB 0x11E4
|
||||
#define TALISE_ADDR_AUX_DAC_12B_0_LSB 0x11E5
|
||||
#define TALISE_ADDR_AUX_DAC_LATCH_CONTROL 0x11E8
|
||||
#define TALISE_ADDR_DIGITAL_TEST_BYTE 0x1382
|
||||
#define TALISE_ADDR_ARM_CTL_1 0x13C0
|
||||
#define TALISE_ADDR_ARM_CLOCK_CONTROL 0x13C8
|
||||
#define TALISE_ADDR_AHB_SPI_BRIDGE 0x13C9
|
||||
#define TALISE_ADDR_ARM_BOOT_ADDR_BYTE0 0x13CA
|
||||
#define TALISE_ADDR_ARM_BOOT_ADDR_BYTE1 0x13CB
|
||||
#define TALISE_ADDR_ARM_BOOT_ADDR_BYTE2 0x13CC
|
||||
#define TALISE_ADDR_ARM_BOOT_ADDR_BYTE3 0x13CD
|
||||
#define TALISE_ADDR_ARM_STACK_PTR_BYTE_0 0x13CE
|
||||
#define TALISE_ADDR_ARM_STACK_PTR_BYTE_1 0x13CF
|
||||
#define TALISE_ADDR_ARM_STACK_PTR_BYTE_2 0x13D0
|
||||
#define TALISE_ADDR_ARM_STACK_PTR_BYTE_3 0x13D1
|
||||
#define TALISE_ADDR_BRIDGE_CLOCK_CONTROL 0x13D5
|
||||
#define TALISE_ADDR_ARM_ECC_DATA_READBACK 0x13D9
|
||||
#define TALISE_ADDR_ARM_ECC_PROG_READBACK 0x13E1
|
||||
#define TALISE_ADDR_ARM_DMA_CTL 0x13EE
|
||||
#define TALISE_ADDR_ARM_DMA_ADDR0 0x13EF
|
||||
#define TALISE_ADDR_ARM_DMA_ADDR1 0x13F0
|
||||
#define TALISE_ADDR_ARM_DMA_DATA0 0x13F3
|
||||
#define TALISE_ADDR_ARM_DMA_DATA3 0x13F6
|
||||
#define TALISE_ADDR_ARM_COMMAND 0x1400
|
||||
#define TALISE_ADDR_ARM_EXT_CMD_BYTE_1 0x1401
|
||||
#define TALISE_ADDR_ARM_CMD_STATUS_0 0x1408
|
||||
#define TALISE_ADDR_ARM_CMD_STATUS_8 0x1410
|
||||
#define TALISE_ADDR_ARM_CMD_STATUS_11 0x1413
|
||||
#define TALISE_ADDR_ARM_CMD_STATUS_12 0x1414
|
||||
#define TALISE_ADDR_STREAM_CONTROL 0x14C0
|
||||
#define TALISE_ADDR_STREAM_BASE_BYTE0 0x14C1
|
||||
#define TALISE_ADDR_STREAM_BASE_BYTE1 0x14C2
|
||||
#define TALISE_ADDR_LAST_STREAM_NUM 0x14C4
|
||||
#define TALISE_ADDR_TX_RX_EN_READBACK 0x14D6
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG0 0x14F5
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG1 0x14F6
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG2 0x14F7
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG3 0x14F8
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG4 0x14F9
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG5 0x14FA
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG6 0x14FB
|
||||
#define TALISE_ADDR_STREAM_PROC_DEBUG_REG7 0x14FC
|
||||
#define TALISE_ADDR_STREAM_GPIO_TRIGGER_PIN_SELECT_BYTE1 0x14FE
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG0_0 0x1520
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG1_0 0x1521
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG2_0 0x1522
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG3_0 0x1523
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG4_0 0x1524
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG5_0 0x1525
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG6_0 0x1526
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG7_0 0x1527
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG8_0 0x1528
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG9_0 0x1529
|
||||
#define TALISE_ADDR_JESD_FRAMER_L0_CFG10_0 0x152A
|
||||
#define TALISE_ADDR_JESD_FRAMER_ILAS_MF_COUNT_0 0x152B
|
||||
#define TALISE_ADDR_JESD_FRAMER_ASYNC_PTR_DBG_0 0x152C
|
||||
#define TALISE_ADDR_JESD_FRAMER_LANE_XBAR_0 0x152E
|
||||
#define TALISE_ADDR_JESD_FRAMER_CFG_0 0x152F
|
||||
#define TALISE_ADDR_JESD_FRAMER_CFG2_0 0x1530
|
||||
#define TALISE_ADDR_JESD_FRAMER_CFG3_0 0x1531
|
||||
#define TALISE_ADDR_JESD_FRAMER_CFG4_0 0x1532
|
||||
#define TALISE_ADDR_JESD_FRAMER_CFG5_0 0x1533
|
||||
#define TALISE_ADDR_JESD_FRAMER_TEST_CFG_0 0x1534
|
||||
#define TALISE_ADDR_JESD_FRAMER_SYSREF_CFG_0 0x1536
|
||||
#define TALISE_ADDR_JESD_FRAMER_SYSREF_CFG2_0 0x1537
|
||||
#define TALISE_ADDR_JESD_FRAMER_SYSREF_CFG3_0 0x1538
|
||||
#define TALISE_ADDR_JESD_FRAMER_SAMPLE_XBAR_01_0 0x1540
|
||||
#define TALISE_ADDR_JESD_FRAMER_SAMPLE_XBAR_23_0 0x1541
|
||||
#define TALISE_ADDR_JESD_FRAMER_SAMPLE_XBAR_45_0 0x1542
|
||||
#define TALISE_ADDR_JESD_FRAMER_SAMPLE_XBAR_67_0 0x1543
|
||||
#define TALISE_ADDR_JESD_FRAMER_ILAS_MF_COUNT_1 0x1553
|
||||
#define TALISE_ADDR_JESD_FRAMER_ASYNC_PTR_DBG_1 0x1554
|
||||
#define TALISE_ADDR_JESD_FRAMER_SRST_CFG 0x1570
|
||||
#define TALISE_ADDR_JESD_FRAMER_COMMON_CFG 0x1579
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG0_0 0x1580
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG1_0 0x1581
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG2_0 0x1582
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG3_0 0x1583
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG4_0 0x1584
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG5_0 0x1585
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG6_0 0x1586
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG7_0 0x1587
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG8_0 0x1588
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG9_0 0x1589
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG10_0 0x158A
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_ILAS_MF_COUNT_0 0x158B
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_EVENT_OBS_0 0x158C
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_LANE_XBAR_0 0x158D
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_CFG_0 0x158F
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_CFG2_0 0x1590
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_CFG3_0 0x1591
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_CFG4_0 0x1592
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_SYSREF_CFG_0 0x1593
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_SYSREF_CFG2_0 0x1594
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PTR_DBG_DET_LAT_BUF_0 0x1596
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG2_0 0x1598
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG3_0 0x1599
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG4_0 0x159A
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG5_0 0x159B
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG6_0 0x159C
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS0_0 0x15A0
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS13_0 0x15AD
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS14_0 0x15AE
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS15_0 0x15AF
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS20_0 0x15B4
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS21_0 0x15B5
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS22_0 0x15B6
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS23_0 0x15B7
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS24_0 0x15B8
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS25_0 0x15B9
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS35_0 0x15C3
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS36_0 0x15C4
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS37_0 0x15C5
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS38_0 0x15C6
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS39_0 0x15C7
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS40_0 0x15C8
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_L0_CFG0_1 0x15D0
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_CFG_1 0x15DF
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_SYSREF_CFG2_1 0x15E4
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PTR_DBG_DET_LAT_BUF_1 0x15E6
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG2_1 0x15E8
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG3_1 0x15E9
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG5_1 0x15EB
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_CFG6_1 0x15EC
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS0_1 0x15F0
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS13_1 0x15FD
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS14_1 0x15FE
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS15_1 0x15FF
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS20_1 0x1604
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS21_1 0x1605
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS22_1 0x1606
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS23_1 0x1607
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS24_1 0x1608
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS25_1 0x1609
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS35_1 0x1613
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS36_1 0x1614
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS37_1 0x1615
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS38_1 0x1616
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS39_1 0x1617
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS40_1 0x1618
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_IP_OBS42_1 0x161A
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_CH1_SAMPLE_XBAR 0x1620
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_CH2_SAMPLE_XBAR 0x1621
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_COMMON_CFG 0x1623
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_COMMON_CFG3 0x1625
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_SAMPLE_DISABLE_CH1 0x1628
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_SAMPLE_DISABLE_CH2 0x1629
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PTR_DBG_LANE0 0x162A
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PTR_DBG_LANE1 0x162B
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PTR_DBG_LANE2 0x162C
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PTR_DBG_LANE3 0x162D
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PRBS_CFG 0x162E
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PRBS_ERROR_FLAG 0x162F
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_SAMPLE_PRBS_ERROR_COUNT 0x1630
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PRBS_ERROR_COUNT0 0x1631
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PRBS_ERROR_COUNT1 0x1632
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PRBS_ERROR_COUNT2 0x1633
|
||||
#define TALISE_ADDR_JESD_DEFRAMER_PRBS_ERROR_COUNT3 0x1634
|
||||
#define TALISE_ADDR_PA_PROTECTION_CONFIGURATION 0x1660
|
||||
#define TALISE_ADDR_PA_PROTECTION_ATTEN_CONTROL 0x1661
|
||||
#define TALISE_ADDR_PA_PROTECTION_THRESHOLD_0 0x1662
|
||||
#define TALISE_ADDR_PA_PROTECTION_THRESHOLD_1 0x1663
|
||||
#define TALISE_ADDR_PA_PROTECTION_THRESHOLD_2 0x1664
|
||||
#define TALISE_ADDR_PA_PROTECTION_THRESHOLD_3 0x1665
|
||||
#define TALISE_ADDR_PA_PROTECTION_PEAK_COUNT 0x1666
|
||||
#define TALISE_ADDR_PA_PROTECTION_PEAK_THRESHOLD_CH1 0x1667
|
||||
#define TALISE_ADDR_PA_PROTECTION_PEAK_THRESHOLD_CH2 0x1668
|
||||
#define TALISE_ADDR_PA_PROTECTION_POWER_0 0x1669
|
||||
#define TALISE_ADDR_PA_PROTECTION_POWER_1 0x166A
|
||||
#define TALISE_ADDR_PA_PROTECTION_ERROR 0x166B
|
||||
#define TALISE_ADDR_FLOATING_POINT_CONFIG 0x16C0
|
||||
#define TALISE_ADDR_FLOATING_POINT_CONTROL 0x16C1
|
||||
#define TALISE_ADDR_FLOATING_POINT_ENABLE 0x16C2
|
||||
#define TALISE_ADDR_INTEGER_FORMAT_CONFIG 0x16C3
|
||||
#define TALISE_ADDR_GP_INTERRUPT_MASK_1 0x1700
|
||||
#define TALISE_ADDR_GP_INTERRUPT_MASK_0 0x1701
|
||||
#define TALISE_ADDR_GP_INTERRUPT_READ_1 0x1702
|
||||
#define TALISE_ADDR_GP_INTERRUPT_READ_0 0x1703
|
||||
#define TALISE_ADDR_AUX_SYNTH_VCO_BAND_BYTE1 0x1792
|
||||
#define TALISE_ADDR_AUX_SYNTH_CAL 0x1798
|
||||
#define TALISE_ADDR_SER_PHY_TXCTRL_0 0x1850
|
||||
#define TALISE_ADDR_SER_PHY_TXCTRL_1 0x1851
|
||||
#define TALISE_ADDR_SER_PHY_PD 0x1853
|
||||
#define TALISE_ADDR_SER_PHY_ENABLES 0x1854
|
||||
#define TALISE_ADDR_SER_PREEMPH_CTRL 0x1855
|
||||
#define TALISE_ADDR_DES_PHY_PWR_DWN_0 0x1869
|
||||
#define TALISE_ADDR_DES_PHY_PWR_DWN_4 0x186D
|
||||
#define TALISE_ADDR_DES_PHY_CLK_CTL_0 0x1878
|
||||
#define TALISE_ADDR_DES_PHY_CLK_CTL_1 0x1879
|
||||
#define TALISE_ADDR_DES_PHY_GENERAL_CTL_0 0x187D
|
||||
#define TALISE_ADDR_DES_PHY_GENERAL_CTL_1 0x187E
|
||||
#define TALISE_ADDR_DES_PHY_EQ_CONTROL2 0x18B0
|
||||
#define TALISE_ADDR_PHM_CNTRL 0x18C0 /* C0 Only */
|
||||
#define TALISE_ADDR_PHM_PERIOD_BYTE0 0x18C1 /* C0 Only */
|
||||
#define TALISE_ADDR_PHM_PERIOD_BYTE1 0x18C2 /* C0 Only */
|
||||
#define TALISE_ADDR_PHM_PERIOD_BYTE2 0x18C3 /* C0 Only */
|
||||
#define TALISE_ADDR_FOVR_CNTRL 0x18CC /* C0 Only */
|
||||
#define TALISE_ADDR_FOVR_RX_UP_THRESH_BYTE0 0x18CD /* C0 Only */
|
||||
#define TALISE_ADDR_FOVR_RX_UP_THRESH_BYTE1 0x18CE /* C0 Only */
|
||||
#define TALISE_ADDR_FOVR_RX_LOW_THRESH_BYTE0 0x18CF /* C0 Only */
|
||||
#define TALISE_ADDR_FOVR_RX_LOW_THRESH_BYTE1 0x18D0 /* C0 Only */
|
||||
#define TALISE_ADDR_FOVR_RX_DWELL_THRESH_BYTE0 0x18D1 /* C0 Only */
|
||||
#define TALISE_ADDR_FOVR_RX_DWELL_THRESH_BYTE1 0x18D2 /* C0 Only */
|
||||
#define TALISE_ADDR_PHM_FOVR_ON_JESD 0x18D3 /* C0 Only */
|
||||
#define TALISE_ADDR_PCA_CNTRL 0x18D4 /* C0 Only */
|
||||
#define TALISE_ADDR_PCA_RX1_GAIN_INDEX_OFFSET 0x18D5 /* C0 Only */
|
||||
#define TALISE_ADDR_PCA_RX2_GAIN_INDEX_OFFSET 0x18D6 /* C0 Only */
|
||||
#define TALISE_ADDR_PCA_RX1_GAIN_STEP 0x18D7 /* C0 Only */
|
||||
#define TALISE_ADDR_PCA_RX2_GAIN_STEP 0x18D8 /* C0 Only */
|
||||
#define TALISE_ADDR_SCRATCH_PAD_UPPER_ADDRESS_SPACE 0x3EE0
|
||||
#define TALISE_ADDR_SCRATCH_PAD_READ_ONLY_UPPER_ADDRESS_SPACE 0x3EE1
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Executable
+2557
File diff suppressed because it is too large
Load Diff
Executable
+550
@@ -0,0 +1,550 @@
|
||||
/**
|
||||
* \file talise_rx.h
|
||||
* \brief Contains Talise receive related function prototypes for
|
||||
* talise_rx.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_RX_H_
|
||||
#define TALISE_RX_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
#include "talise_rx_types.h"
|
||||
#include "talise_error_types.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Initialization functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief Programs the gain table settings for either Rx1, Rx2, Rx1 + Rx2
|
||||
* receiver types
|
||||
*
|
||||
* The gain table for a receiver type is set with the parameters passed by
|
||||
* taliseRxGainTable_t gainTablePtr array. The array length (n) is dependent
|
||||
* upon receiver type. The (n) value is conveyed by numGainIndexesInTable.
|
||||
* All gain tables have a maximum index and a minimum index specified by
|
||||
* MAX_RX_GAIN_TABLE_NUMINDEXES and MIN_RX_GAIN_TABLE_INDEX
|
||||
* The minimum gain index is application dependent, this can be modified
|
||||
* in the user space, the absolute maximum and minimum indexes are specified
|
||||
* by MAX_GAIN_TABLE_INDEX and MIN_GAIN_TABLE_INDEX
|
||||
*
|
||||
* The Rx max gain index is always normalized to index 255. The
|
||||
* gain index to use in the setRxGain function expects 255 for max gain and
|
||||
* will automatically be offset to set the correct gain index based on the
|
||||
* MAX_RX_GAIN_TABLE_NUMINDEXES macro.
|
||||
*
|
||||
* \pre This function called automatically in TALISE_initialize() to load
|
||||
* the default gain table. If the BBIC desires to change or update the
|
||||
* gain table, it may call this function after initialization but before
|
||||
* running init cals.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{device->devStateInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise device data structure
|
||||
* \param gainTablePtr containing gain table program values
|
||||
* \param numGainIndexesInTable The number of 'n' indices in array. A range
|
||||
* check is performed to ensure the maximum is not exceeded.
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1, Rx2,
|
||||
* Rx1 + Rx2 gain table for programming. A channel check is performed to
|
||||
* ensure a valid selection.
|
||||
*
|
||||
* \pre This function can be called by the user to load a custom gain table or
|
||||
* to reconfigure the gain table
|
||||
*
|
||||
* \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_programRxGainTable(taliseDevice_t *device, taliseRxGainTable_t *gainTablePtr, uint8_t numGainIndexesInTable, taliseRxChannels_t rxChannel);
|
||||
|
||||
/**
|
||||
* \brief Programs the gain table settings for either ORx1, ORx2, ORx1 + ORx2
|
||||
* receiver types
|
||||
*
|
||||
* * The gain table for a receiver type is set with the parameters passed by
|
||||
* taliseOrxGainTable_t gainTablePtr array. The array length (n) is dependent
|
||||
* upon receiver type. The (n) value is conveyed by numGainIndexesInTable.
|
||||
* All gain tables have a maximum index and a minimum index specified by
|
||||
* MAX_ORX_GAIN_TABLE_NUMINDEXES and MIN_ORX_GAIN_TABLE_INDEX
|
||||
* The minimum gain index is application dependent, this can be modified in
|
||||
* the user space, the absolute maximum and minimum indexes are specified by:
|
||||
* MAX_GAIN_TABLE_INDEX and MIN_GAIN_TABLE_INDEX
|
||||
*
|
||||
* The ORx max gain index is always normalized to index 255. The
|
||||
* gain index to use in the setRxGain function expects 255 for max gain and
|
||||
* will automatically be offset to set the correct gain index based on the
|
||||
* MAX_ORX_GAIN_TABLE_NUMINDEXES macro.
|
||||
*
|
||||
* \pre This function called automatically in TALISE_initialize() to load
|
||||
* the default gain table. If the BBIC desires to change or update the
|
||||
* gain table, it may call this function after initialization but before
|
||||
* running init cals.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{device->devStateInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise device data structure
|
||||
* \param gainTablePtr Pointer to array of ORx gain table structures.
|
||||
* \param numGainIndexesInTable The number of 'n' indices in gainTablePtr array. A range
|
||||
* check is performed to ensure the maximum is not exceeded.
|
||||
* \param orxChannel taliseObsRxChannels_t enum type to select either ORx1, ORx2,
|
||||
* ORx1 + ORx2 gain table for programming. A channel check is performed to
|
||||
* ensure a valid selection.
|
||||
*
|
||||
* \pre This function can be called by the user to load a custom gain table or
|
||||
* to reconfigure the gain table
|
||||
*
|
||||
* \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_programOrxGainTable(taliseDevice_t *device, taliseOrxGainTable_t *gainTablePtr, uint8_t numGainIndexesInTable, taliseObsRxChannels_t orxChannel);
|
||||
|
||||
|
||||
/****************************************************************************
|
||||
* Runtime functions
|
||||
****************************************************************************
|
||||
*/
|
||||
/**
|
||||
* \brief Sets the Rx1 or Rx2 Manual Gain Index
|
||||
*
|
||||
* If the value passed in the gainIndex parameter is within range of the gain
|
||||
* table minimum and maximum indexes, the Rx1/Rx2 gain index will be written
|
||||
* to the transceiver. Else, an error will be returned. The maximum index is 255
|
||||
* and the minimum index is application specific.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param rxChannel Selects the channel (Rx1 or Rx2) to update the gainIndex
|
||||
* \param gainIndex Desired Rx1 or Rx2 gain index depending on rxChannel parameter
|
||||
*
|
||||
* \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_setRxManualGain(taliseDevice_t *device, taliseRxChannels_t rxChannel, uint8_t gainIndex);
|
||||
|
||||
/**
|
||||
* \brief Reads the Rx AGC/MGC Gain Index for the passed channel
|
||||
*
|
||||
* This function reads the gain index for the passed channel, Rx1, Rx2.
|
||||
*
|
||||
* This function reads back the AGC gain index or manual gain
|
||||
* index per channel, depending on the gain control mode.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
* and the ARM processor has moved to Radio ON state at least once.
|
||||
* However, gain indices are tracked only after the device goes into a
|
||||
* Receiver mode. So the function will return a TALACT_ERR_CHECK_PARAM
|
||||
* recovery action if used before the part enters the receiver mode for
|
||||
* the first time since there is no gain index history available.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param rxChannel Channel selection to read back gain index for (Valid Rx1, Rx2 only)
|
||||
* \param rxGainIndex Pointer to the specified channel gain index value
|
||||
*
|
||||
* \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_getRxGain(taliseDevice_t *device, taliseRxChannels_t rxChannel, uint8_t *rxGainIndex);
|
||||
|
||||
/**
|
||||
* \brief Sets the ORx gain of the ObsRx channel
|
||||
*
|
||||
* The ObsRx channel can have different RF inputs (ORx1/ORx2)
|
||||
* This function sets the ObsRx gain index independently for ORx1/ORx2.
|
||||
* The maximum index is 255 and the minimum index is application specific.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param obsRxCh is an enum type taliseObsRxChannels_t to identify the desired RF input for gain change
|
||||
* \param gainIndex Desired manual gain table index to set
|
||||
*
|
||||
* \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_setObsRxManualGain(taliseDevice_t *device, taliseObsRxChannels_t obsRxCh, uint8_t gainIndex);
|
||||
|
||||
/**
|
||||
* \brief Reads the MGC gain index for the passed Obs Rx channel.
|
||||
*
|
||||
* This function reads the gain index for the passed channel, ORx1 or
|
||||
* ORx2.
|
||||
*
|
||||
* This function reads back the manual gain
|
||||
* index per channel, depending on the gain control mode.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization.
|
||||
* However, gain indices are tracked only after the device goes into a
|
||||
* Receiver mode. So the function will return a TALACT_ERR_CHECK_PARAM
|
||||
* recovery action if used before the part enters the receiver mode for
|
||||
* the first time since there is no gain index history available.
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure
|
||||
* \param obsRxChannel Channel selection to read back gain index for (Valid TAL_ORX1 or TAL_ORX2 only)
|
||||
* \param obsRxGainIndex Read back gain index 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_getObsRxGain(taliseDevice_t *device, taliseObsRxChannels_t obsRxChannel, uint8_t *obsRxGainIndex);
|
||||
|
||||
/**
|
||||
* \brief Configures the Rx gain control mode
|
||||
*
|
||||
* The Talise device defaults to Manual Gain Control (MGC) mode on power-up.
|
||||
* This API is used to reconfigure the Rx Gain Control Mode.
|
||||
*
|
||||
* \pre This function should be called before Rx operation is initiated.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device data structure
|
||||
* \param mode Desired gain mode to be configured. Parameter is of enumerated type taliseGainMode_t where:
|
||||
* Manual Gain = MGC,
|
||||
* Automatic Gain Control Fast Attack = AGCFAST,
|
||||
* Automatic Gain Control Slow loop = AGCSLOW ,
|
||||
* Hybrid mode = HYBRID
|
||||
*
|
||||
*
|
||||
* \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_setRxGainControlMode(taliseDevice_t *device, taliseGainMode_t mode);
|
||||
|
||||
/**
|
||||
* \brief Sets the Rx Data format to integer or floating point format.
|
||||
*
|
||||
* The function allows selecting the Rx data format (integer or floating point)
|
||||
* and allows configuring the various data formatting options. If
|
||||
* this function is not called, the Talise defaults to integer format.
|
||||
* The floating point format can be set for one of several 16 bit floating
|
||||
* point formats. The user can select the number of exponent and significand
|
||||
* bits. It is not possible to represent every possible sample value with
|
||||
* 16bit floating point format. When using integer formatting, the number of slicer
|
||||
* bits as well as their position in the data word are selectable. The GPIO bits are
|
||||
* also user selectable for external slicer control mode.
|
||||
*
|
||||
* The Talise data formatting should be used in conjunction with the
|
||||
* gain compensation feature.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param rxDataFormat Pointer to the Rx data format configuration structure
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setRxDataFormat (taliseDevice_t *device, taliseRxDataFormat_t *rxDataFormat);
|
||||
|
||||
/**
|
||||
* \brief Retreive the Rx data path format configuration.
|
||||
*
|
||||
* Use this command to retrieve the Rx data path data formatting configuration
|
||||
* set by the TALISE_setRxDataFormat function.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param rxDataFormat Pointer to the Rx data format configuration structure
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getRxDataFormat(taliseDevice_t *device, taliseRxDataFormat_t *rxDataFormat);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Get the gain slicer position bits for both Rx1 and Rx2.
|
||||
*
|
||||
* Before this information is valid, the Rx gain compensation feature should be enabled with
|
||||
* the integer gain slicer sample format enabled. See the Talise.SetRxDataFormat() function
|
||||
* to enable gain compensation. This function is not useful in the case of using floating point
|
||||
* as the gain slicer (data scaling) is applied in the floating point scaled sample.
|
||||
*
|
||||
* The slicer position is only needed for integer 12bit and 16bit formats. The 24bit sample format
|
||||
* already applies scaling in the 24bit sample.
|
||||
*
|
||||
* Slicer Position[2:0] | Description
|
||||
* ---------------------|---------------------------------------------
|
||||
* 0 | 0dB gain
|
||||
* 1 | Rx Data samples should be scaled by +6dB
|
||||
* 2 | Rx Data samples should be scaled by +12dB
|
||||
* 3 | Rx Data samples should be scaled by +18dB
|
||||
* 4 | Rx Data samples should be scaled by +24dB
|
||||
* 5 | Rx Data samples should be scaled by +30dB
|
||||
* 6 | Rx Data samples should be scaled by +36dB
|
||||
* 7 | Rx Data samples should be scaled by +42dB
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param rx1SlicerPosition Pointer to byte containing 3 slicer position bits for Rx1.
|
||||
* \param rx2SlicerPosition Pointer to byte containing 3 slicer position bits for Rx2.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getSlicerPosition(taliseDevice_t *device, uint8_t *rx1SlicerPosition, uint8_t *rx2SlicerPosition);
|
||||
|
||||
/**
|
||||
* \brief Configures Gain steps and the GPIO inputs for Manual Rx gain control
|
||||
*
|
||||
* This API function configures the GPIO input pin and step size to allow the
|
||||
* BBP to control gain changes in Rx signal chain.
|
||||
* A high pulse on the 'rxGainIncPin' in pin control mode will increment the
|
||||
* gain by the value set in 'incStep'.
|
||||
* A high pulse on the 'rxGainDecPin' in pin control mode will decrement the
|
||||
* gain by the value set in 'decStep'.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
*
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1 or Rx2
|
||||
* channel for programming.
|
||||
*
|
||||
* \param rxGainCtrlPin Pointer to taliseRxGainCtrlPin_t structure that
|
||||
* configures the Manual Rx gain pin control.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setRxGainCtrlPin(taliseDevice_t *device, taliseRxChannels_t rxChannel, taliseRxGainCtrlPin_t *rxGainCtrlPin);
|
||||
|
||||
/**
|
||||
* \brief This API function returns the configuration (Gain steps and the GPIO
|
||||
* inputs) for Manual Rx gain control.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
*
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1 or Rx2
|
||||
* channel for reading configuration from.
|
||||
*
|
||||
* \param rxGainCtrlPin Pointer to taliseRxGainCtrlPin_t structure that
|
||||
* would contain configuration values for Manual Rx gain pin control.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getRxGainCtrlPin(taliseDevice_t *device, taliseRxChannels_t rxChannel, taliseRxGainCtrlPin_t *rxGainCtrlPin);
|
||||
|
||||
/**
|
||||
* \brief This private helper function sets the Dual band datapath configuration.
|
||||
*
|
||||
* The dualband mode of operation allows the wideband receiver to receive two
|
||||
* adjacent bands, split them into individual paths, filter (decimation), and
|
||||
* pack them together or send them out on the JESD as separate converter data.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep{device->devStateInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param init Pointer to the NCO Shifter Configuration settings.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
talRecoveryActions_t talSetDualBandSettings(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief Programs the Dualband external LNA control gain table settings for
|
||||
* either Rx1, Rx2, Rx1 + Rx2 receiver types
|
||||
*
|
||||
* The gain table for a receiver type is set with the parameters passed by
|
||||
* taliseDualBandLnaGainTable_t gainTablePtr array. The array length (n) is
|
||||
* conveyed by numGainIndexesInTable. The table can have a maximum of 4
|
||||
* entries. The first entry in the array corresponds to entry 0, second to
|
||||
* entry 1, and so on.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{device->devStateInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Structure pointer to the Talise device data structure
|
||||
* \param gainTablePtr Pointer to Dual Band LNA gain table array of taliseDualBandLnaGainTable_t structures
|
||||
* \param numGainIndexesInTable The number of 'n' indices in gainTablePtr array. A range
|
||||
* check is performed to ensure the maximum (4) is not exceeded.
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1, Rx2,
|
||||
* Rx1 + Rx2 gain table for programming. A channel check is performed to
|
||||
* ensure a valid selection.
|
||||
*
|
||||
* \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_programDualBandLnaGainTable( taliseDevice_t *device, taliseDualBandLnaGainTable_t *gainTablePtr, uint8_t numGainIndexesInTable, taliseRxChannels_t rxChannel);
|
||||
|
||||
/**
|
||||
* \brief Private function sets the configuration for Low IF to Zero IF mode used only by
|
||||
* Talise_initialize(). Application should set the init structure prior to calling
|
||||
* Talise_initialize().
|
||||
*
|
||||
* This mode allows the receiver to downconvert the signal to Low IF, and then
|
||||
* shift it to zero IF using the NCO. The user provides the center frequency
|
||||
* of the downconverted low IF band to the API, and the API programs the NCO
|
||||
* to shift the center frequency of the band to zero.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep{device->devStateInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param init Pointer to the NCO Shifter Configuration settings.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
talRecoveryActions_t talSetupNcoShifter(taliseDevice_t *device, taliseInit_t *init);
|
||||
|
||||
/**
|
||||
* \brief Programs the GPIOs to output external control word of the current gain index
|
||||
*
|
||||
* External Control Word is a 4 bit data which is unique for each gain index. It is
|
||||
* unique for channels Rx1 and Rx2. External control word corresponding to the current
|
||||
* gain index can be output on 3.3V GPIO[3:0] for Rx1 and 3.3V GPIO[7:4] for Rx2.
|
||||
* This API configures the corresponding GPIOs as output based on the rxChannel parameter
|
||||
* to output the external control word.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devStateInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1, Rx2,
|
||||
* Rx1 + Rx2 gain table external control word to be output on GPIOs
|
||||
* \param enable3p3vGpios 1=enable output of Rx Gain table external control words on 3.3v GPIOs or 0=disable
|
||||
* output of external control words on GPIOs.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setGainTableExtCtrlPins(taliseDevice_t *device, taliseRxChannels_t rxChannel, uint8_t enable3p3vGpios);
|
||||
|
||||
/**
|
||||
* \brief Performs a power measurement in the Rx digital data path for the channel specified.
|
||||
*
|
||||
* Due to interdependencies between the AGC and power measurement the power measurement duration and
|
||||
* where the measurement is taken is variable. Call TALISE_setupRxAgc() to configure power measurement.
|
||||
* The location of the power measurement is given by rxAgcCtrl->agcPower->[powerUseRfirOut/powerUseBBDC2].
|
||||
* The number of samples the power measurement uses is given by 8*2^(rxAgcCtrl->agcPower->powerMeasurementDuration) at the IQ rate,
|
||||
* if measured at RFIR output. This number of samples must be less than the agcGainUpdateCounter.
|
||||
* If the receiver is disabled during the power measurement, this function returns a 0 value for rx1DecPower_mdBFS
|
||||
*
|
||||
* The resolution of this function is 0.25dB.
|
||||
* When the measurement location is HB2 (i.e., powerUseRfirOut == powerUseBBDC2 == 0) the dynamic range of this function is 40dB.
|
||||
* Signals lower than -40dBFS may not be measured accurately. When measuring from RfirOut or BBDC2, the dynamic range of this
|
||||
* function is 60dB. Signals lower than -60 dBFS may not be measured accurately.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep{rxAgcCtrl->agcPower}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise data structure containing settings
|
||||
* \param rxChannel taliseRxChannels_t enum type to select either Rx1 or Rx2
|
||||
* \param rxDecPower_mdBFS Pointer to store the Rx decimated power return. Value returned in mdBFS
|
||||
*
|
||||
* \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_getRxDecPower(taliseDevice_t *device, taliseRxChannels_t rxChannel, uint16_t *rxDecPower_mdBFS);
|
||||
|
||||
/****************************************************************************
|
||||
* Helper functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Debug functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_RX_H_ */
|
||||
Binary file not shown.
Executable
+248
@@ -0,0 +1,248 @@
|
||||
/**
|
||||
* \file talise_rx_types.h
|
||||
* \brief Contains Talise API Rx datapath data types
|
||||
*
|
||||
* 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_RX_TYPES_H_
|
||||
#define TALISE_RX_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_radioctrl_types.h"
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Rx channel enables
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_RXOFF = 0, /*!< No Rx channels are enabled */
|
||||
TAL_RX1, /*!< Rx1 channel enabled */
|
||||
TAL_RX2, /*!< Rx2 channel enabled */
|
||||
TAL_RX1RX2 /*!< Rx1 + Rx2 channels enabled */
|
||||
} taliseRxChannels_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Observation Rx channels to enable and run calibrations for during init.
|
||||
* Choose ENUM value that enables all channels that will be used in the system. During system use,
|
||||
* only one channel can be used at a time. This is also used to alert the ARM processor
|
||||
* which observation channels are valid for the current desired system setup.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ORXOFF = 0x00,
|
||||
TAL_ORX1 = 0x01,
|
||||
TAL_ORX2 = 0x02,
|
||||
TAL_ORX1ORX2 = 0x03
|
||||
} taliseObsRxChannels_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to set the Rx Gain control mode
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_MGC = 0, /*!< Manual Gain Control */
|
||||
TAL_AGCFAST = 1, /*!< 01 Fast Attack AGC Mode TDD mode */
|
||||
TAL_AGCSLOW = 2, /*!< Slow Loop AGC FDD, TDD modes */
|
||||
TAL_HYBRID = 3 /*!< Hybrid AGC Gain Control */
|
||||
} taliseGainMode_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t rxFeGain;
|
||||
uint8_t extControl;
|
||||
uint8_t adcTiaGain;
|
||||
int16_t digGain;
|
||||
uint16_t phaseOffset;
|
||||
} taliseRxGainTable_t;
|
||||
|
||||
typedef struct
|
||||
{
|
||||
uint8_t rxFeGain;
|
||||
uint8_t extControl;
|
||||
uint8_t adcTiaGain;
|
||||
int16_t digGain;
|
||||
} taliseOrxGainTable_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise Floating Point Formatter number of exponent bits
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_2_EXPONENTBITS = 0, /*!< Floating point values have 2 exponent bits, 13 significand bits, 1 sign bit */
|
||||
TAL_3_EXPONENTBITS = 1, /*!< Floating point values have 3 exponent bits, 12 significand bits, 1 sign bit */
|
||||
TAL_4_EXPONENTBITS = 2, /*!< Floating point values have 4 exponent bits, 11 significand bits, 1 sign bit */
|
||||
TAL_5_EXPONENTBITS = 3 /*!< Floating point values have 5 exponent bits, 10 significand bits, 1 sign bit */
|
||||
} taliseFpExponentModes_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise Floating Point Formatter rounding modes for the Rx data path
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ROUND_TO_EVEN = 0, /*!< Round floating point ties to an even value */
|
||||
TAL_ROUNDTOWARDS_POSITIVE = 1, /*!< Round floating point toward the positive direction */
|
||||
TAL_ROUNDTOWARDS_NEGATIVE = 2, /*!< Round floating point toward the negative direction */
|
||||
TAL_ROUNDTOWARDS_ZERO = 3, /*!< Round floating point toward the zero direction */
|
||||
TAL_ROUND_FROM_EVEN = 4 /*!< Round floating point ties away from even value */
|
||||
} taliseFpRoundModes_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise Rx attenuation values that are used when the
|
||||
* floating point format is enabled
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_FPATTEN_24DB = 4, /*!< Set Rx attenuation to 24 dB when Rx Data format set to floating point mode */
|
||||
TAL_FPATTEN_18DB = 5, /*!< Set Rx attenuation to 18 dB when Rx Data format set to floating point mode */
|
||||
TAL_FPATTEN_12DB = 6, /*!< Set Rx attenuation to 12 dB when Rx Data format set to floating point mode */
|
||||
TAL_FPATTEN_6DB = 7, /*!< Set Rx attenuation to 6 dB when Rx Data format set to floating point mode */
|
||||
TAL_FPATTEN_0DB = 0, /*!< Set Rx attenuation to 0 dB when Rx Data format set to floating point mode */
|
||||
TAL_FPATTEN_MINUS6DB = 1, /*!< Set Rx attenuation to -6 dB when Rx Data format set to floating point mode */
|
||||
TAL_FPATTEN_MINUS12DB = 2, /*!< Set Rx attenuation to -12 dB when Rx Data format set to floating point mode */
|
||||
TAL_FPATTEN_MINUS18DB = 3 /*!< Set Rx attenuation to -18 dB when Rx Data format set to floating point mode */
|
||||
} taliseFpAttenSteps_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to select the four Data Formatting options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_GAIN_COMPENSATION_DISABLED = 0, /*!< Gain Compensation and Data Formatting are disabled */
|
||||
TAL_GAIN_WITH_FLOATING_POINT, /*!< Gain Compensation enabled with floating point data formatting enabled and internal slicer enabled */
|
||||
TAL_GAIN_WITH_INTSLICER_NOGPIO, /*!< Gain Compensation enabled with integer data formatting and internal slicer enabled with no GPIO Slicer Position output */
|
||||
TAL_GAIN_WITH_INTSLICER, /*!< Gain Compensation enabled with integer data formatting and internal slicer enabled with GPIO Slicer Position output */
|
||||
TAL_GAIN_WITH_EXTERNAL_SLICER /*!< Gain Compensation enabled with integer data formatting and external slicer enabled */
|
||||
} taliseDataFormattingModes_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise Gain Slicer external pin gain step size. Slicer gain in this mode is determined by multiplying the step size by the step size selection from the base band processor.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_EXTSLICER_STEPSIZE_1DB = 0, /*!< Set Gain Slicer External gain step size to 1dB */
|
||||
TAL_EXTSLICER_STEPSIZE_2DB, /*!< Set Gain Slicer External gain step size to 2dB */
|
||||
TAL_EXTSLICER_STEPSIZE_3DB, /*!< Set Gain Slicer External gain step size to 3dB */
|
||||
TAL_EXTSLICER_STEPSIZE_4DB /*!< Set Gain Slicer External gain step size to 4dB */
|
||||
} taliseGainStepSize_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise Rx1 Gain Slicer external pin GPIO selection options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_EXTSLICER_RX1_GPIO0_1_2 = 0, /*!< Select Rx1 Gain Slicer External GPIO0, GPIO1, GPIO2 */
|
||||
TAL_EXTSLICER_RX1_GPIO5_6_7, /*!< Select Rx1 Gain Slicer External GPIO5, GPIO6, GPIO7 */
|
||||
TAL_EXTSLICER_RX1_GPIO8_9_10, /*!< Select Rx1 Gain Slicer External GPIO8, GPIO9, GPIO10 */
|
||||
TAL_EXTSLICER_RX1_GPIO_DISABLE /*!< Select Rx1 Disable Gain Slicer External GPIO */
|
||||
} taliseRx1ExtSlicerGpioSelect_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise Rx2 Gain Slicer external pin GPIO selection options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_EXTSLICER_RX2_GPIO11_12_13 = 0, /*!< Select Rx2 Gain Slicer External GPIO11, GPIO12, GPIO13 */
|
||||
TAL_EXTSLICER_RX2_GPIO5_6_7 = 1, /*!< Select Rx2 Gain Slicer External GPIO5, GPIO6, GPIO7 */
|
||||
TAL_EXTSLICER_RX2_GPIO_DISABLE = 3 /*!< Select Rx2 Disable Gain Slicer External GPIO */
|
||||
} taliseRx2ExtSlicerGpioSelect_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise integer mode number of embedded slicer bits and positions
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_NO_EMBEDDED_SLICER_BITS = 0, /*!< Disabled all embedded slicer bits */
|
||||
TAL_EMBED_1_SLICERBIT_AT_MSB, /*!< Embeds 1 slicer bits on I and 1 slicer bits on Q and the MSB position in the data frame */
|
||||
TAL_EMBED_1_SLICERBIT_AT_LSB, /*!< Embeds 1 slicer bits on I and 1 slicer bits on Q and the LSB position in the data frame */
|
||||
TAL_EMBED_2_SLICERBITS_AT_MSB, /*!< Embeds 2 slicer bits on I and 2 slicer bits on Q and the MSB position in the data frame */
|
||||
TAL_EMBED_2_SLICERBITS_AT_LSB /*!< Embeds 2 slicer bits on I and 2 slicer bits on Q and the LSB position in the data frame */
|
||||
} taliseEmbeddedBits_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to hold Talise integer sample resolution
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_INTEGER_12BIT_2SCOMP = 0, /*!< Selects integer sample 12 bit resolution with 2s compliment */
|
||||
TAL_INTEGER_12BIT_SIGNED, /*!< Selects integer sample 12 bit resolution with signed magnitude */
|
||||
TAL_INTEGER_16BIT_2SCOMP, /*!< Selects integer sample 16 bit resolution with 2s compliment */
|
||||
TAL_INTEGER_16BIT_SIGNED, /*!< Selects integer sample 16 bit resolution with signed magnitude */
|
||||
TAL_INTEGER_24BIT_2SCOMP, /*!< Selects integer sample 24 bit resolution with 2s compliment */
|
||||
TAL_INTEGER_24BIT_SIGNED /*!< Selects integer sample 24 bit resolution with signed magnitude */
|
||||
} taliseIntSampleResolution_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise Floating Point Formatter Configuration
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseDataFormattingModes_t formatSelect; /*!< Rx Channel format mode selects */
|
||||
|
||||
/* Float Config Settings */
|
||||
taliseFpRoundModes_t fpRoundMode; /*!< Rounding mode for floating point format (See enum values) */
|
||||
uint8_t fpDataFormat; /*!< If floating point format is enabled in formatSelect member, this sets the 16 bit output from MSB to LSB, 1 = {Sign, Significand, Exponent}, 0 = {Sign, Exponent, Significand} */
|
||||
uint8_t fpEncodeNan; /*!< 1 = encodes the highest value of Exponent to mean NaN (Not a Number) to be compatible to IEEE754 specification (Valid: 0 or 1) */
|
||||
taliseFpExponentModes_t fpNumExpBits; /*!< Indicates the number of exponent and significand bits in the floating point number */
|
||||
uint8_t fpHideLeadingOne; /*!< 1 = Hides the leading one in significand to be compatible to the IEEE754 specification. 0 = a leading one exists at the MSB of the significand. (Valid: 0, 1) */
|
||||
taliseFpAttenSteps_t fpRx1Atten; /*!< Rx1 - Attenuate integer data when floating point mode enabled, see enum for values from 0dB to 42dB in 6dB steps */
|
||||
taliseFpAttenSteps_t fpRx2Atten; /*!< Rx2 - Attenuate integer data when floating point mode enabled, see enum for values from 0dB to 42dB in 6dB steps */
|
||||
|
||||
/* Integer Config Settings */
|
||||
taliseEmbeddedBits_t intEmbeddedBits; /*!< Integer number of embedded bits and position */
|
||||
taliseIntSampleResolution_t intSampleResolution; /*!< Integer sample resolution selecting either 12, 16, 14 bit modes with signed or 2s Complement */
|
||||
|
||||
/* Slicer Config Settings */
|
||||
taliseGainStepSize_t extPinStepSize; /*!< Enum selects the external pin gain step size */
|
||||
taliseRx1ExtSlicerGpioSelect_t rx1GpioSelect; /*!< Enum selects the Rx1 GPIO Configuration */
|
||||
taliseRx2ExtSlicerGpioSelect_t rx2GpioSelect; /*!< Enum selects the Rx2 GPIO Configuration */
|
||||
uint8_t externalLnaGain; /*!< Selects Slicer to compensate for external dualband LNA {0 - disabled, 1 - enabled */
|
||||
uint8_t tempCompensationEnable; /*!< Selects Slicer to compensate for temperature variations {0 - disabled, 1 - enabled */
|
||||
} taliseRxDataFormat_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise Rx Gain Control Pin Configuration
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t incStep; /*!< Increment in gain index applied when the increment gain pin is pulsed. A value of 0 to 7 applies a step size of 1 to 8 */
|
||||
uint8_t decStep; /*!< Decrement in gain index applied when the increment gain pin is pulsed. A value of 0 to 7 applies a step size of 1 to 8 */
|
||||
taliseGpioPinSel_t rxGainIncPin;/*!< GPIO used for the Increment gain input: Rx1 : TAL_GPIO_00 or TAL_GPIO_10, Rx2 : TAL_GPIO_03 or TAL_GPIO_13*/
|
||||
taliseGpioPinSel_t rxGainDecPin;/*!< GPIO used for the Decrement gain input: Rx1 : TAL_GPIO_01 or TAL_GPIO_11, Rx2 : TAL_GPIO_04 or TAL_GPIO_14*/
|
||||
uint8_t enable; /*!< Enable (1) or disable (0) the gain pin control*/
|
||||
} taliseRxGainCtrlPin_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise Rx dualband LNA gain table entries
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t dualbandControl; /*!< The external control value to be output on the 3.3V GPIO?s to control the LNA (values 0-3). */
|
||||
uint8_t dualbandGain; /*!< The gain compensation value for the corresponding external control, used for RSSI and gain compensation.
|
||||
Range of 0 to 63 (0 to +31.5db in 0.5db steps). */
|
||||
} taliseDualBandLnaGainTable_t;
|
||||
|
||||
typedef enum
|
||||
{
|
||||
TAL_RX1_NCO1A = 0,
|
||||
TAL_RX1_NCO1B,
|
||||
TAL_RX1_NCO2A,
|
||||
TAL_RX1_NCO2B,
|
||||
|
||||
TAL_RX2_NCO1A,
|
||||
TAL_RX2_NCO1B,
|
||||
TAL_RX2_NCO2A,
|
||||
TAL_RX2_NCO2B
|
||||
} taliseRxNcoChannel_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_RX_TYPES_H_ */
|
||||
Executable
+1017
File diff suppressed because it is too large
Load Diff
Executable
+416
@@ -0,0 +1,416 @@
|
||||
/**
|
||||
* \file talise_tx.h
|
||||
* \brief Contains Talise transmit related function prototypes for
|
||||
* talise_tx.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_TX_H_
|
||||
#define TALISE_TX_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
#include "talise_tx_types.h"
|
||||
|
||||
/****************************************************************************
|
||||
* Initialization functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Runtime functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/**
|
||||
* \brief This API function has to be used in order to set the Tx RF output attenuation for each Tx output channel
|
||||
*
|
||||
* The attenuation that will be applied to the passed \c txChannel as follows:
|
||||
* txChannel | Description
|
||||
* -----------|------------------------------------
|
||||
* TX1 | sets attenuation txAttenuation_mdB for TX1
|
||||
* TX2 | sets attenuation txAttenuation_mdB for TX2
|
||||
*
|
||||
* \pre This function may be called any time after device initialization
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device's data structure
|
||||
* \param txChannel should be one of the enum taliseTxAttChannels_t, note that TXOFF wont have any effect. Only can set one channel at a time.
|
||||
* \param txAttenuation_mdB The desired TxAttenuation in milli-dB (Range: 0 to 41950 mdB)
|
||||
*
|
||||
* \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_setTxAttenuation(taliseDevice_t *device, taliseTxChannels_t txChannel, uint16_t txAttenuation_mdB);
|
||||
|
||||
/**
|
||||
* \brief Reads back the Tx1 or Tx2 RF output attenuation
|
||||
*
|
||||
* This function reads back the Tx attenuation setting for either the Tx1 or Tx2 RF channel currently applied to the transmit chain.
|
||||
* This function can work with SPI mode or pin controlled Tx attenuation mode using the increment/decrement GPIO
|
||||
* pins.
|
||||
*
|
||||
* \pre The Tx data path must be powered up for the current attenuation value to be valid. If the Tx data path
|
||||
* is powered down or the radio is off, the last Tx attenuation setting when the Tx output was previously active will be
|
||||
* read back.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->devHalInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the Talise device's data structure
|
||||
* \param txChannel Is one of the enum taliseTxAttChannels_t channel types, where only TAL_TX1 or TAL_TX2 are valid choices.
|
||||
* Note that TAL_TX_OFF will not have any effect.
|
||||
* \param txAttenuation_mdB Pointer to the readback value of the desired Tx channel attenuation in milli-dB (Range: 0 to 41950 mdB)
|
||||
*
|
||||
* \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_getTxAttenuation(taliseDevice_t *device, taliseTxChannels_t txChannel, uint16_t *txAttenuation_mdB);
|
||||
|
||||
|
||||
/**
|
||||
* \brief Sets the DAC full scale current boost
|
||||
*
|
||||
* This function can be used to adjust the DAC fullscale.
|
||||
* This will change the Tx output power. The DAC fullscale of zero DB is the
|
||||
* default setting.
|
||||
*
|
||||
* \pre This function must be called before loading the Talise ARM processor
|
||||
*
|
||||
* \param device Pointer to the Talise device's data structure
|
||||
* \param dacFullScale Is of the enum taliseDacFullScale_t that are the options
|
||||
* for the DAC boost levels.
|
||||
*
|
||||
* \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_setDacFullScale(taliseDevice_t *device, taliseDacFullScale_t dacFullScale);
|
||||
|
||||
/**
|
||||
* \brief Enables/Disables the Tx NCO test tone
|
||||
*
|
||||
* This function enables/disables a digital numerically controlled oscillator
|
||||
* in the Talise Digital to create a test CW tone on Tx1 and Tx2 RF outputs.
|
||||
*
|
||||
* The TxAttenuation is forced in this function to max analog output power,
|
||||
* but the digital attenuation is backed off 6dB to make sure the digital
|
||||
* filter does not clip and cause spurs in the tx spectrum. Ensure no other
|
||||
* API's are called that change the Tx attenuation mode when using this
|
||||
* function
|
||||
*
|
||||
* When the Tx NCO test tone is disabled, the function sets the Tx attenuation
|
||||
* to the SPI mode. User may need to use other functions to change the mode.
|
||||
*
|
||||
* \param device Pointer to the Talise device's data structure
|
||||
* \param txNcoTestToneCfg Pointer to taliseTxNcoTestToneCfg_t structure that
|
||||
* contains the configuration for the Tx NCO test tone
|
||||
*
|
||||
* \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_enableTxNco(taliseDevice_t *device, taliseTxNcoTestToneCfg_t *txNcoTestToneCfg);
|
||||
|
||||
/**
|
||||
* \brief Configures Gain steps and the GPIO inputs for Tx attenuation control
|
||||
*
|
||||
* This API function configures the GPIO input pin and step size to allow the
|
||||
* BBP to control attenuation changes in Tx signal chain.
|
||||
* A high pulse on the 'txAttenIncPin' in pin control mode will increment the
|
||||
* gain by the value set in 'stepSize'.
|
||||
* A high pulse on the 'txAttenDecPin' in pin control mode will decrement the
|
||||
* gain by the value set in 'stepSize'.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
*
|
||||
* \param txChannel taliseTxChannels_t enum type to select either Tx1 or Tx2
|
||||
* channel for programming.
|
||||
*
|
||||
* \param txAttenCtrlPin Pointer to taliseTxAttenCtrlPin_t structure that
|
||||
* configures the Tx attenuation pin control.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setTxAttenCtrlPin(taliseDevice_t *device, taliseTxChannels_t txChannel, taliseTxAttenCtrlPin_t *txAttenCtrlPin);
|
||||
|
||||
/**
|
||||
* \brief This API function returns the configuration (Gain steps and the GPIO
|
||||
* inputs) for Tx Attenuation pin control.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
*
|
||||
* \param txChannel taliseTxChannels_t enum type to select either Tx1 or Tx2
|
||||
* channel for reading configuration from.
|
||||
*
|
||||
* \param txAttenCtrlPin Pointer to taliseTxAttenCtrlPin_t structure that
|
||||
* would contain configuration values for Tx attenuation pin control.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getTxAttenCtrlPin(taliseDevice_t *device, taliseTxChannels_t txChannel, taliseTxAttenCtrlPin_t *txAttenCtrlPin);
|
||||
|
||||
/**
|
||||
* \brief Writes Talise device registers with settings for the PA Protection feature.
|
||||
*
|
||||
* This function sets up the PA Protection functionality and enables Tx sample
|
||||
* power measurements. It does not enable the ability to change Tx Attenuation
|
||||
* automatically. To enable automatic TxAttenuation increase when the Tx sample
|
||||
* average power exceeds a threshold, follow this setup function with the
|
||||
* TALISE_enablePaProtection() function.
|
||||
*
|
||||
* The PA Protection feature allows for error flags to go high if the
|
||||
* average TX IQ sample power (before interpolation at JESD204 interface) in
|
||||
* the data path exceeds a programmable threshold level based on samples taken
|
||||
* in a programmable duration. Also, the peak power measurement mode allows
|
||||
* flagging an error when the instantaneous power exceeds a threshold more than a
|
||||
* programmable count value(Silicon Rev B1 0-30, Silicon Rev C0 0-31) within the
|
||||
* average duration.
|
||||
*
|
||||
* \pre Complete normal Talise initialization and init cals before running this function.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* peakThreshold Value | dBFS threshold = 10 * Log10(peakThresholdVal/128)
|
||||
* --------------------|----------------------------------------------------------
|
||||
* 0 | Invalid
|
||||
* 1 | -21.07 dBFS
|
||||
* 2 | -18.06 dBFS
|
||||
* 3 | -16.30 dBFS
|
||||
* 4 | -15.05 dBFS
|
||||
* 5 | -14.08 dBFS
|
||||
* 6 | -13.29 dBFS
|
||||
* 7 | -12.62 dBFS
|
||||
* 8 | -12.04 dBFS
|
||||
* ... | Calulate with EQ above
|
||||
* 16 | -9.03 dBFS
|
||||
* ... | ...
|
||||
* 32 | -6.02 dBFS
|
||||
* ... | ...
|
||||
* 64 | -3.01 dBFS
|
||||
* ... | ...
|
||||
* 128 | 0 dBFS
|
||||
* ... | ...
|
||||
* 255 | 3.01 dBFS
|
||||
*
|
||||
* Tx1PowerThreshold Value | dBFS threshold = 10 * Log10(tx1PowerThresholdVal/4096)
|
||||
* -------------------------|----------------------------------------------------------
|
||||
* 0 | Invalid
|
||||
* 1 | -36.12 dBFS
|
||||
* 2 | -33.11 dBFS
|
||||
* 3 | -31.35 dBFS
|
||||
* 4 | -30.10 dBFS
|
||||
* 5 | -29.13 dBFS
|
||||
* 6 | -28.34 dBFS
|
||||
* 7 | -27.67 dBFS
|
||||
* 8 | -27.09 dBFS
|
||||
* ... | Calulate with EQ above
|
||||
* 16 | -24.08 dBFS
|
||||
* ... | ...
|
||||
* 32 | -21.07 dBFS
|
||||
* ... | ...
|
||||
* 64 | -18.06 dBFS
|
||||
* ... | ...
|
||||
* 128 | -15.05 dBFS
|
||||
* ... | ...
|
||||
* 256 | -12.04 dBFS
|
||||
* ... | ...
|
||||
* 512 | -9.03 dBFS
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param txPaProtectCfg Structure holding the setup values for the Tx PA Protection feature
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_setPaProtectionCfg(taliseDevice_t *device, taliseTxPaProtectCfg_t *txPaProtectCfg);
|
||||
|
||||
/**
|
||||
* \brief Reads Talise device registers to retrieve settings for the PA Protection feature.
|
||||
*
|
||||
* The PA Protection feature allows for error flags to go high if the
|
||||
* average TX IQ sample power (before interpolation at JESD204 interface) in
|
||||
* the data path exceeds a programmable threshold level based on samples taken
|
||||
* in a programmable duration. Also, the peak power measurement mode allows
|
||||
* flagging an error when the instantaneous power exceeds a threshold more than a
|
||||
* programmable count value within the average duration.
|
||||
*
|
||||
* \pre Complete normal Talise initialization and init cals before running this function.
|
||||
* Also, call TALISE_setPaProtectionCfg() to set initial configuration.
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param txPaProtectCfg Structure to return the setup values for the Tx PA Protection feature
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getPaProtectionCfg(taliseDevice_t *device, taliseTxPaProtectCfg_t *txPaProtectCfg);
|
||||
|
||||
/**
|
||||
* \brief Enables/Disables ability of PA power protection to override Tx Attenuation.
|
||||
*
|
||||
* Currently not implemented. This function is a placeholder. Currently,
|
||||
* this function will not enable the TxAttenuation change if the PA error flags
|
||||
* are asserted.
|
||||
*
|
||||
* \pre Complete normal Talise initialization and init cals, and call
|
||||
* TALISE_setPaProtectionCfg() before using TALISE_enablePaProtection()
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param enableTxAttenCtrl 1=Allow PA Protection to reduce Tx output power when
|
||||
* Tx sample power exceeds set thresholds, 0=Disable Tx PA protection
|
||||
* control over TxAttenuation.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_enablePaProtection(taliseDevice_t *device, uint8_t enableTxAttenCtrl);
|
||||
|
||||
/**
|
||||
* \brief Read back Tx average IQ sample power (input samples at JESD204 port)
|
||||
* based on settings from TALISE_setPaProtectionCfg()
|
||||
*
|
||||
* channelPower return value is not returned in dBFS. To calculate the dBFS value
|
||||
* perform the follow calculation: TxAveragePower_dBFS = 10 * log10(channelPower/2^15)
|
||||
*
|
||||
* \pre Complete normal Talise initialization and init cals, and call
|
||||
* TALISE_setPaProtectionCfg() before using TALISE_getTxSamplePower()
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param txChannel TAL_TX1(1)=Read power from Tx1, TAL_TX2(2)=Read power from Tx2
|
||||
* \param channelPower Most recent tx average IQ sample power for specified tx channel (linear power with 32768 = 0dB)
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getTxSamplePower(taliseDevice_t *device, taliseTxChannels_t txChannel, uint16_t *channelPower);
|
||||
|
||||
/**
|
||||
* \brief Read back Tx PA Protection error IRQ flags
|
||||
*
|
||||
* If Tx PA Protection is configured and enabled, the error flags per channel
|
||||
* can be read back to determine which transmitter exceeded the set peak or
|
||||
* average power threshold. The PA protection error flags can also be set
|
||||
* to assert the GP interrupt pin for immediate feedback to the BBIC when the
|
||||
* Tx power into the PA is of concern.
|
||||
*
|
||||
* \pre Complete normal Talise initialization and init cals, and call
|
||||
* TALISE_setPaProtectionCfg() first
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
* \param errorFlags Returns error flag per channel. Bit0=1 if Tx1 sample
|
||||
* power exceeded the set threshold. Bit1=1 if Tx2 sample power exceeded
|
||||
* the set threshold.
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_getPaProtectErrorFlags(taliseDevice_t *device, uint8_t *errorFlags);
|
||||
|
||||
/**
|
||||
* \brief Clears both Tx1 and Tx2 PA Protection error IRQ flags
|
||||
*
|
||||
* If Tx PA Protection is configured and enabled, the error flags per channel
|
||||
* can be read back using the TALISE_getPaProtectErrorFlags function. The
|
||||
* error flags will stay asserted until manually cleared. They can be cleared
|
||||
* either using this function or the GP interrupt handler function.
|
||||
*
|
||||
* If the PA protection error flags are routed to the GP interrupt pin, it is
|
||||
* preferred that the GP interrupt handler function be used to clear the error
|
||||
* flags. If PA protection is not routed to assert the GP interrupt pin, this
|
||||
* function many be used to clear the PA protection error flags.
|
||||
*
|
||||
* Calling TALISE_setPaProtectionCfg() will also clear the error flags at the
|
||||
* end of the function to make sure PA protection is enabled with the error
|
||||
* flags in a known state.
|
||||
*
|
||||
* \pre Complete normal Talise initialization and init cals, and call
|
||||
* TALISE_setPaProtectionCfg() first
|
||||
*
|
||||
* \dep_begin
|
||||
* \dep{device->halDevInfo}
|
||||
* \dep_end
|
||||
*
|
||||
* \param device Pointer to the device settings structure
|
||||
*
|
||||
* \retval TALACT_WARN_RESET_LOG Recovery action for log reset
|
||||
* \retval TALACT_ERR_CHECK_PARAM Invalid parameter passed
|
||||
* \retval TALACT_ERR_RESET_SPI Recovery action for SPI reset required
|
||||
* \retval TALACT_NO_ACTION Function completed successfully, no action required
|
||||
*/
|
||||
uint32_t TALISE_clearPaProtectErrorFlags(taliseDevice_t *device);
|
||||
|
||||
/****************************************************************************
|
||||
* Helper functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
/****************************************************************************
|
||||
* Debug functions
|
||||
****************************************************************************
|
||||
*/
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_TX_H_ */
|
||||
Binary file not shown.
Executable
+99
@@ -0,0 +1,99 @@
|
||||
/**
|
||||
* \file talise_tx_types.h
|
||||
* \brief Contains Talise API Tx datapath data types
|
||||
*
|
||||
* 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_TX_TYPES_H_
|
||||
#define TALISE_TX_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Tx channel enables
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_TXOFF = 0, /*!< No Tx channels are enabled */
|
||||
TAL_TX1, /*!< Tx1 channel enabled */
|
||||
TAL_TX2, /*!< Tx2 channel enabled */
|
||||
TAL_TX1TX2 /*!< Tx1 + Tx2 channels enabled */
|
||||
} taliseTxChannels_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible Tx DAC FS boost options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_DACFS_0DB = 0x0, /*!< No Full Scale Boost */
|
||||
TAL_DACFS_3DB = 0x1F /*!< Full scale boost = 3dB */
|
||||
} taliseDacFullScale_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to set the Tx Atenuation step size
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_TXATTEN_0P05_DB = 0, /*!< Tx attenuation 0.05dB step size */
|
||||
TAL_TXATTEN_0P1_DB = 1, /*!< Tx attenuation 0.1dB step size */
|
||||
TAL_TXATTEN_0P2_DB = 2, /*!< Tx attenuation 0.2dB step size */
|
||||
TAL_TXATTEN_0P4_DB = 3 /*!< Tx attenuation 0.4dB step size */
|
||||
} taliseTxAttenStepSize_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise Tx NCO test tone Configuration
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t enable; /*!< 0 = Disable Tx NCO, 1 = Enable Tx NCO on both transmitters */
|
||||
int32_t tx1ToneFreq_kHz; /*!< Signed frequency in kHz of the desired Tx1 tone */
|
||||
int32_t tx2ToneFreq_kHz; /*!< Signed frequency in kHz of the desired Tx2 tone */
|
||||
} taliseTxNcoTestToneCfg_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise Tx Attenuation Control Pin Configuration
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t stepSize; /*!< The step that will increase or decrease the channel attenuation. This parameter sets the
|
||||
change in Tx attenuation for each increment or decrement signal received in incr/decr mode.
|
||||
Step of 1 changes attenuation by 0.05dB. Valid range is from 0 to 31 */
|
||||
taliseGpioPinSel_t txAttenIncPin; /*!< GPIO used to increment Tx attenuation
|
||||
Tx1 : TAL_GPIO_04 or TAL_GPIO_12
|
||||
Tx2 : TAL_GPIO_06 or TAL_GPIO_14 */
|
||||
taliseGpioPinSel_t txAttenDecPin; /*!< GPIO used to decrement Tx attenuation
|
||||
Tx1 : TAL_GPIO_05 or TAL_GPIO_13
|
||||
Tx2 : TAL_GPIO_07 or TAL_GPIO_15 */
|
||||
uint8_t enable; /*!< Enable (1) or disable (0) the attenuation pin control */
|
||||
} taliseTxAttenCtrlPin_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise Tx PA Protection configuration settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t avgDuration; /*!< Number of Tx samples (at JESD204 IQ sample rate) to average for the power measurement.
|
||||
samples = 2^(avgDuration + 5), 0 = 32 samples, max:14 = 524288 samples */
|
||||
uint8_t txAttenStep; /*!< if PA protection threshold met, Tx Atten = TxAttenSetting + (txAttenStep * 0.4dB) */
|
||||
uint16_t tx1PowerThreshold; /*!< tx1PowerThreashold = round(4096 * 10^(tx1PowerThreshold_dBFS / 10)) (valid 1-8191) */
|
||||
uint16_t tx2PowerThreshold; /*!< tx2PowerThreashold = round(4096 * 10^(tx2PowerThreshold_dBFS / 10)) (valid 1-8191) */
|
||||
|
||||
uint8_t peakCount; /*!< 0=Peak Mode is disabled, if the Tx peak power threshold is exceeded more than peakCount times within
|
||||
one average duration, a PA error is flagged (Si Rev 0xB1: 0-30, Si Rev 0xC0: 0-31) */
|
||||
uint8_t tx1PeakThreshold; /*!< 8-bit threshold for Tx1 peak detect. When instantaneous power exceeds this threshold, a peak is registered (valid 1-255)
|
||||
tx1PeakThreshold = round(128 * 10^(tx1PeakThreshold_dBFS / 10)) */
|
||||
uint8_t tx2PeakThreshold; /*!< 8-bit threshold for Tx2 peak detect. When instantaneous power exceeds this threshold, a peak is registered (valid 1-255)
|
||||
tx2PeakThreashold = round(128 * 10^(tx2PeakThreshold_dBFS / 10))*/
|
||||
} taliseTxPaProtectCfg_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* TALISE_TX_TYPES_H_ */
|
||||
Executable
+450
@@ -0,0 +1,450 @@
|
||||
/*!
|
||||
* \file talise_types.h
|
||||
* \brief Contains Talise API configuration and run-time type definitions
|
||||
*
|
||||
* 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_TYPES_H_
|
||||
#define TALISE_TYPES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
#include "talise_rx_types.h"
|
||||
#include "talise_jesd204_types.h"
|
||||
#include "talise_tx_types.h"
|
||||
#include "talise_radioctrl_types.h"
|
||||
|
||||
/**
|
||||
* \brief Enum of possible HS divider settings
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_HSDIV_2 = 0x0, /*!< High speed clock divide by 2 setting */
|
||||
TAL_HSDIV_2P5 = 0x1, /*!< High speed clock divide by 2.5 setting */
|
||||
TAL_HSDIV_3 = 0x2, /*!< High speed clock divide by 3 setting */
|
||||
TAL_HSDIV_4 = 0x3, /*!< High speed clock divide by 4 setting */
|
||||
TAL_HSDIV_5 = 0x4 /*!< High speed clock divide by 5 setting */
|
||||
} taliseHsDiv_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of ORx PLL selections
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_OBSLO_RF_PLL = 0, /*!< Selects RF PLL for Observation LO */
|
||||
TAL_OBSLO_AUX_PLL /*!< Selects AUX PLL for Observation LO */
|
||||
} taliseObsRxLoSource_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to set the desired FIR filter type for related functions
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_TX1_FIR = 1, /*!< Tx1 FIR filter select */
|
||||
TAL_TX2_FIR = 2, /*!< Tx2 FIR filter select */
|
||||
TAL_TX1TX2_FIR = 3, /*!< Tx1 + Tx2 FIR filter select */
|
||||
TAL_RX1_FIR = 4, /*!< Rx1 FIR filter select */
|
||||
TAL_RX2_FIR = 8, /*!< Rx2 FIR filter select */
|
||||
TAL_RX1RX2_FIR = 12, /*!< Rx1 + Rx2 FIR filter select */
|
||||
TAL_RX1RX2_LOOPBACK_FIR = 140, /*!< Rx1 + Rx2 loopback FIR filter select */
|
||||
TAL_OBSRX1_FIR = 16, /*!< ORx1 FIR filter select */
|
||||
TAL_OBSRX2_FIR = 32, /*!< ORx2 FIR filter select */
|
||||
TAL_OBSRX1RX2_FIR = 48, /*!< ORx1 + ORx2 FIR filter select */
|
||||
TAL_OBSRX1RX2_LOOPBACK_FIR = 176, /*!< ORx1 + ORx2 loopback FIR filter select */
|
||||
TAL_LOOPBACK_FIR = 128 /*!< Loopback FIR filter select */
|
||||
} talisefirName_t;
|
||||
|
||||
/**
|
||||
* \brief Enum to select the proper gain for the FIR
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_FIR_GAIN_NEG12_DB = -12, /*!< Talise FIR gain -12 */
|
||||
TAL_FIR_GAIN_NEG6_DB = -6, /*!< Talise FIR gain -6 */
|
||||
TAL_FIR_GAIN_0_DB = 0, /*!< Talise FIR gain 0 */
|
||||
TAL_FIR_GAIN_POS6_DB = 6 /*!< Talise FIR gain 6 */
|
||||
} taliseFirGain_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise States
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_STATE_POWERONRESET = 0x00,
|
||||
TAL_STATE_INITIALIZED = 0x01,
|
||||
TAL_STATE_STREAMLOADED = 0x02,
|
||||
TAL_STATE_ARMLOADED = 0x04,
|
||||
TAL_STATE_CALS_RUN = 0x08,
|
||||
TAL_STATE_RADIOON = 0x10
|
||||
} taliseStates_t;
|
||||
|
||||
/**
|
||||
* \brief Enum of possible DDC Modes
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_RXDDC_BYPASS = 0, /*!< No Half Band Enabled */
|
||||
TAL_RXDDC_FILTERONLY, /*!< Half Band Filters only */
|
||||
TAL_RXDDC_INT2, /*!< Half Band Interpolation by 2 */
|
||||
TAL_RXDDC_DEC2, /*!< Half Band Decimate by 2 */
|
||||
TAL_RXDDC_BYPASS_REALIF, /*!< No Half Band Enabled */
|
||||
TAL_RXDDC_FILTERONLY_REALIF, /*!< Half Band Filters only */
|
||||
TAL_RXDDC_INT2_REALIF, /*!< Half Band Interpolation by 2 */
|
||||
TAL_RXDDC_DEC2_REALIF /*!< Half Band Decimate by 2 */
|
||||
} taliseRxDdc_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of DDC Modes in ORx datapath
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_ORXDDC_DISABLED = 0x00, /*!< ZIF Observation Receiver */
|
||||
TAL_ORXDDC_SUBSAMPLE_BY2 /*!< Subsample Received Observation signal */
|
||||
} taliseOrxDdc_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of CMOS pads drive strength options
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
/* Values encoded as {non_gpio_drv , spi_cmos_drv_select[3:0]} */
|
||||
TAL_CMOSPAD_DRV_1X = 0x00, /*!< 2.5pF load @ 65MHz */
|
||||
TAL_CMOSPAD_DRV_2X = 0x10, /*!< 5pF load @ 65MHz */
|
||||
TAL_CMOSPAD_DRV_3X = 0x03, /*!< 7.5pF load @ 65MHz */
|
||||
TAL_CMOSPAD_DRV_4X = 0x11, /*!< 10pF load @ 65MHz */
|
||||
TAL_CMOSPAD_DRV_5X = 0x0F, /*!< 12.5pF load @ 65MHz */
|
||||
TAL_CMOSPAD_DRV_6X = 0x13, /*!< 15pF load @ 65MHz */
|
||||
TAL_CMOSPAD_DRV_8X = 0x17, /*!< 20pF load @ 65MHz */
|
||||
TAL_CMOSPAD_DRV_10X = 0x1F /*!< 25pF load @ 65MHz */
|
||||
} taliseCmosPadDrvStr_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of options to disable Tx data when PLL unlocks
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_TXDIS_TX_NOT_DISABLED = 0x0, /*!< Tx data is not disabled when PLL unlocks */
|
||||
TAL_TXDIS_TX_ZERO_DATA = 0x1, /*!< Tx data is zeroed immediately when PLL unlocks */
|
||||
TAL_TXDIS_TX_RAMP_DOWN_TO_ZERO = 0x2 /*!< Tx data is ramped down to zero when PLL unlocks */
|
||||
} taliseTxDataIfPllUnlock_t;
|
||||
|
||||
/**
|
||||
* \brief Enumerated list of RFPLL phase synchronization modes
|
||||
*
|
||||
* RFPLL Phase sync requires extra time to sync each time the RFPLL frequency
|
||||
* is changed. If RFPLL phase sync is not required, it may be desired to
|
||||
* disable the feature to allow the RFPLL to lock faster.
|
||||
*
|
||||
* Depending on the desired accuracy of the RFPLL phase sync, several options
|
||||
* are provided.
|
||||
*/
|
||||
typedef enum
|
||||
{
|
||||
TAL_RFPLLMCS_NOSYNC = 0, /*!< Disable RFPLL phase synchronization */
|
||||
TAL_RFPLLMCS_INIT_AND_SYNC = 1, /*!< Enable RFPLL phase sync init only */
|
||||
TAL_RFPLLMCS_INIT_AND_1TRACK = 2, /*!< Enable RFPLL phase sync init and track once */
|
||||
TAL_RFPLLMCS_INIT_AND_CONTTRACK = 3 /*!< Enable RFPLL phase sync init and track continuously */
|
||||
} taliseRfPllMcs_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise FIR filter settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
int8_t gain_dB; /*!< Filter gain in dB */
|
||||
uint8_t numFirCoefs; /*!< Number of coefficients in the FIR filter */
|
||||
int16_t *coefs; /*!< A pointer to an array of filter coefficients */
|
||||
} taliseFir_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise Rx NCO shifter parameters for both BandA and BandB
|
||||
* configurations. Settings all four element values to zero for a band will disable the NCO
|
||||
* for that shift.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t bandAInputBandWidth_kHz; /*!< BandWidth in khz of the BandA input signal */
|
||||
int32_t bandAInputCenterFreq_kHz; /*!< Center Frequency in khz of the BandA input signal */
|
||||
int32_t bandANco1Freq_kHz; /*!< BandA NCO1 Frequency shift in khz */
|
||||
int32_t bandANco2Freq_kHz; /*!< BandA NCO2 Frequency shift in khz */
|
||||
|
||||
uint32_t bandBInputBandWidth_kHz; /*!< BandWidth in khz of the BandB input signal */
|
||||
int32_t bandBInputCenterFreq_kHz; /*!< Center Frequency in khz of the BandB input signal */
|
||||
int32_t bandBNco1Freq_kHz; /*!< BandB NCO1 Frequency shift in khz */
|
||||
int32_t bandBNco2Freq_kHz; /*!< BandB NCO2 Frequency shift in khz */
|
||||
|
||||
} taliseRxNcoShifterCfg_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold settings for the current Rx specific use case profile
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseFir_t rxFir; /*!< Rx FIR filter structure */
|
||||
uint8_t rxFirDecimation; /*!< Rx FIR decimation (1,2,4) */
|
||||
uint8_t rxDec5Decimation; /*!< Decimation of Dec5 or Dec4 filter (5,4) */
|
||||
uint8_t rhb1Decimation; /*!< RX Halfband1 (HB1) decimation. Can be either 1 or 2 */
|
||||
uint32_t rxOutputRate_kHz; /*!< Rx Output data rate in kHz */
|
||||
uint32_t rfBandwidth_Hz; /*!< Rx RF passband bandwidth for the profile */
|
||||
uint32_t rxBbf3dBCorner_kHz; /*!< Rx BBF (TIA) 3dB corner in kHz */
|
||||
uint16_t rxAdcProfile[42]; /*!< Rx ADC Profile - tunes the bandwidth of the passband and noise transfer functions of the ADC */
|
||||
taliseRxDdc_t rxDdcMode; /*!< Rx DDC mode */
|
||||
taliseRxNcoShifterCfg_t rxNcoShifterCfg; /*!< Rx NCO Shift parameters used for ZIF->RIF, CIF->ZIF */
|
||||
} taliseRxProfile_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold settings for the current ORx specific use case profile
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseFir_t rxFir; /*!< ORx FIR filter structure */
|
||||
uint8_t rxFirDecimation; /*!< ORx FIR decimation (1,2,4) */
|
||||
uint8_t rxDec5Decimation; /*!< Decimation of Dec5 or Dec4 filter (5,4) */
|
||||
uint8_t rhb1Decimation; /*!< ORX Halfband1 (HB1) decimation. Can be either 1 or 2 */
|
||||
uint32_t orxOutputRate_kHz; /*!< ORx Output data rate in kHz */
|
||||
uint32_t rfBandwidth_Hz; /*!< ORx RF passband bandwidth for the profile */
|
||||
uint32_t rxBbf3dBCorner_kHz; /*!< ORx BBF (TIA) 3dB corner in kHz */
|
||||
uint16_t orxLowPassAdcProfile[42]; /*!< ORx Lowpass ADC Profile - tunes the bandwidth of the passband and noise transfer functions of the ADC */
|
||||
uint16_t orxBandPassAdcProfile[42]; /*!< ORx Bandpass ADC Profile (ADC stitching only) - tunes the bandwidth of the passband and noise transfer functions of the ADC */
|
||||
taliseOrxDdc_t orxDdcMode; /*!< ORx DDC mode */
|
||||
int16_t orxMergeFilter[12]; /*!< ORx Merge filter (ADC stitching only) - Merges the Lowpass and Bandpass ADC to obtain a wideband ADC transfer function */
|
||||
} taliseORxProfile_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold settings for the current Tx specific use case profile
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t dacDiv; /*!< The divider used to generate the DAC clock (1,2)*/
|
||||
taliseFir_t txFir; /*!< Tx FIR filter structure */
|
||||
uint8_t txFirInterpolation; /*!< The TX digital FIR filter interpolation (1,2,4) */
|
||||
uint8_t thb1Interpolation; /*!< Tx Halfband1 (HB1) filter interpolation (1,2) */
|
||||
uint8_t thb2Interpolation; /*!< Tx Halfband2 (HB2) filter interpolation (1,2) */
|
||||
uint8_t thb3Interpolation; /*!< Tx Halfband3 (HB3) filter interpolation (1,2) */
|
||||
uint8_t txInt5Interpolation; /*!< Tx Int5 filter interpolation (1,5) */
|
||||
uint32_t txInputRate_kHz; /*!< Tx input data rate in kHz */
|
||||
uint32_t primarySigBandwidth_Hz; /*!< Tx primary signal BW */
|
||||
uint32_t rfBandwidth_Hz; /*!< Tx RF passband bandwidth for the profile */
|
||||
uint32_t txDac3dBCorner_kHz; /*!< DAC filter 3dB corner in kHz */
|
||||
uint32_t txBbf3dBCorner_kHz; /*!< Tx BBF 3dB corner in kHz */
|
||||
uint16_t loopBackAdcProfile[42]; /*!< Rx Loop Back ADC profile to set the bandwidth of the ADC response */
|
||||
} taliseTxProfile_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold ORx gain control settings for initialization and during use
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseGainMode_t gainMode; /*!< Current Rx gain control mode setting */
|
||||
uint8_t orx1GainIndex; /*!< ORx1 Gain Index, can be used in different ways for manual and AGC gain control */
|
||||
uint8_t orx2GainIndex; /*!< ORx2 Gain Index, can be used in different ways for manual and AGC gain control */
|
||||
uint8_t orx1MaxGainIndex; /*!< Max gain index for the currently loaded ORx1 Gain table */
|
||||
uint8_t orx1MinGainIndex; /*!< Min gain index for the currently loaded ORx1 Gain table */
|
||||
uint8_t orx2MaxGainIndex; /*!< Max gain index for the currently loaded ORx2 Gain table */
|
||||
uint8_t orx2MinGainIndex; /*!< Min gain index for the currently loaded ORx2 Gain table */
|
||||
} taliseORxGainControl_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Rx gain control settings for initialization and during use
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseGainMode_t gainMode; /*!< Current Rx gain control mode setting */
|
||||
uint8_t rx1GainIndex; /*!< Rx1 Gain Index, can be used in different ways for manual and AGC gain control */
|
||||
uint8_t rx2GainIndex; /*!< Rx2 Gain Index, can be used in different ways for manual and AGC gain control */
|
||||
uint8_t rx1MaxGainIndex; /*!< Max gain index for the currently loaded Rx1 Gain table */
|
||||
uint8_t rx1MinGainIndex; /*!< Min gain index for the currently loaded Rx1 Gain table */
|
||||
uint8_t rx2MaxGainIndex; /*!< Max gain index for the currently loaded Rx2 Gain table */
|
||||
uint8_t rx2MinGainIndex; /*!< Min gain index for the currently loaded Rx2 Gain table */
|
||||
} taliseRxGainControl_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Tx data path settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseTxProfile_t txProfile; /*!< Tx datapath profile, 3dB corner frequencies, and digital filter enables */
|
||||
taliseDeframerSel_t deframerSel; /*!< Talise JESD204b deframer select (Deframer A or B, or both) */
|
||||
taliseTxChannels_t txChannels; /*!< The desired Tx channels to enable during initialization */
|
||||
taliseTxAttenStepSize_t txAttenStepSize; /*!< Tx Attenuation step size */
|
||||
uint16_t tx1Atten_mdB; /*!< Initial and current Tx1 Attenuation */
|
||||
uint16_t tx2Atten_mdB; /*!< Initial and current Tx2 Attenuation */
|
||||
taliseTxDataIfPllUnlock_t disTxDataIfPllUnlock; /*!< Options to disable Transmit data when the RFPLL unlocks */
|
||||
} taliseTxSettings_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Rx data path settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseRxProfile_t rxProfile; /*!< Rx datapath profile, 3dB corner frequencies, and digital filter enables */
|
||||
taliseFramerSel_t framerSel; /*!< Rx JESD204b framer configuration enum */
|
||||
taliseRxGainControl_t rxGainCtrl; /*!< Rx Gain control settings structure */
|
||||
taliseRxChannels_t rxChannels; /*!< The desired Rx Channels to enable during initialization */
|
||||
} taliseRxSettings_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold ORx data path settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseORxProfile_t orxProfile; /*!< ORx datapath profile, 3dB corner frequencies, and digital filter enables. */
|
||||
taliseORxGainControl_t orxGainCtrl; /*!< ObsRx gain control settings structure */
|
||||
taliseFramerSel_t framerSel; /*!< ObsRx JESD204b framer configuration structure */
|
||||
taliseObsRxChannels_t obsRxChannelsEnable; /*!< The desired ObsRx Channel to enable during initialization */
|
||||
taliseObsRxLoSource_t obsRxLoSource; /*!< Field not used, reserved for future use. The ORx mixers can use the RF_PLL or Aux_PLL */
|
||||
} taliseObsRxSettings_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold digital clock settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t deviceClock_kHz; /*!< CLKPLL and device reference clock frequency in kHz */
|
||||
uint32_t clkPllVcoFreq_kHz; /*!< CLKPLL VCO frequency in kHz */
|
||||
taliseHsDiv_t clkPllHsDiv; /*!< CLKPLL high speed clock divider */
|
||||
uint8_t rfPllUseExternalLo; /*!< 1= Use external LO input for RF PLL, 0 = use internal LO generation for RF PLL */
|
||||
taliseRfPllMcs_t rfPllPhaseSyncMode; /*!< Set RF PLL phase synchronization mode. Adds extra time to lock RF PLL when PLL frequency changed. See enum for options */
|
||||
} taliseDigClocks_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure used by the API run time state structure to hold the calculated
|
||||
* digital clocks for the selected init profiles
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t deviceClock_kHz; /*!< CLKPLL and device reference clock frequency in kHz */
|
||||
uint32_t clkPllVcoFreq_kHz; /*!< CLKPLL VCO frequency in kHz */
|
||||
taliseHsDiv_t clkPllHsDiv; /*!< CLKPLL high speed clock divider */
|
||||
uint32_t hsDigClkDiv2_Hz; /*!< Calculated in TALISE_initialize() digital clock used throughout API functions */
|
||||
uint32_t hsDigClkDiv4or5_Hz; /*!< Calculated in TALISE_initialize() digital clock used throughout API functions */
|
||||
uint8_t rfPllUseExternalLo; /*!< Stored version of the init struct setting (Ext LO input) to keep in the device data structure, 1= Use external LO input for RF PLL, 0 = use internal LO generation for RF PLL */
|
||||
} taliseClocks_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold SPI settings for all system device types
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t MSBFirst; /*!< 1 = MSBFirst, 0 = LSBFirst */
|
||||
uint8_t enSpiStreaming; /*!< Not Recommended - most registers in Talise API are not consecutive */
|
||||
uint8_t autoIncAddrUp; /*!< For SPI Streaming, set address increment direction. 1= next addr = addr+1, 0:addr = addr-1 */
|
||||
uint8_t fourWireMode; /*!< 1: Use 4-wire SPI, 0: 3-wire SPI (SDIO pin is bidirectional). NOTE: ADI's FPGA platform always uses 4-wire mode */
|
||||
taliseCmosPadDrvStr_t cmosPadDrvStrength; /*!< Drive strength of CMOS pads when used as outputs (SDIO, SDO, GP_INTERRUPT, GPIO 1, GPIO 0) */
|
||||
} taliseSpiSettings_t;
|
||||
|
||||
/**
|
||||
* \brief Data Structure to hold Talise device gain settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint8_t rx1MinGainIndex; /*!< Current device minimum Rx1 gain index */
|
||||
uint8_t rx1MaxGainIndex; /*!< Current device maximum Rx1 gain index */
|
||||
uint8_t rx2MinGainIndex; /*!< Current device minimum Rx2 gain index */
|
||||
uint8_t rx2MaxGainIndex; /*!< Current device maximum Rx2 gain index */
|
||||
uint8_t orx1MinGainIndex; /*!< Current device minimum Orx1 gain index */
|
||||
uint8_t orx1MaxGainIndex; /*!< Current device maximum Orx1 gain index */
|
||||
uint8_t orx2MinGainIndex; /*!< Current device minimum Orx2 gain index */
|
||||
uint8_t orx2MaxGainIndex; /*!< Current device maximum Orx2 gain index */
|
||||
} taliseGainIndex_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise device instance initialization settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseSpiSettings_t spiSettings; /*!< SPI settings data structure */
|
||||
taliseRxSettings_t rx; /*!< Rx settings data structure */
|
||||
taliseTxSettings_t tx; /*!< Tx settings data structure */
|
||||
taliseObsRxSettings_t obsRx; /*!< ObsRx settings data structure */
|
||||
taliseDigClocks_t clocks; /*!< Holds settings for CLKPLL and reference clock */
|
||||
taliseJesdSettings_t jesd204Settings; /*!< Holds the JESD204B data link settings */
|
||||
} taliseInit_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise error callback function
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t errSrc;
|
||||
const char* (*callbackFunction)(uint32_t errSrc, uint32_t errCode);
|
||||
} talErrorFunction_t;
|
||||
|
||||
#define TALISE_ERRORFUNCTIONTABLEMAX 2
|
||||
|
||||
/**
|
||||
* \brief Function jump table to hold a registry of error message functions for
|
||||
* add on features.
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
talErrorFunction_t talErrorFunctionTable[TALISE_ERRORFUNCTIONTABLEMAX];
|
||||
} talErrFunctionTable_t;
|
||||
|
||||
/**
|
||||
* \brief Structure to hold FHM mode frequency range
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
uint32_t fhmMinFreq_MHz; /*!< Lower limit for FHM hop frequency in MHz */
|
||||
uint32_t fhmMaxFreq_MHz; /*!< Upper limit for FHM hop frequency in MHz */
|
||||
} talFrequencyHoppingRange_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold a Talise device instance status information
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
taliseStates_t devState; /*!< Current device state of the part, i.e., radio on, radio off, arm loaded, etc., defined by deviceState enum */
|
||||
uint8_t initializedChannels; /*!< Holds Rx/ORx/Tx channels that were initialized and calibrated for the current device */
|
||||
uint8_t profilesValid; /*!< Current device profilesValid bit field for use notification, i.e., Tx = 0x01, Rx = 0x02, Orx = 0x04 */
|
||||
uint32_t errSource; /*!< Current source of error returned */
|
||||
uint32_t errCode; /*!< Current error code returned */
|
||||
taliseClocks_t clocks; /*!< Currently calculated Talise digital clocks for the selected init profiles */
|
||||
taliseGainMode_t gainMode; /*!< Current device gain mode, which can be MGC, AGCFAST, AGCSLOW, or HYBRID */
|
||||
taliseGainIndex_t gainIndexes; /*!< Current device gain index values */
|
||||
taliseTxAttenStepSize_t txAttenStepSize; /*!< Current tx Atten step size */
|
||||
uint8_t orxAdcStitchingEnabled; /*!< TALISE_initialize sets to 1 if ORx ADC stitching enabled, 0 if not required */
|
||||
uint32_t usedGpiopins; /*!< Each bit position 'N' indicates whether the GPIO 'N' is assigned to some function (if 1) or not (if 0) */
|
||||
uint16_t usedGpio3p3pins; /*!< Each bit position 'N' indicates whether the GPIO3.3 'N' is assigned to some function (if 1) or not (if 0) */
|
||||
uint8_t rxFramerNp; /*!< Rx Framer Np - converter sample resolution (12, 16, 24) */
|
||||
uint8_t orxFramerNp; /*!< ORx Framer Np - converter sample resolution (12, 16, 24) */
|
||||
uint32_t rxOutputRate_kHz; /*!< Rx Output data rate in kHz */
|
||||
uint32_t txInputRate_kHz; /*!< Tx input data rate in kHz */
|
||||
taliseRxDdc_t rxDdcMode; /*!< DDC Mode saved from initialization */
|
||||
uint8_t rxDualBandEnabled; /*!< DualBand Mode saved from initialization for determining dualband status */
|
||||
uint8_t rxTotalM; /*!< Value of M saved from initialization */
|
||||
uint32_t rxBandwidth_Hz; /*!< Rx Bandwidth from the current profile */
|
||||
uint32_t txBandwidth_Hz; /*!< Tx Bandwidth from the current profile */
|
||||
uint32_t orxBandwidth_Hz; /*!< ORx Bandwidth from the current profile */
|
||||
uint32_t swTest; /*!< Software testmode signal */
|
||||
uint8_t deviceSiRev; /*!< Talise silicon rev read during TALISE_initialize */
|
||||
talErrFunctionTable_t talErrFunctionTable; /*!< Talise callback function table */
|
||||
talFrequencyHoppingRange_t talFhmFreqRange; /*!< Talise FHM frequency range */
|
||||
taliseFhmTriggerMode_t talFhmTriggerMode; /*!< Talise frequency hop trigger mode */
|
||||
uint64_t talFhmInitHopFreq_Hz; /*!< Initial Talise hop frequency */
|
||||
uint8_t talFhmMcsSync; /*!< Flag to indicate if MCS synchronization is enabled on frequency hopping */
|
||||
} taliseInfo_t;
|
||||
|
||||
/**
|
||||
* \brief Data structure to hold Talise device instance settings
|
||||
*/
|
||||
typedef struct
|
||||
{
|
||||
void *devHalInfo; /*!< ADI_HAL Hardware layer settings pointer specific to this Talise instance */
|
||||
taliseInfo_t devStateInfo; /*!< Talise infomration container */
|
||||
} taliseDevice_t;
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Executable
+149
@@ -0,0 +1,149 @@
|
||||
/**
|
||||
* \file talise_user.c
|
||||
* \brief Contains Talise API default gain table values for Rx and ObsRx channels. This file contains information which can be modified by the user.
|
||||
*
|
||||
* 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.
|
||||
*/
|
||||
|
||||
#include "talise_user.h"
|
||||
|
||||
/**
|
||||
* \brief Default Rx gain table settings
|
||||
*
|
||||
* Order: {FE table, External Ctl, TIA/ADC, signed Digital Gain/Atten[10:0], Phase offset}
|
||||
*/
|
||||
taliseRxGainTable_t rxGainTable [61] =
|
||||
{
|
||||
{0, 0, 0, 14, 0}, /* Gain index 255 */
|
||||
{14, 0, 0, 14, 0}, /* Gain index 254 */
|
||||
{27, 0, 0, 15, 0}, /* Gain index 253 */
|
||||
{41, 0, 0, 14, 0}, /* Gain index 252 */
|
||||
{53, 0, 0, 13, 0}, /* Gain index 251 */
|
||||
{67, 0, 0, 14, 0}, /* Gain index 250 */
|
||||
{78, 0, 0, 15, 0}, /* Gain index 249 */
|
||||
{88, 0, 0, 14, 0}, /* Gain index 248 */
|
||||
{100, 0, 0, 14, 0}, /* Gain index 247 */
|
||||
{109, 0, 0, 14, 0}, /* Gain index 246 */
|
||||
{118, 0, 0, 14, 0}, /* Gain index 245 */
|
||||
{126, 0, 0, 14, 0}, /* Gain index 244 */
|
||||
{135, 0, 0, 15, 0}, /* Gain index 243 */
|
||||
{142, 0, 0, 15, 0}, /* Gain index 242 */
|
||||
{149, 0, 0, 14, 0}, /* Gain index 241 */
|
||||
{155, 0, 0, 14, 0}, /* Gain index 240 */
|
||||
{163, 0, 0, 15, 0}, /* Gain index 239 */
|
||||
{169, 0, 0, 15, 0}, /* Gain index 238 */
|
||||
{174, 0, 0, 14, 0}, /* Gain index 237 */
|
||||
{179, 0, 0, 15, 0}, /* Gain index 236 */
|
||||
{183, 0, 0, 13, 0}, /* Gain index 235 */
|
||||
{187, 0, 0, 13, 0}, /* Gain index 234 */
|
||||
{193, 0, 0, 15, 0}, /* Gain index 233 */
|
||||
{196, 0, 0, 13, 0}, /* Gain index 232 */
|
||||
{200, 0, 0, 14, 0}, /* Gain index 231 */
|
||||
{203, 0, 0, 13, 0}, /* Gain index 230 */
|
||||
{206, 0, 0, 13, 0}, /* Gain index 229 */
|
||||
{209, 0, 0, 13, 0}, /* Gain index 228 */
|
||||
{212, 0, 0, 14, 0}, /* Gain index 227 */
|
||||
{214, 0, 0, 12, 0}, /* Gain index 226 */
|
||||
{217, 0, 0, 14, 0}, /* Gain index 225 */
|
||||
{219, 0, 0, 13, 0}, /* Gain index 224 */
|
||||
{221, 0, 0, 13, 0}, /* Gain index 223 */
|
||||
{224, 0, 0, 13, 0}, /* Gain index 222 */
|
||||
{226, 0, 0, 14, 0}, /* Gain index 221 */
|
||||
{228, 0, 0, 15, 0}, /* Gain index 220 */
|
||||
{229, 0, 0, 12, 0}, /* Gain index 219 */
|
||||
{231, 0, 0, 16, 0}, /* Gain index 218 */
|
||||
{232, 0, 0, 12, 0}, /* Gain index 217 */
|
||||
{234, 0, 0, 17, 0}, /* Gain index 216 */
|
||||
{235, 0, 0, 16, 0}, /* Gain index 215 */
|
||||
{236, 0, 0, 14, 0}, /* Gain index 214 */
|
||||
{237, 0, 0, 14, 0}, /* Gain index 213 */
|
||||
{238, 0, 0, 13, 0}, /* Gain index 212 */
|
||||
{239, 0, 0, 14, 0}, /* Gain index 211 */
|
||||
{240, 0, 0, 14, 0}, /* Gain index 210 */
|
||||
{241, 0, 0, 17, 0}, /* Gain index 209 */
|
||||
{242, 0, 0, 19, 0}, /* Gain index 208 */
|
||||
{242, 0, 0, 9, 0}, /* Gain index 207 */
|
||||
{243, 0, 0, 13, 0}, /* Gain index 206 */
|
||||
{244, 0, 0, 18, 0}, /* Gain index 205 */
|
||||
{244, 0, 0, 8, 0}, /* Gain index 204 */
|
||||
{245, 0, 0, 15, 0}, /* Gain index 203 */
|
||||
{246, 0, 0, 23, 0}, /* Gain index 202 */
|
||||
{246, 0, 0, 13, 0}, /* Gain index 201 */
|
||||
{247, 0, 0, 25, 0}, /* Gain index 200 */
|
||||
{247, 0, 0, 15, 0}, /* Gain index 199 */
|
||||
{247, 0, 0, 5, 0}, /* Gain index 198 */
|
||||
{248, 0, 0, 16, 0}, /* Gain index 197 */
|
||||
{248, 0, 0, 6, 0}, /* Gain index 196 */
|
||||
{249, 0, 0, 24, 0} /* Gain index 195 */
|
||||
};
|
||||
|
||||
/**
|
||||
* \brief Default ORx gain table settings
|
||||
*/
|
||||
taliseOrxGainTable_t orxGainTable [61] =
|
||||
{
|
||||
{0, 0, 0, 14}, /* Gain index 255 */
|
||||
{14, 0, 0, 14}, /* Gain index 254 */
|
||||
{27, 0, 0, 15}, /* Gain index 253 */
|
||||
{41, 0, 0, 14}, /* Gain index 252 */
|
||||
{53, 0, 0, 13}, /* Gain index 251 */
|
||||
{67, 0, 0, 14}, /* Gain index 250 */
|
||||
{78, 0, 0, 15}, /* Gain index 249 */
|
||||
{88, 0, 0, 14}, /* Gain index 248 */
|
||||
{100, 0, 0, 14}, /* Gain index 247 */
|
||||
{109, 0, 0, 14}, /* Gain index 246 */
|
||||
{118, 0, 0, 14}, /* Gain index 245 */
|
||||
{126, 0, 0, 14}, /* Gain index 244 */
|
||||
{135, 0, 0, 15}, /* Gain index 243 */
|
||||
{142, 0, 0, 15}, /* Gain index 242 */
|
||||
{149, 0, 0, 14}, /* Gain index 241 */
|
||||
{155, 0, 0, 14}, /* Gain index 240 */
|
||||
{163, 0, 0, 15}, /* Gain index 239 */
|
||||
{169, 0, 0, 15}, /* Gain index 238 */
|
||||
{174, 0, 0, 14}, /* Gain index 237 */
|
||||
{179, 0, 0, 15}, /* Gain index 236 */
|
||||
{183, 0, 0, 13}, /* Gain index 235 */
|
||||
{187, 0, 0, 13}, /* Gain index 234 */
|
||||
{193, 0, 0, 15}, /* Gain index 233 */
|
||||
{196, 0, 0, 13}, /* Gain index 232 */
|
||||
{200, 0, 0, 14}, /* Gain index 231 */
|
||||
{203, 0, 0, 13}, /* Gain index 230 */
|
||||
{206, 0, 0, 13}, /* Gain index 229 */
|
||||
{209, 0, 0, 13}, /* Gain index 228 */
|
||||
{212, 0, 0, 14}, /* Gain index 227 */
|
||||
{214, 0, 0, 12}, /* Gain index 226 */
|
||||
{217, 0, 0, 14}, /* Gain index 225 */
|
||||
{219, 0, 0, 13}, /* Gain index 224 */
|
||||
{221, 0, 0, 13}, /* Gain index 223 */
|
||||
{224, 0, 0, 13}, /* Gain index 222 */
|
||||
{226, 0, 0, 14}, /* Gain index 221 */
|
||||
{228, 0, 0, 15}, /* Gain index 220 */
|
||||
{229, 0, 0, 12}, /* Gain index 219 */
|
||||
{231, 0, 0, 16}, /* Gain index 218 */
|
||||
{232, 0, 0, 12}, /* Gain index 217 */
|
||||
{234, 0, 0, 17}, /* Gain index 216 */
|
||||
{235, 0, 0, 16}, /* Gain index 215 */
|
||||
{236, 0, 0, 14}, /* Gain index 214 */
|
||||
{237, 0, 0, 14}, /* Gain index 213 */
|
||||
{238, 0, 0, 13}, /* Gain index 212 */
|
||||
{239, 0, 0, 14}, /* Gain index 211 */
|
||||
{240, 0, 0, 14}, /* Gain index 210 */
|
||||
{241, 0, 0, 17}, /* Gain index 209 */
|
||||
{242, 0, 0, 19}, /* Gain index 208 */
|
||||
{242, 0, 0, 9}, /* Gain index 207 */
|
||||
{243, 0, 0, 13}, /* Gain index 206 */
|
||||
{244, 0, 0, 18}, /* Gain index 205 */
|
||||
{244, 0, 0, 8}, /* Gain index 204 */
|
||||
{245, 0, 0, 15}, /* Gain index 203 */
|
||||
{246, 0, 0, 23}, /* Gain index 202 */
|
||||
{246, 0, 0, 13}, /* Gain index 201 */
|
||||
{247, 0, 0, 25}, /* Gain index 200 */
|
||||
{247, 0, 0, 15}, /* Gain index 199 */
|
||||
{247, 0, 0, 5}, /* Gain index 198 */
|
||||
{248, 0, 0, 16}, /* Gain index 197 */
|
||||
{248, 0, 0, 6}, /* Gain index 196 */
|
||||
{249, 0, 0, 24} /* Gain index 195 */
|
||||
};
|
||||
Executable
+116
@@ -0,0 +1,116 @@
|
||||
/**
|
||||
* \file talise_user.h
|
||||
* \brief Contains Talise API macro definitions and global structure declarations for talise_user.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 _TALISEPROFILES_H_
|
||||
#define _TALISEPROFILES_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#include "talise_types.h"
|
||||
|
||||
#define VERIFY_ARM_CHKSUM_TIMEOUT_US 200000
|
||||
#define VERIFY_ARM_CHKSUM_INTERVAL_US 5000
|
||||
#define CLKPLL_CPCAL_TIMEOUT_US 1000000
|
||||
#define CLKPLL_CPCAL_INTERVAL_US 100000
|
||||
#define CLKPLL_LOCK_TIMEOUT_US 1000000
|
||||
#define CLKPLL_LOCK_INTERVAL_US 100000
|
||||
#define CLKPLL_POWERUP_US 200000
|
||||
#define CLKPLL_LOCK_US 100000
|
||||
#define SETARMGPIO_TIMEOUT_US 1000000
|
||||
#define SETARMGPIO_INTERVAL_US 100000
|
||||
#define SETRFPLL_TIMEOUT_US 1000000
|
||||
#define SETRFPLL_INTERVAL_US 100000
|
||||
#define GETRFPLL_TIMEOUT_US 1000000
|
||||
#define GETRFPLL_INTERVAL_US 100000
|
||||
#define SETFREQHOP_MODE_TIMEOUT_US 1000000
|
||||
#define SETFREQHOP_MODE_INTERVAL_US 100000
|
||||
#define GETFREQHOP_MODE_TIMEOUT_US 1000000
|
||||
#define GETFREQHOP_MODE_INTERVAL_US 100000
|
||||
|
||||
#define WAITINITCALS_INTERVAL_US 100000
|
||||
|
||||
#define ABORTINITCALS_TIMEOUT_US 1000000
|
||||
#define ABORTINITCALS_INTERVAL_US 100000
|
||||
|
||||
#define GETINITCALSTATUS_TIMEOUT_US 1000000
|
||||
#define GETINITCALSTATUS_INTERVAL_US 100000
|
||||
#define RADIOON_TIMEOUT_US 1000000
|
||||
#define RADIOON_INTERVAL_US 100000
|
||||
#define READARMCFG_TIMEOUT_US 1000000
|
||||
#define READARMCFG_INTERVAL_US 100000
|
||||
#define WRITEARMCFG_TIMEOUT_US 1000000
|
||||
#define WRITEARMCFG_INTERVAL_US 100000
|
||||
#define RADIOOFF_TIMEOUT_US 1000000
|
||||
#define RADIOOFF_INTERVAL_US 100000
|
||||
#define ENTRACKINGCALS_TIMEOUT_US 1000000
|
||||
#define ENTRACKINGCALS_INTERVAL_US 100000
|
||||
#define RESCHEDULETRACKINGCALS_TIMEOUT_US 1000000
|
||||
#define RESCHEDULETRACKINGCALS_INTERVAL_US 100000
|
||||
#define PAUSERESUMETRACKINGCALS_TIMEOUT_US 1000000
|
||||
#define PAUSERESUMETRACKINGCALS_INTERVAL_US 100000
|
||||
#define SETTXTOORXMAP_TIMEOUT_US 1000000
|
||||
#define SETTXTOORXMAP_INTERVAL_US 100000
|
||||
#define GETTXLOLSTATUS_TIMEOUT_US 1000000
|
||||
#define GETTXLOLSTATUS_INTERVAL_US 100000
|
||||
#define GETTXQECSTATUS_TIMEOUT_US 1000000
|
||||
#define GETTXQECSTATUS_INTERVAL_US 100000
|
||||
#define GETRXQECSTATUS_TIMEOUT_US 1000000
|
||||
#define GETRXQECSTATUS_INTERVAL_US 100000
|
||||
#define GETORXQECSTATUS_TIMEOUT_US 1000000
|
||||
#define GETORXQECSTATUS_INTERVAL_US 100000
|
||||
#define GETRXHD2STATUS_TIMEOUT_US 1000000
|
||||
#define GETRXHD2STATUS_INTERVAL_US 100000
|
||||
#define SENDARMCMD_TIMEOUT_US 2000000
|
||||
#define SENDARMCMD_INTERVAL_US 100000
|
||||
|
||||
#define GETTEMPERATURE_TIMEOUT_US 1000000
|
||||
#define GETTEMPERATURE_INTERVAL_US 100000
|
||||
#define GETARMBOOTUP_TIMEOUT_US 1000000
|
||||
#define GETARMBOOTUP_INTERVAL_US 100000
|
||||
#define SETRFPLL_LOOP_FREQ_TIMEOUT_US 1000000
|
||||
#define SETRFPLL_LOOP_FREQ_INTERVAL_US 100000
|
||||
#define GETRFPLL_LOOP_FREQ_TIMEOUT_US 1000000
|
||||
#define GETRFPLL_LOOP_FREQ_INTERVAL_US 100000
|
||||
#define GETGPINTSRC_TIMEOUT_US 1000000
|
||||
#define GETGPINTSRC_INTERVAL_US 100000
|
||||
#define RUNSTREAMCMD_TIMEOUT_US 1000000
|
||||
#define RUNSTREAMCMD_INTERVAL_US 100000
|
||||
|
||||
/* 3 Bytes per SPI transaction * 341 transactions = ~1024 byte buffer size */
|
||||
/* Minimum MYK_SPIWRITEARRAY_BUFFERSIZE = 18 */
|
||||
|
||||
#define TALISE_VERBOSE 1
|
||||
#define TALISE_LOGGING 0xF /*LogLevel Set to All*/
|
||||
#define TALISE_RESET_ON_ERR 1 /*API Reset on Severe Errors*/
|
||||
|
||||
/*
|
||||
*****************************************
|
||||
* Rx and ObsRx gain tables
|
||||
******************************************
|
||||
*/
|
||||
#define MAX_GAIN_TABLE_INDEX 255
|
||||
#define MIN_GAIN_TABLE_INDEX 0
|
||||
|
||||
#define START_RX_GAIN_INDEX 255
|
||||
#define MIN_RX_GAIN_TABLE_INDEX 128
|
||||
|
||||
#define START_ORX_GAIN_INDEX (MIN_RX_GAIN_TABLE_INDEX - 1)
|
||||
#define MIN_ORX_GAIN_TABLE_INDEX 4
|
||||
|
||||
extern taliseRxGainTable_t rxGainTable [61];
|
||||
extern taliseOrxGainTable_t orxGainTable [61];
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Binary file not shown.
Executable
+24
@@ -0,0 +1,24 @@
|
||||
/**
|
||||
* \file talise_version.h
|
||||
* \brief Contains the version number for the Talise API
|
||||
*
|
||||
* Talise API version: 3.5.0.2
|
||||
*/
|
||||
|
||||
#ifndef _TALISEVERSION_H_
|
||||
#define _TALISEVERSION_H_
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#define TAL_CURRENT_SI_VERSION 3
|
||||
#define TAL_CURRENT_MAJOR_VERSION 5
|
||||
#define TAL_CURRENT_MINOR_VERSION 0
|
||||
#define TAL_CURRENT_BUILD_VERSION 2
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
Reference in New Issue
Block a user