The official Mbed 2 C/C++ SDK provides the software platform and libraries to build your applications.

Dependents:   hello SerialTestv11 SerialTestv12 Sierpinski ... more

mbed 2

This is the mbed 2 library. If you'd like to learn about Mbed OS please see the mbed-os docs.

Committer:
AnnaBridge
Date:
Wed Feb 20 20:53:29 2019 +0000
Revision:
172:65be27845400
mbed library release version 165

Who changed what in which revision?

UserRevisionLine numberNew contents of line
AnnaBridge 172:65be27845400 1 /*
AnnaBridge 172:65be27845400 2 * Copyright (c) 2015, Freescale Semiconductor, Inc.
AnnaBridge 172:65be27845400 3 * Copyright 2016-2017 NXP.
AnnaBridge 172:65be27845400 4 *
AnnaBridge 172:65be27845400 5 * Redistribution and use in source and binary forms, with or without modification,
AnnaBridge 172:65be27845400 6 * are permitted provided that the following conditions are met:
AnnaBridge 172:65be27845400 7 *
AnnaBridge 172:65be27845400 8 * o Redistributions of source code must retain the above copyright notice, this list
AnnaBridge 172:65be27845400 9 * of conditions and the following disclaimer.
AnnaBridge 172:65be27845400 10 *
AnnaBridge 172:65be27845400 11 * o Redistributions in binary form must reproduce the above copyright notice, this
AnnaBridge 172:65be27845400 12 * list of conditions and the following disclaimer in the documentation and/or
AnnaBridge 172:65be27845400 13 * other materials provided with the distribution.
AnnaBridge 172:65be27845400 14 *
AnnaBridge 172:65be27845400 15 * o Neither the name of Freescale Semiconductor, Inc. nor the names of its
AnnaBridge 172:65be27845400 16 * contributors may be used to endorse or promote products derived from this
AnnaBridge 172:65be27845400 17 * software without specific prior written permission.
AnnaBridge 172:65be27845400 18 *
AnnaBridge 172:65be27845400 19 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND
AnnaBridge 172:65be27845400 20 * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
AnnaBridge 172:65be27845400 21 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
AnnaBridge 172:65be27845400 22 * DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR
AnnaBridge 172:65be27845400 23 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
AnnaBridge 172:65be27845400 24 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
AnnaBridge 172:65be27845400 25 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON
AnnaBridge 172:65be27845400 26 * ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
AnnaBridge 172:65be27845400 27 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
AnnaBridge 172:65be27845400 28 * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
AnnaBridge 172:65be27845400 29 */
AnnaBridge 172:65be27845400 30 #ifndef _FSL_XCVR_H_
AnnaBridge 172:65be27845400 31 /* clang-format off */
AnnaBridge 172:65be27845400 32 #define _FSL_XCVR_H_
AnnaBridge 172:65be27845400 33 /* clang-format on */
AnnaBridge 172:65be27845400 34
AnnaBridge 172:65be27845400 35 #include "fsl_device_registers.h"
AnnaBridge 172:65be27845400 36 #include "fsl_xcvr_trim.h"
AnnaBridge 172:65be27845400 37
AnnaBridge 172:65be27845400 38 #if gMWS_UseCoexistence_d
AnnaBridge 172:65be27845400 39 #include "MWS.h"
AnnaBridge 172:65be27845400 40 #endif /* gMWS_UseCoexistence_d */
AnnaBridge 172:65be27845400 41 /*!
AnnaBridge 172:65be27845400 42 * @addtogroup xcvr
AnnaBridge 172:65be27845400 43 * @{
AnnaBridge 172:65be27845400 44 */
AnnaBridge 172:65be27845400 45
AnnaBridge 172:65be27845400 46 /*! @file*/
AnnaBridge 172:65be27845400 47
AnnaBridge 172:65be27845400 48 /*******************************************************************************
AnnaBridge 172:65be27845400 49 * Definitions
AnnaBridge 172:65be27845400 50 ******************************************************************************/
AnnaBridge 172:65be27845400 51 /* KW4xZ/KW3xZ/KW2xZ Radio type */
AnnaBridge 172:65be27845400 52 #define RADIO_IS_GEN_2P0 (1)
AnnaBridge 172:65be27845400 53
AnnaBridge 172:65be27845400 54 /* Default RF OSC definition. Allows for compile time clock frequency definition */
AnnaBridge 172:65be27845400 55 #ifdef CLOCK_MAIN
AnnaBridge 172:65be27845400 56
AnnaBridge 172:65be27845400 57 #else
AnnaBridge 172:65be27845400 58 #if RF_OSC_26MHZ == 1
AnnaBridge 172:65be27845400 59 #define CLOCK_MAIN (EXT_CLK_26_MHZ) /* See ext_clock_config_t for this value */
AnnaBridge 172:65be27845400 60 #else
AnnaBridge 172:65be27845400 61 #define CLOCK_MAIN (EXT_CLK_32_MHZ) /* See ext_clock_config_t for this value */
AnnaBridge 172:65be27845400 62 #endif /* RF_OSC_26MHZ == 1 */
AnnaBridge 172:65be27845400 63 #endif /* CLOCK_MAIN */
AnnaBridge 172:65be27845400 64
AnnaBridge 172:65be27845400 65 #define TBD_ZERO (0)
AnnaBridge 172:65be27845400 66 #define FSL_XCVR_DRIVER_VERSION (MAKE_VERSION(0, 1, 0))
AnnaBridge 172:65be27845400 67
AnnaBridge 172:65be27845400 68 #define B0(x) (((uint32_t)(((uint32_t)(x)) << 0)) & 0xFFU)
AnnaBridge 172:65be27845400 69 #define B1(x) (((uint32_t)(((uint32_t)(x)) << 8)) & 0xFF00U)
AnnaBridge 172:65be27845400 70 #define B2(x) (((uint32_t)(((uint32_t)(x)) << 16)) & 0xFF0000U)
AnnaBridge 172:65be27845400 71 #define B3(x) (((uint32_t)(((uint32_t)(x)) << 24)) & 0xFF000000U)
AnnaBridge 172:65be27845400 72
AnnaBridge 172:65be27845400 73 #define USE_DEFAULT_PRE_REF (0)
AnnaBridge 172:65be27845400 74 #define TRIM_BBA_DCOC_DAC_AT_INIT (1)
AnnaBridge 172:65be27845400 75 #define PRESLOW_ENA (1)
AnnaBridge 172:65be27845400 76
AnnaBridge 172:65be27845400 77 /* GEN3 TSM defines */
AnnaBridge 172:65be27845400 78 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 79
AnnaBridge 172:65be27845400 80 /* TSM timings initializations for Gen3 radio */
AnnaBridge 172:65be27845400 81 /* NOTE: These timings are stored in 32MHz or 26MHz "baseline" settings, selected by conditional compile below */
AnnaBridge 172:65be27845400 82 /* The init structures for 32Mhz and 26MHz are made identical to allow the same code in fsl_xcvr.c to apply the */
AnnaBridge 172:65be27845400 83 /* settings for all radio generations. The Gen2 radio init value storage had a different structure so this preserves compatibility */
AnnaBridge 172:65be27845400 84 #if RF_OSC_26MHZ == 1
AnnaBridge 172:65be27845400 85 #define TSM_TIMING00init (0x6d006f00U) /* (bb_ldo_hf_en) */
AnnaBridge 172:65be27845400 86 #define TSM_TIMING01init (0x6d006f00U) /* (bb_ldo_adcdac_en) */
AnnaBridge 172:65be27845400 87 #define TSM_TIMING02init (0x6d00ffffU) /* (bb_ldo_bba_en) */
AnnaBridge 172:65be27845400 88 #define TSM_TIMING03init (0x6d006f00U) /* (bb_ldo_pd_en) */
AnnaBridge 172:65be27845400 89 #define TSM_TIMING04init (0x6d006f00U) /* (bb_ldo_fdbk_en) */
AnnaBridge 172:65be27845400 90 #define TSM_TIMING05init (0x6d006f00U) /* (bb_ldo_vcolo_en) */
AnnaBridge 172:65be27845400 91 #define TSM_TIMING06init (0x6d006f00U) /* (bb_ldo_vtref_en) */
AnnaBridge 172:65be27845400 92 #define TSM_TIMING07init (0x05000500U) /* (bb_ldo_fdbk_bleed_en) */
AnnaBridge 172:65be27845400 93 #define TSM_TIMING08init (0x03000300U) /* (bb_ldo_vcolo_bleed_en) */
AnnaBridge 172:65be27845400 94 #define TSM_TIMING09init (0x03000300U) /* (bb_ldo_vcolo_fastcharge_en) */
AnnaBridge 172:65be27845400 95 #define TSM_TIMING10init (0x6d036f03U) /* (bb_xtal_pll_ref_clk_en) */
AnnaBridge 172:65be27845400 96 #define TSM_TIMING11init (0xffff6f03U) /* (bb_xtal_dac_ref_clk_en) */
AnnaBridge 172:65be27845400 97 #define TSM_TIMING12init (0x6d03ffffU) /* (rxtx_auxpll_vco_ref_clk_en) */
AnnaBridge 172:65be27845400 98 #define TSM_TIMING13init (0x18004c00U) /* (sy_vco_autotune_en) */
AnnaBridge 172:65be27845400 99 #define TSM_TIMING14init (0x6d356863U) /* (sy_pd_cycle_slip_ld_ft_en) */
AnnaBridge 172:65be27845400 100 #define TSM_TIMING15init (0x6d036f03U) /* (sy_vco_en) */
AnnaBridge 172:65be27845400 101 #define TSM_TIMING16init (0x6d20ffffU) /* (sy_lo_rx_buf_en) */
AnnaBridge 172:65be27845400 102 #define TSM_TIMING17init (0xffff6f58U) /* (sy_lo_tx_buf_en) */
AnnaBridge 172:65be27845400 103 #define TSM_TIMING18init (0x6d056f05U) /* (sy_divn_en) */
AnnaBridge 172:65be27845400 104 #define TSM_TIMING19init (0x18034c03U) /* (sy_pd_filter_charge_en) */
AnnaBridge 172:65be27845400 105 #define TSM_TIMING20init (0x6d036f03U) /* (sy_pd_en) */
AnnaBridge 172:65be27845400 106 #define TSM_TIMING21init (0x6d046f04U) /* (sy_lo_divn_en) */
AnnaBridge 172:65be27845400 107 #define TSM_TIMING22init (0x6d04ffffU) /* (sy_lo_rx_en) */
AnnaBridge 172:65be27845400 108 #define TSM_TIMING23init (0xffff6f04U) /* (sy_lo_tx_en) */
AnnaBridge 172:65be27845400 109 #define TSM_TIMING24init (0x18004c00U) /* (sy_divn_cal_en) */
AnnaBridge 172:65be27845400 110 #define TSM_TIMING25init (0x6d21ffffU) /* (rx_lna_mixer_en) */
AnnaBridge 172:65be27845400 111 #define TSM_TIMING26init (0xffff6e58U) /* (tx_pa_en) */
AnnaBridge 172:65be27845400 112 #define TSM_TIMING27init (0x6d24ffffU) /* (rx_adc_i_q_en) */
AnnaBridge 172:65be27845400 113 #define TSM_TIMING28init (0x2524ffffU) /* (rx_adc_reset_en) */
AnnaBridge 172:65be27845400 114 #define TSM_TIMING29init (0x6d22ffffU) /* (rx_bba_i_q_en) */
AnnaBridge 172:65be27845400 115 #define TSM_TIMING30init (0x6d24ffffU) /* (rx_bba_pdet_en) */
AnnaBridge 172:65be27845400 116 #define TSM_TIMING31init (0x6d23ffffU) /* (rx_bba_tza_dcoc_en) */
AnnaBridge 172:65be27845400 117 #define TSM_TIMING32init (0x6d21ffffU) /* (rx_tza_i_q_en) */
AnnaBridge 172:65be27845400 118 #define TSM_TIMING33init (0x6d24ffffU) /* (rx_tza_pdet_en) */
AnnaBridge 172:65be27845400 119 #define TSM_TIMING34init (0x6d076f07U) /* (pll_dig_en) */
AnnaBridge 172:65be27845400 120 #define TSM_TIMING35init (0xffff6f5fU) /* (tx_dig_en) */
AnnaBridge 172:65be27845400 121 #define TSM_TIMING36init (0x6d6affffU) /* (rx_dig_en) */
AnnaBridge 172:65be27845400 122 #define TSM_TIMING37init (0x6b6affffU) /* (rx_init) */
AnnaBridge 172:65be27845400 123 #define TSM_TIMING38init (0x6d0e6f42U) /* (sigma_delta_en) */
AnnaBridge 172:65be27845400 124 #define TSM_TIMING39init (0x6d6affffU) /* (rx_phy_en) */
AnnaBridge 172:65be27845400 125 #define TSM_TIMING40init (0x6d2affffU) /* (dcoc_en) */
AnnaBridge 172:65be27845400 126 #define TSM_TIMING41init (0x2b2affffU) /* (dcoc_init) */
AnnaBridge 172:65be27845400 127 #define TSM_TIMING42init (0xffffffffU) /* (sar_adc_trig_en) */
AnnaBridge 172:65be27845400 128 #define TSM_TIMING43init (0xffffffffU) /* (tsm_spare0_en) */
AnnaBridge 172:65be27845400 129 #define TSM_TIMING44init (0xffffffffU) /* (tsm_spare1_en) */
AnnaBridge 172:65be27845400 130 #define TSM_TIMING45init (0xffffffffU) /* (tsm_spare2_en) */
AnnaBridge 172:65be27845400 131 #define TSM_TIMING46init (0xffffffffU) /* (tsm_spare3_en) */
AnnaBridge 172:65be27845400 132 #define TSM_TIMING47init (0xffffffffU) /* (gpio0_trig_en) */
AnnaBridge 172:65be27845400 133 #define TSM_TIMING48init (0xffffffffU) /* (gpio1_trig_en) */
AnnaBridge 172:65be27845400 134 #define TSM_TIMING49init (0xffffffffU) /* (gpio2_trig_en) */
AnnaBridge 172:65be27845400 135 #define TSM_TIMING50init (0xffffffffU) /* (gpio3_trig_en) */
AnnaBridge 172:65be27845400 136 #define TSM_TIMING51init (0x6d03ffffU) /* (rxtx_auxpll_bias_en) */
AnnaBridge 172:65be27845400 137 #define TSM_TIMING52init (0x1b06ffffU) /* (rxtx_auxpll_fcal_en) */
AnnaBridge 172:65be27845400 138 #define TSM_TIMING53init (0x6d03ffffU) /* (rxtx_auxpll_lf_pd_en) */
AnnaBridge 172:65be27845400 139 #define TSM_TIMING54init (0x1b03ffffU) /* (rxtx_auxpll_pd_lf_filter_charge_en) */
AnnaBridge 172:65be27845400 140 #define TSM_TIMING55init (0x6d24ffffU) /* (rxtx_auxpll_adc_buf_en) */
AnnaBridge 172:65be27845400 141 #define TSM_TIMING56init (0x6d24ffffU) /* (rxtx_auxpll_dig_buf_en) */
AnnaBridge 172:65be27845400 142 #define TSM_TIMING57init (0x1a03ffffU) /* (rxtx_rccal_en) */
AnnaBridge 172:65be27845400 143 #define TSM_TIMING58init (0xffff6f03U) /* (tx_hpm_dac_en) */
AnnaBridge 172:65be27845400 144 #define END_OF_SEQinit (0x6d6c6f67U) /* */
AnnaBridge 172:65be27845400 145 #define TX_RX_ON_DELinit (0x00008a86U) /* */
AnnaBridge 172:65be27845400 146 #define TX_RX_SYNTH_init (0x00002318U) /* */
AnnaBridge 172:65be27845400 147 #else
AnnaBridge 172:65be27845400 148 #define TSM_TIMING00init (0x69006f00U) /* (bb_ldo_hf_en) */
AnnaBridge 172:65be27845400 149 #define TSM_TIMING01init (0x69006f00U) /* (bb_ldo_adcdac_en) */
AnnaBridge 172:65be27845400 150 #define TSM_TIMING02init (0x6900ffffU) /* (bb_ldo_bba_en) */
AnnaBridge 172:65be27845400 151 #define TSM_TIMING03init (0x69006f00U) /* (bb_ldo_pd_en) */
AnnaBridge 172:65be27845400 152 #define TSM_TIMING04init (0x69006f00U) /* (bb_ldo_fdbk_en) */
AnnaBridge 172:65be27845400 153 #define TSM_TIMING05init (0x69006f00U) /* (bb_ldo_vcolo_en) */
AnnaBridge 172:65be27845400 154 #define TSM_TIMING06init (0x69006f00U) /* (bb_ldo_vtref_en) */
AnnaBridge 172:65be27845400 155 #define TSM_TIMING07init (0x05000500U) /* (bb_ldo_fdbk_bleed_en) */
AnnaBridge 172:65be27845400 156 #define TSM_TIMING08init (0x03000300U) /* (bb_ldo_vcolo_bleed_en) */
AnnaBridge 172:65be27845400 157 #define TSM_TIMING09init (0x03000300U) /* (bb_ldo_vcolo_fastcharge_en) */
AnnaBridge 172:65be27845400 158 #define TSM_TIMING10init (0x69036f03U) /* (bb_xtal_pll_ref_clk_en) */
AnnaBridge 172:65be27845400 159 #define TSM_TIMING11init (0xffff6f03U) /* (bb_xtal_dac_ref_clk_en) */
AnnaBridge 172:65be27845400 160 #define TSM_TIMING12init (0x6903ffffU) /* (rxtx_auxpll_vco_ref_clk_en) */
AnnaBridge 172:65be27845400 161 #define TSM_TIMING13init (0x18004c00U) /* (sy_vco_autotune_en) */
AnnaBridge 172:65be27845400 162 #define TSM_TIMING14init (0x69316863U) /* (sy_pd_cycle_slip_ld_ft_en) */
AnnaBridge 172:65be27845400 163 #define TSM_TIMING15init (0x69036f03U) /* (sy_vco_en) */
AnnaBridge 172:65be27845400 164 #define TSM_TIMING16init (0x691cffffU) /* (sy_lo_rx_buf_en) */
AnnaBridge 172:65be27845400 165 #define TSM_TIMING17init (0xffff6f58U) /* (sy_lo_tx_buf_en) */
AnnaBridge 172:65be27845400 166 #define TSM_TIMING18init (0x69056f05U) /* (sy_divn_en) */
AnnaBridge 172:65be27845400 167 #define TSM_TIMING19init (0x18034c03U) /* (sy_pd_filter_charge_en) */
AnnaBridge 172:65be27845400 168 #define TSM_TIMING20init (0x69036f03U) /* (sy_pd_en) */
AnnaBridge 172:65be27845400 169 #define TSM_TIMING21init (0x69046f04U) /* (sy_lo_divn_en) */
AnnaBridge 172:65be27845400 170 #define TSM_TIMING22init (0x6904ffffU) /* (sy_lo_rx_en) */
AnnaBridge 172:65be27845400 171 #define TSM_TIMING23init (0xffff6f04U) /* (sy_lo_tx_en) */
AnnaBridge 172:65be27845400 172 #define TSM_TIMING24init (0x18004c00U) /* (sy_divn_cal_en) */
AnnaBridge 172:65be27845400 173 #define TSM_TIMING25init (0x691dffffU) /* (rx_lna_mixer_en) */
AnnaBridge 172:65be27845400 174 #define TSM_TIMING26init (0xffff6e58U) /* (tx_pa_en) */
AnnaBridge 172:65be27845400 175 #define TSM_TIMING27init (0x6920ffffU) /* (rx_adc_i_q_en) */
AnnaBridge 172:65be27845400 176 #define TSM_TIMING28init (0x2120ffffU) /* (rx_adc_reset_en) */
AnnaBridge 172:65be27845400 177 #define TSM_TIMING29init (0x691effffU) /* (rx_bba_i_q_en) */
AnnaBridge 172:65be27845400 178 #define TSM_TIMING30init (0x6920ffffU) /* (rx_bba_pdet_en) */
AnnaBridge 172:65be27845400 179 #define TSM_TIMING31init (0x691fffffU) /* (rx_bba_tza_dcoc_en) */
AnnaBridge 172:65be27845400 180 #define TSM_TIMING32init (0x691dffffU) /* (rx_tza_i_q_en) */
AnnaBridge 172:65be27845400 181 #define TSM_TIMING33init (0x6920ffffU) /* (rx_tza_pdet_en) */
AnnaBridge 172:65be27845400 182 #define TSM_TIMING34init (0x69076f07U) /* (pll_dig_en) */
AnnaBridge 172:65be27845400 183 #define TSM_TIMING35init (0xffff6f5fU) /* (tx_dig_en) */
AnnaBridge 172:65be27845400 184 #define TSM_TIMING36init (0x6966ffffU) /* (rx_dig_en) */
AnnaBridge 172:65be27845400 185 #define TSM_TIMING37init (0x6766ffffU) /* (rx_init) */
AnnaBridge 172:65be27845400 186 #define TSM_TIMING38init (0x690e6f42U) /* (sigma_delta_en) */
AnnaBridge 172:65be27845400 187 #define TSM_TIMING39init (0x6966ffffU) /* (rx_phy_en) */
AnnaBridge 172:65be27845400 188 #define TSM_TIMING40init (0x6926ffffU) /* (dcoc_en) */
AnnaBridge 172:65be27845400 189 #define TSM_TIMING41init (0x2726ffffU) /* (dcoc_init) */
AnnaBridge 172:65be27845400 190 #define TSM_TIMING42init (0xffffffffU) /* (sar_adc_trig_en) */
AnnaBridge 172:65be27845400 191 #define TSM_TIMING43init (0xffffffffU) /* (tsm_spare0_en) */
AnnaBridge 172:65be27845400 192 #define TSM_TIMING44init (0xffffffffU) /* (tsm_spare1_en) */
AnnaBridge 172:65be27845400 193 #define TSM_TIMING45init (0xffffffffU) /* (tsm_spare2_en) */
AnnaBridge 172:65be27845400 194 #define TSM_TIMING46init (0xffffffffU) /* (tsm_spare3_en) */
AnnaBridge 172:65be27845400 195 #define TSM_TIMING47init (0xffffffffU) /* (gpio0_trig_en) */
AnnaBridge 172:65be27845400 196 #define TSM_TIMING48init (0xffffffffU) /* (gpio1_trig_en) */
AnnaBridge 172:65be27845400 197 #define TSM_TIMING49init (0xffffffffU) /* (gpio2_trig_en) */
AnnaBridge 172:65be27845400 198 #define TSM_TIMING50init (0xffffffffU) /* (gpio3_trig_en) */
AnnaBridge 172:65be27845400 199 #define TSM_TIMING51init (0x6903ffffU) /* (rxtx_auxpll_bias_en) */
AnnaBridge 172:65be27845400 200 #define TSM_TIMING52init (0x1706ffffU) /* (rxtx_auxpll_fcal_en) */
AnnaBridge 172:65be27845400 201 #define TSM_TIMING53init (0x6903ffffU) /* (rxtx_auxpll_lf_pd_en) */
AnnaBridge 172:65be27845400 202 #define TSM_TIMING54init (0x1703ffffU) /* (rxtx_auxpll_pd_lf_filter_charge_en) */
AnnaBridge 172:65be27845400 203 #define TSM_TIMING55init (0x6920ffffU) /* (rxtx_auxpll_adc_buf_en) */
AnnaBridge 172:65be27845400 204 #define TSM_TIMING56init (0x6920ffffU) /* (rxtx_auxpll_dig_buf_en) */
AnnaBridge 172:65be27845400 205 #define TSM_TIMING57init (0x1a03ffffU) /* (rxtx_rccal_en) */
AnnaBridge 172:65be27845400 206 #define TSM_TIMING58init (0xffff6f03U) /* (tx_hpm_dac_en) */
AnnaBridge 172:65be27845400 207 #define END_OF_SEQinit (0x69686f67U) /* */
AnnaBridge 172:65be27845400 208 #define TX_RX_ON_DELinit (0x00008a86U) /* */
AnnaBridge 172:65be27845400 209 #define TX_RX_SYNTH_init (0x00002318U) /* */
AnnaBridge 172:65be27845400 210 #endif /* RF_OSC_26MHZ == 1 */
AnnaBridge 172:65be27845400 211
AnnaBridge 172:65be27845400 212 #define AUX_PLL_DELAY (0)
AnnaBridge 172:65be27845400 213 /* TSM bitfield shift and value definitions */
AnnaBridge 172:65be27845400 214 #define TX_DIG_EN_ASSERT (95) /* Assertion time for TX_DIG_EN, used in mode specific settings */
AnnaBridge 172:65be27845400 215 #define ZGBE_TX_DIG_EN_ASSERT (TX_DIG_EN_ASSERT - 1) /* Zigbee TX_DIG_EN must assert 1 tick sooner, see adjustment below based on data padding */
AnnaBridge 172:65be27845400 216 /* EDIT THIS LINE TO CONTROL PA_RAMP! */
AnnaBridge 172:65be27845400 217 #define PA_RAMP_TIME (2) /* Only allowable values are [0, 1, 2, or 4] in Gen3 */
AnnaBridge 172:65be27845400 218 #define PA_RAMP_SEL_0US (0)
AnnaBridge 172:65be27845400 219 #define PA_RAMP_SEL_1US (1)
AnnaBridge 172:65be27845400 220 #define PA_RAMP_SEL_2US (2)
AnnaBridge 172:65be27845400 221 #define PA_RAMP_SEL_4US (3)
AnnaBridge 172:65be27845400 222 #if !((PA_RAMP_TIME == 0) || (PA_RAMP_TIME == 1) || (PA_RAMP_TIME == 2) || (PA_RAMP_TIME == 4))
AnnaBridge 172:65be27845400 223 #error "Invalid value for PA_RAMP_TIME macro"
AnnaBridge 172:65be27845400 224 #endif /* Error check of PA RAMP TIME */
AnnaBridge 172:65be27845400 225
AnnaBridge 172:65be27845400 226 #define ADD_FOR_26MHZ (4)
AnnaBridge 172:65be27845400 227 #define END_OF_TX_WU_NORAMP (103) /* NOTE: NORAMP and 2us ramp time behaviors are identical for TX WU and WD */
AnnaBridge 172:65be27845400 228 #define END_OF_TX_WD_NORAMP (111) /* NOTE: NORAMP and 2us ramp time behaviors are identical for TX WU and WD */
AnnaBridge 172:65be27845400 229 /* Redefine the values of END_OF_TX_WU and END_OF_TX_WD based on whether DATA PADDING is enabled and the selection of ramp time */
AnnaBridge 172:65be27845400 230 /* These two constants are then used on both common configuration and mode specific configuration files to define the TSM timing values */
AnnaBridge 172:65be27845400 231 #if ((PA_RAMP_TIME == 0) || (PA_RAMP_TIME == 1) || (PA_RAMP_TIME == 2))
AnnaBridge 172:65be27845400 232 #define END_OF_TX_WU (END_OF_TX_WU_NORAMP)
AnnaBridge 172:65be27845400 233 #define END_OF_TX_WD (END_OF_TX_WD_NORAMP)
AnnaBridge 172:65be27845400 234 #if (PA_RAMP_TIME == 0)
AnnaBridge 172:65be27845400 235 #define PA_RAMP_SEL PA_RAMP_SEL_0US
AnnaBridge 172:65be27845400 236 #define DATA_PADDING_EN (0)
AnnaBridge 172:65be27845400 237 #else
AnnaBridge 172:65be27845400 238 #define DATA_PADDING_EN (1)
AnnaBridge 172:65be27845400 239 #if (PA_RAMP_TIME == 1)
AnnaBridge 172:65be27845400 240 #define PA_RAMP_SEL PA_RAMP_SEL_1US
AnnaBridge 172:65be27845400 241 #else
AnnaBridge 172:65be27845400 242 #define PA_RAMP_SEL PA_RAMP_SEL_2US
AnnaBridge 172:65be27845400 243 #endif /* (PA_RAMP_TIME == 1) */
AnnaBridge 172:65be27845400 244 #endif /* (PA_RAMP_TIME == 0) */
AnnaBridge 172:65be27845400 245 #else /* ((PA_RAMP_TIME == 0) || (PA_RAMP_TIME == 1) || (PA_RAMP_TIME == 2)) */
AnnaBridge 172:65be27845400 246 #if (PA_RAMP_TIME == 4)
AnnaBridge 172:65be27845400 247 #define END_OF_TX_WU (END_OF_TX_WU_NORAMP + 2)
AnnaBridge 172:65be27845400 248 #define END_OF_TX_WD (END_OF_TX_WD_NORAMP + 4)
AnnaBridge 172:65be27845400 249 #define PA_RAMP_SEL PA_RAMP_SEL_4US
AnnaBridge 172:65be27845400 250 #define DATA_PADDING_EN (1)
AnnaBridge 172:65be27845400 251 #else /* (PA_RAMP_TIME == 4) */
AnnaBridge 172:65be27845400 252 #error "Invalid value for PA_RAMP_TIME macro"
AnnaBridge 172:65be27845400 253 #endif /* (PA_RAMP_TIME == 4) */
AnnaBridge 172:65be27845400 254 #endif/* (PA_RAMP_TIME == 4) */
AnnaBridge 172:65be27845400 255
AnnaBridge 172:65be27845400 256 #define END_OF_RX_WU (104 + AUX_PLL_DELAY)
AnnaBridge 172:65be27845400 257
AnnaBridge 172:65be27845400 258 #if RF_OSC_26MHZ == 1
AnnaBridge 172:65be27845400 259 #define END_OF_RX_WD (END_OF_RX_WU + 1 + ADD_FOR_26MHZ) /* Need to handle normal signals extending when 26MHZ warmdown is extended */
AnnaBridge 172:65be27845400 260 #else
AnnaBridge 172:65be27845400 261 #define END_OF_RX_WD (END_OF_RX_WU + 1)
AnnaBridge 172:65be27845400 262 #endif /* RF_OSC_26MHZ == 1 */
AnnaBridge 172:65be27845400 263
AnnaBridge 172:65be27845400 264 #define END_OF_RX_WU_26MHZ (END_OF_RX_WU + ADD_FOR_26MHZ)
AnnaBridge 172:65be27845400 265 #define END_OF_RX_WD_26MHZ (END_OF_RX_WU + 1 + ADD_FOR_26MHZ)
AnnaBridge 172:65be27845400 266
AnnaBridge 172:65be27845400 267 /* PA Bias Table - Gen3 version */
AnnaBridge 172:65be27845400 268 #define PA_RAMP_0 0x1
AnnaBridge 172:65be27845400 269 #define PA_RAMP_1 0x2
AnnaBridge 172:65be27845400 270 #define PA_RAMP_2 0x4
AnnaBridge 172:65be27845400 271 #define PA_RAMP_3 0x6
AnnaBridge 172:65be27845400 272 #define PA_RAMP_4 0x8
AnnaBridge 172:65be27845400 273 #define PA_RAMP_5 0xc
AnnaBridge 172:65be27845400 274 #define PA_RAMP_6 0x10
AnnaBridge 172:65be27845400 275 #define PA_RAMP_7 0x14
AnnaBridge 172:65be27845400 276 #define PA_RAMP_8 0x18
AnnaBridge 172:65be27845400 277 #define PA_RAMP_9 0x1c
AnnaBridge 172:65be27845400 278 #define PA_RAMP_10 0x22
AnnaBridge 172:65be27845400 279 #define PA_RAMP_11 0x28
AnnaBridge 172:65be27845400 280 #define PA_RAMP_12 0x2c
AnnaBridge 172:65be27845400 281 #define PA_RAMP_13 0x30
AnnaBridge 172:65be27845400 282 #define PA_RAMP_14 0x36
AnnaBridge 172:65be27845400 283 #define PA_RAMP_15 0x3c
AnnaBridge 172:65be27845400 284
AnnaBridge 172:65be27845400 285 #else /* Gen2 TSM definitions */
AnnaBridge 172:65be27845400 286 /* GEN2 TSM defines */
AnnaBridge 172:65be27845400 287 #define AUX_PLL_DELAY (0)
AnnaBridge 172:65be27845400 288 /* TSM bitfield shift and value definitions */
AnnaBridge 172:65be27845400 289 #define TX_DIG_EN_ASSERT (95)
AnnaBridge 172:65be27845400 290 #define ZGBE_TX_DIG_EN_ASSERT (TX_DIG_EN_ASSERT - 1) /* Zigbee TX_DIG_EN must assert 1 tick sooner, see adjustment below based on data padding */
AnnaBridge 172:65be27845400 291 /* EDIT THIS LINE TO CONTROL PA_RAMP! */
AnnaBridge 172:65be27845400 292 #define PA_RAMP_TIME (2) /* Only allowable values are [0, 2, 4, or 8] for PA RAMP times in Gen2.0 */
AnnaBridge 172:65be27845400 293 #define PA_RAMP_SEL_0US (0)
AnnaBridge 172:65be27845400 294 #define PA_RAMP_SEL_2US (1)
AnnaBridge 172:65be27845400 295 #define PA_RAMP_SEL_4US (2)
AnnaBridge 172:65be27845400 296 #define PA_RAMP_SEL_8US (3)
AnnaBridge 172:65be27845400 297
AnnaBridge 172:65be27845400 298 #if !((PA_RAMP_TIME == 0) || (PA_RAMP_TIME == 2) || (PA_RAMP_TIME == 4) || (PA_RAMP_TIME == 8))
AnnaBridge 172:65be27845400 299 #error "Invalid value for PA_RAMP_TIME macro"
AnnaBridge 172:65be27845400 300 #endif /* Error check of PA RAMP TIME */
AnnaBridge 172:65be27845400 301 #define ADD_FOR_26MHZ (4)
AnnaBridge 172:65be27845400 302 #define END_OF_TX_WU_NORAMP (103) /* NOTE: NORAMP and 2us ramp time behaviors are identical for TX WU and WD */
AnnaBridge 172:65be27845400 303 #define END_OF_TX_WD_NORAMP (111) /* NOTE: NORAMP and 2us ramp time behaviors are identical for TX WU and WD */
AnnaBridge 172:65be27845400 304 /* Redefine the values of END_OF_TX_WU and END_OF_TX_WD based on whether DATA PADDING is enabled and the selection of ramp time */
AnnaBridge 172:65be27845400 305 /* These two constants are then used on both common configuration and mode specific configuration files to define the TSM timing values */
AnnaBridge 172:65be27845400 306 #if ((PA_RAMP_TIME == 0) || (PA_RAMP_TIME == 2))
AnnaBridge 172:65be27845400 307 #define END_OF_TX_WU (END_OF_TX_WU_NORAMP)
AnnaBridge 172:65be27845400 308 #define END_OF_TX_WD (END_OF_TX_WD_NORAMP)
AnnaBridge 172:65be27845400 309 #define TX_SYNTH_DELAY_ADJ (0)
AnnaBridge 172:65be27845400 310 #define PD_CYCLE_SLIP_TX_HI_ADJ (0)
AnnaBridge 172:65be27845400 311 #define PD_CYCLE_SLIP_TX_LO_ADJ (1)
AnnaBridge 172:65be27845400 312 #define ZGBE_TX_DIG_EN_TX_HI_ADJ (-5) /* Only applies to Zigbee mode */
AnnaBridge 172:65be27845400 313 #if (PA_RAMP_TIME == 0)
AnnaBridge 172:65be27845400 314 #define PA_RAMP_SEL PA_RAMP_SEL_0US
AnnaBridge 172:65be27845400 315 #define DATA_PADDING_EN (0)
AnnaBridge 172:65be27845400 316 #define TX_DIG_EN_TX_HI_ADJ (-2)
AnnaBridge 172:65be27845400 317 #else
AnnaBridge 172:65be27845400 318 #define DATA_PADDING_EN (1)
AnnaBridge 172:65be27845400 319 #define TX_DIG_EN_TX_HI_ADJ (0)
AnnaBridge 172:65be27845400 320 #define PA_RAMP_SEL PA_RAMP_SEL_2US
AnnaBridge 172:65be27845400 321 #endif /* (PA_RAMP_TIME == 0) */
AnnaBridge 172:65be27845400 322 #else /* ((PA_RAMP_TIME == 0) || (PA_RAMP_TIME == 2)) */
AnnaBridge 172:65be27845400 323 #if (PA_RAMP_TIME == 4)
AnnaBridge 172:65be27845400 324 #define END_OF_TX_WU (END_OF_TX_WU_NORAMP + 2)
AnnaBridge 172:65be27845400 325 #define END_OF_TX_WD (END_OF_TX_WD_NORAMP + 4)
AnnaBridge 172:65be27845400 326 #define TX_SYNTH_DELAY_ADJ (2)
AnnaBridge 172:65be27845400 327 #define PD_CYCLE_SLIP_TX_HI_ADJ (2)
AnnaBridge 172:65be27845400 328 #define PD_CYCLE_SLIP_TX_LO_ADJ (1)
AnnaBridge 172:65be27845400 329 #define TX_DIG_EN_TX_HI_ADJ (0)
AnnaBridge 172:65be27845400 330 #define ZGBE_TX_DIG_EN_TX_HI_ADJ (-3) /* Only applies to Zigbee mode */
AnnaBridge 172:65be27845400 331 #define PA_RAMP_SEL PA_RAMP_SEL_4US
AnnaBridge 172:65be27845400 332 #define DATA_PADDING_EN (1)
AnnaBridge 172:65be27845400 333 #else /* (PA_RAMP_TIME==4) */
AnnaBridge 172:65be27845400 334 #if ((PA_RAMP_TIME == 8) && (!RADIO_IS_GEN_3P0))
AnnaBridge 172:65be27845400 335 #define END_OF_TX_WU (END_OF_TX_WU_NORAMP + 6)
AnnaBridge 172:65be27845400 336 #define END_OF_TX_WD (END_OF_TX_WD_NORAMP + 12)
AnnaBridge 172:65be27845400 337 #define TX_SYNTH_DELAY_ADJ (6)
AnnaBridge 172:65be27845400 338 #define PD_CYCLE_SLIP_TX_HI_ADJ (6)
AnnaBridge 172:65be27845400 339 #define PD_CYCLE_SLIP_TX_LO_ADJ (1)
AnnaBridge 172:65be27845400 340 #define TX_DIG_EN_TX_HI_ADJ (4)
AnnaBridge 172:65be27845400 341 #define ZGBE_TX_DIG_EN_TX_HI_ADJ (1) /* Only applies to Zigbee mode */
AnnaBridge 172:65be27845400 342 #define PA_RAMP_SEL PA_RAMP_SEL_8US
AnnaBridge 172:65be27845400 343 #define DATA_PADDING_EN (1)
AnnaBridge 172:65be27845400 344 #else /* (PA_RAMP_TIME == 8) */
AnnaBridge 172:65be27845400 345 #error "Invalid value for PA_RAMP_TIME macro"
AnnaBridge 172:65be27845400 346 #endif /* (PA_RAMP_TIME == 8) */
AnnaBridge 172:65be27845400 347 #endif/* (PA_RAMP_TIME == 4) */
AnnaBridge 172:65be27845400 348 #endif /* ((PA_RAMP_TIME == 0) || (PA_RAMP_TIME == 2)) */
AnnaBridge 172:65be27845400 349
AnnaBridge 172:65be27845400 350 #define TX_DIG_EN_ASSERT_MSK500 (END_OF_TX_WU - 3)
AnnaBridge 172:65be27845400 351
AnnaBridge 172:65be27845400 352 #define END_OF_RX_WU (104 + AUX_PLL_DELAY)
AnnaBridge 172:65be27845400 353 #if RF_OSC_26MHZ == 1
AnnaBridge 172:65be27845400 354 #define END_OF_RX_WD (END_OF_RX_WU + 1 + ADD_FOR_26MHZ) /* Need to handle normal signals extending when 26MHZ warmdown is extended */
AnnaBridge 172:65be27845400 355 #else
AnnaBridge 172:65be27845400 356 #define END_OF_RX_WD (END_OF_RX_WU + 1)
AnnaBridge 172:65be27845400 357 #endif /* RF_OSC_26MHZ == 1 */
AnnaBridge 172:65be27845400 358 #define END_OF_RX_WU_26MHZ (END_OF_RX_WU + ADD_FOR_26MHZ)
AnnaBridge 172:65be27845400 359 #define END_OF_RX_WD_26MHZ (END_OF_RX_WU + 1 + ADD_FOR_26MHZ)
AnnaBridge 172:65be27845400 360
AnnaBridge 172:65be27845400 361 /* PA Bias Table */
AnnaBridge 172:65be27845400 362 #define PA_RAMP_0 0x1
AnnaBridge 172:65be27845400 363 #define PA_RAMP_1 0x2
AnnaBridge 172:65be27845400 364 #define PA_RAMP_2 0x4
AnnaBridge 172:65be27845400 365 #define PA_RAMP_3 0x8
AnnaBridge 172:65be27845400 366 #define PA_RAMP_4 0xe
AnnaBridge 172:65be27845400 367 #define PA_RAMP_5 0x16
AnnaBridge 172:65be27845400 368 #define PA_RAMP_6 0x22
AnnaBridge 172:65be27845400 369 #define PA_RAMP_7 0x2e
AnnaBridge 172:65be27845400 370
AnnaBridge 172:65be27845400 371 /* BLE LL timing definitions */
AnnaBridge 172:65be27845400 372 #define TX_ON_DELAY (0x85) /* Adjusted TX_ON_DELAY to make turnaround time 150usec */
AnnaBridge 172:65be27845400 373 #define RX_ON_DELAY (29 + END_OF_RX_WU)
AnnaBridge 172:65be27845400 374 #define RX_ON_DELAY_26MHZ (29 + END_OF_RX_WU_26MHZ)
AnnaBridge 172:65be27845400 375 #define TX_RX_ON_DELAY_VAL (TX_ON_DELAY << 8 | RX_ON_DELAY)
AnnaBridge 172:65be27845400 376 #define TX_RX_ON_DELAY_VAL_26MHZ (TX_ON_DELAY << 8 | RX_ON_DELAY_26MHZ)
AnnaBridge 172:65be27845400 377 #define TX_SYNTH_DELAY (TX_ON_DELAY - END_OF_TX_WU - TX_SYNTH_DELAY_ADJ) /* Adjustment to TX_SYNTH_DELAY due to DATA_PADDING */
AnnaBridge 172:65be27845400 378 #define RX_SYNTH_DELAY (0x18)
AnnaBridge 172:65be27845400 379 #define TX_RX_SYNTH_DELAY_VAL (TX_SYNTH_DELAY << 8 | RX_SYNTH_DELAY)
AnnaBridge 172:65be27845400 380
AnnaBridge 172:65be27845400 381 /* PHY reference waveform assembly */
AnnaBridge 172:65be27845400 382 #define RW0PS(loc, val) (((val) & 0x1F) << ((loc) * 5)) /* Ref Word 0 - loc is the phase info symbol number, val is the value of the phase info */
AnnaBridge 172:65be27845400 383 #define RW1PS(loc, val) (((val) & 0x1F) << (((loc) * 5) - 32)) /* Ref Word 1 - loc is the phase info symbol number, val is the value of the phase info */
AnnaBridge 172:65be27845400 384 #define RW2PS(loc, val) (((val) & 0x1F) << (((loc) * 5) - 64)) /* Ref Word 2 - loc is the phase info symbol number, val is the value of the phase info */
AnnaBridge 172:65be27845400 385 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 386
AnnaBridge 172:65be27845400 387 /*! @brief Error codes for the XCVR driver. */
AnnaBridge 172:65be27845400 388 typedef enum _xcvrStatus
AnnaBridge 172:65be27845400 389 {
AnnaBridge 172:65be27845400 390 gXcvrSuccess_c = 0,
AnnaBridge 172:65be27845400 391 gXcvrInvalidParameters_c,
AnnaBridge 172:65be27845400 392 gXcvrUnsupportedOperation_c,
AnnaBridge 172:65be27845400 393 gXcvrTrimFailure_c
AnnaBridge 172:65be27845400 394 } xcvrStatus_t;
AnnaBridge 172:65be27845400 395
AnnaBridge 172:65be27845400 396 /*! @brief Health status returned from PHY upon status check function return. */
AnnaBridge 172:65be27845400 397 typedef enum _healthStatus
AnnaBridge 172:65be27845400 398 {
AnnaBridge 172:65be27845400 399 NO_ERRORS = 0,
AnnaBridge 172:65be27845400 400 PLL_CTUNE_FAIL = 1,
AnnaBridge 172:65be27845400 401 PLL_CYCLE_SLIP_FAIL = 2,
AnnaBridge 172:65be27845400 402 PLL_FREQ_TARG_FAIL = 4,
AnnaBridge 172:65be27845400 403 PLL_TSM_ABORT_FAIL = 8,
AnnaBridge 172:65be27845400 404 } healthStatus_t;
AnnaBridge 172:65be27845400 405
AnnaBridge 172:65be27845400 406 /*! @brief Health status returned from PHY upon status check function return. */
AnnaBridge 172:65be27845400 407 typedef enum _ext_clock_config
AnnaBridge 172:65be27845400 408 {
AnnaBridge 172:65be27845400 409 EXT_CLK_32_MHZ = 0,
AnnaBridge 172:65be27845400 410 EXT_CLK_26_MHZ = 1,
AnnaBridge 172:65be27845400 411 } ext_clock_config_t;
AnnaBridge 172:65be27845400 412
AnnaBridge 172:65be27845400 413 /*! @brief Radio operating mode setting types. */
AnnaBridge 172:65be27845400 414 typedef enum _radio_mode
AnnaBridge 172:65be27845400 415 {
AnnaBridge 172:65be27845400 416 BLE_MODE = 0,
AnnaBridge 172:65be27845400 417 ZIGBEE_MODE = 1,
AnnaBridge 172:65be27845400 418 ANT_MODE = 2,
AnnaBridge 172:65be27845400 419
AnnaBridge 172:65be27845400 420 /* BT=0.5, h=** */
AnnaBridge 172:65be27845400 421 GFSK_BT_0p5_h_0p5 = 3, /* < BT=0.5, h=0.5 [BLE at 1MBPS data rate; CS4 at 250KBPS data rate] */
AnnaBridge 172:65be27845400 422 GFSK_BT_0p5_h_0p32 = 4, /* < BT=0.5, h=0.32*/
AnnaBridge 172:65be27845400 423 GFSK_BT_0p5_h_0p7 = 5, /* < BT=0.5, h=0.7 [ CS1 at 500KBPS data rate] */
AnnaBridge 172:65be27845400 424 GFSK_BT_0p5_h_1p0 = 6, /* < BT=0.5, h=1.0 [ CS4 at 250KBPS data rate] */
AnnaBridge 172:65be27845400 425
AnnaBridge 172:65be27845400 426 /* BT=** h=0.5 */
AnnaBridge 172:65be27845400 427 GFSK_BT_0p3_h_0p5 = 7, /* < BT=0.3, h=0.5 [ CS2 at 1MBPS data rate] */
AnnaBridge 172:65be27845400 428 GFSK_BT_0p7_h_0p5 = 8, /* < BT=0.7, h=0.5 */
AnnaBridge 172:65be27845400 429
AnnaBridge 172:65be27845400 430 MSK = 9,
AnnaBridge 172:65be27845400 431 NUM_RADIO_MODES = 10,
AnnaBridge 172:65be27845400 432 } radio_mode_t;
AnnaBridge 172:65be27845400 433
AnnaBridge 172:65be27845400 434 /*! @brief Link layer types. */
AnnaBridge 172:65be27845400 435 typedef enum _link_layer
AnnaBridge 172:65be27845400 436 {
AnnaBridge 172:65be27845400 437 BLE_LL = 0, /* Must match bit assignment in RADIO1_IRQ_SEL */
AnnaBridge 172:65be27845400 438 ZIGBEE_LL = 1, /* Must match bit assignment in RADIO1_IRQ_SEL */
AnnaBridge 172:65be27845400 439 ANT_LL = 2, /* Must match bit assignment in RADIO1_IRQ_SEL */
AnnaBridge 172:65be27845400 440 GENFSK_LL = 3, /* Must match bit assignment in RADIO1_IRQ_SEL */
AnnaBridge 172:65be27845400 441 UNASSIGNED_LL = 4, /* Must match bit assignment in RADIO1_IRQ_SEL */
AnnaBridge 172:65be27845400 442 } link_layer_t;
AnnaBridge 172:65be27845400 443
AnnaBridge 172:65be27845400 444 /*! @brief Data rate selections. */
AnnaBridge 172:65be27845400 445 typedef enum _data_rate
AnnaBridge 172:65be27845400 446 {
AnnaBridge 172:65be27845400 447 DR_1MBPS = 0, /* Must match bit assignment in BITRATE field */
AnnaBridge 172:65be27845400 448 DR_500KBPS = 1, /* Must match bit assignment in BITRATE field */
AnnaBridge 172:65be27845400 449 DR_250KBPS = 2, /* Must match bit assignment in BITRATE field */
AnnaBridge 172:65be27845400 450 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 451 DR_2MBPS = 3, /* Must match bit assignment in BITRATE field */
AnnaBridge 172:65be27845400 452 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 453 DR_UNASSIGNED = 4, /* Must match bit assignment in BITRATE field */
AnnaBridge 172:65be27845400 454 } data_rate_t;
AnnaBridge 172:65be27845400 455
AnnaBridge 172:65be27845400 456 /*! @brief Control settings for Fast Antenna Diversity */
AnnaBridge 172:65be27845400 457 typedef enum _FAD_LPPS_CTRL
AnnaBridge 172:65be27845400 458 {
AnnaBridge 172:65be27845400 459 NONE = 0,
AnnaBridge 172:65be27845400 460 FAD_ENABLED = 1,
AnnaBridge 172:65be27845400 461 LPPS_ENABLED = 2
AnnaBridge 172:65be27845400 462 } FAD_LPPS_CTRL_T;
AnnaBridge 172:65be27845400 463
AnnaBridge 172:65be27845400 464 /*! @brief XCVR XCVR Panic codes for indicating panic reason. */
AnnaBridge 172:65be27845400 465 typedef enum _XCVR_PANIC_ID
AnnaBridge 172:65be27845400 466 {
AnnaBridge 172:65be27845400 467 WRONG_RADIO_ID_DETECTED = 1,
AnnaBridge 172:65be27845400 468 CALIBRATION_INVALID = 2,
AnnaBridge 172:65be27845400 469 } XCVR_PANIC_ID_T;
AnnaBridge 172:65be27845400 470
AnnaBridge 172:65be27845400 471 /*! @brief Initialization or mode change selection for config routine. */
AnnaBridge 172:65be27845400 472 typedef enum _XCVR_INIT_MODE_CHG
AnnaBridge 172:65be27845400 473 {
AnnaBridge 172:65be27845400 474 XCVR_MODE_CHANGE = 0,
AnnaBridge 172:65be27845400 475 XCVR_FIRST_INIT = 1,
AnnaBridge 172:65be27845400 476 } XCVR_INIT_MODE_CHG_T;
AnnaBridge 172:65be27845400 477
AnnaBridge 172:65be27845400 478 typedef enum _XCVR_COEX_PRIORITY
AnnaBridge 172:65be27845400 479 {
AnnaBridge 172:65be27845400 480 XCVR_COEX_LOW_PRIO = 0,
AnnaBridge 172:65be27845400 481 XCVR_COEX_HIGH_PRIO = 1
AnnaBridge 172:65be27845400 482 } XCVR_COEX_PRIORITY_T;
AnnaBridge 172:65be27845400 483
AnnaBridge 172:65be27845400 484 /*! @brief Current configuration of the radio. */
AnnaBridge 172:65be27845400 485 typedef struct xcvr_currConfig_tag
AnnaBridge 172:65be27845400 486 {
AnnaBridge 172:65be27845400 487 radio_mode_t radio_mode;
AnnaBridge 172:65be27845400 488 data_rate_t data_rate;
AnnaBridge 172:65be27845400 489 } xcvr_currConfig_t;
AnnaBridge 172:65be27845400 490
AnnaBridge 172:65be27845400 491 /*!
AnnaBridge 172:65be27845400 492 * @brief XCVR RX_DIG channel filter coefficient storage
AnnaBridge 172:65be27845400 493 * Storage of the coefficients varies from 6 bits to 10 bits so all use int16_t for storage.
AnnaBridge 172:65be27845400 494 */
AnnaBridge 172:65be27845400 495 typedef struct _xcvr_rx_chf_coeffs
AnnaBridge 172:65be27845400 496 {
AnnaBridge 172:65be27845400 497 uint16_t rx_chf_coef_0; /* < 6 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 498 uint16_t rx_chf_coef_1; /* < 6 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 499 uint16_t rx_chf_coef_2; /* < 7 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 500 uint16_t rx_chf_coef_3; /* < 7 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 501 uint16_t rx_chf_coef_4; /* < 7 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 502 uint16_t rx_chf_coef_5; /* < 7 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 503 uint16_t rx_chf_coef_6; /* < 8 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 504 uint16_t rx_chf_coef_7; /* < 8 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 505 uint16_t rx_chf_coef_8; /* < 9 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 506 uint16_t rx_chf_coef_9; /* < 9 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 507 uint16_t rx_chf_coef_10; /* < 10 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 508 uint16_t rx_chf_coef_11; /* < 10 bit two's complement stored in a uint16_t */
AnnaBridge 172:65be27845400 509 } xcvr_rx_chf_coeffs_t;
AnnaBridge 172:65be27845400 510
AnnaBridge 172:65be27845400 511 /*!
AnnaBridge 172:65be27845400 512 * @brief XCVR masked init type for 32 bit registers
AnnaBridge 172:65be27845400 513 * Initialization uses the mask to clear selected fields of the register and then OR's in the init value. All init values must be in their proper field position.
AnnaBridge 172:65be27845400 514 */
AnnaBridge 172:65be27845400 515 typedef struct _xcvr_masked_init_32
AnnaBridge 172:65be27845400 516 {
AnnaBridge 172:65be27845400 517 uint32_t mask;
AnnaBridge 172:65be27845400 518 uint32_t init;
AnnaBridge 172:65be27845400 519 } xcvr_masked_init_32_t;
AnnaBridge 172:65be27845400 520
AnnaBridge 172:65be27845400 521 /*!
AnnaBridge 172:65be27845400 522 * @brief XCVR common configure structure
AnnaBridge 172:65be27845400 523 */
AnnaBridge 172:65be27845400 524 typedef struct _xcvr_common_config
AnnaBridge 172:65be27845400 525 {
AnnaBridge 172:65be27845400 526 /* XCVR_ANA configs */
AnnaBridge 172:65be27845400 527 xcvr_masked_init_32_t ana_sy_ctrl1;
AnnaBridge 172:65be27845400 528
AnnaBridge 172:65be27845400 529 /* XCVR_PLL_DIG configs */
AnnaBridge 172:65be27845400 530 uint32_t pll_hpm_bump;
AnnaBridge 172:65be27845400 531 uint32_t pll_mod_ctrl;
AnnaBridge 172:65be27845400 532 uint32_t pll_chan_map;
AnnaBridge 172:65be27845400 533 uint32_t pll_lock_detect;
AnnaBridge 172:65be27845400 534 uint32_t pll_hpm_ctrl;
AnnaBridge 172:65be27845400 535 #if !RADIO_IS_GEN_2P1
AnnaBridge 172:65be27845400 536 uint32_t pll_hpmcal_ctrl;
AnnaBridge 172:65be27845400 537 #endif /* !RADIO_IS_GEN_2P1 */
AnnaBridge 172:65be27845400 538 uint32_t pll_hpm_sdm_res;
AnnaBridge 172:65be27845400 539 uint32_t pll_lpm_ctrl;
AnnaBridge 172:65be27845400 540 uint32_t pll_lpm_sdm_ctrl1;
AnnaBridge 172:65be27845400 541 uint32_t pll_delay_match;
AnnaBridge 172:65be27845400 542 uint32_t pll_ctune_ctrl;
AnnaBridge 172:65be27845400 543
AnnaBridge 172:65be27845400 544 /* XCVR_RX_DIG configs */
AnnaBridge 172:65be27845400 545 uint32_t rx_dig_ctrl_init; /* NOTE: Common init, mode init, and datarate init will be OR'd together for RX_DIG_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 546 uint32_t dcoc_ctrl_0_init_26mhz; /* NOTE: This will be OR'd with mode specific init for DCOC_CTRL_0 to form complete register initialization */
AnnaBridge 172:65be27845400 547 uint32_t dcoc_ctrl_0_init_32mhz; /* NOTE: This will be OR'd with mode specific init for DCOC_CTRL_0 to form complete register initialization */
AnnaBridge 172:65be27845400 548 uint32_t dcoc_ctrl_1_init;
AnnaBridge 172:65be27845400 549 uint32_t dcoc_cal_gain_init;
AnnaBridge 172:65be27845400 550 uint32_t dc_resid_ctrl_init; /* NOTE: This will be OR'd with datarate specific init for DCOC_RESID_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 551 uint32_t dcoc_cal_rcp_init;
AnnaBridge 172:65be27845400 552 uint32_t lna_gain_val_3_0;
AnnaBridge 172:65be27845400 553 uint32_t lna_gain_val_7_4;
AnnaBridge 172:65be27845400 554 uint32_t lna_gain_val_8;
AnnaBridge 172:65be27845400 555 uint32_t bba_res_tune_val_7_0;
AnnaBridge 172:65be27845400 556 uint32_t bba_res_tune_val_10_8;
AnnaBridge 172:65be27845400 557 uint32_t lna_gain_lin_val_2_0_init;
AnnaBridge 172:65be27845400 558 uint32_t lna_gain_lin_val_5_3_init;
AnnaBridge 172:65be27845400 559 uint32_t lna_gain_lin_val_8_6_init;
AnnaBridge 172:65be27845400 560 uint32_t lna_gain_lin_val_9_init;
AnnaBridge 172:65be27845400 561 uint32_t bba_res_tune_lin_val_3_0_init;
AnnaBridge 172:65be27845400 562 uint32_t bba_res_tune_lin_val_7_4_init;
AnnaBridge 172:65be27845400 563 uint32_t bba_res_tune_lin_val_10_8_init;
AnnaBridge 172:65be27845400 564 uint32_t dcoc_bba_step_init;
AnnaBridge 172:65be27845400 565 uint32_t dcoc_tza_step_00_init;
AnnaBridge 172:65be27845400 566 uint32_t dcoc_tza_step_01_init;
AnnaBridge 172:65be27845400 567 uint32_t dcoc_tza_step_02_init;
AnnaBridge 172:65be27845400 568 uint32_t dcoc_tza_step_03_init;
AnnaBridge 172:65be27845400 569 uint32_t dcoc_tza_step_04_init;
AnnaBridge 172:65be27845400 570 uint32_t dcoc_tza_step_05_init;
AnnaBridge 172:65be27845400 571 uint32_t dcoc_tza_step_06_init;
AnnaBridge 172:65be27845400 572 uint32_t dcoc_tza_step_07_init;
AnnaBridge 172:65be27845400 573 uint32_t dcoc_tza_step_08_init;
AnnaBridge 172:65be27845400 574 uint32_t dcoc_tza_step_09_init;
AnnaBridge 172:65be27845400 575 uint32_t dcoc_tza_step_10_init;
AnnaBridge 172:65be27845400 576 #if (RADIO_IS_GEN_3P0 || RADIO_IS_GEN_2P1)
AnnaBridge 172:65be27845400 577 uint32_t dcoc_cal_fail_th_init;
AnnaBridge 172:65be27845400 578 uint32_t dcoc_cal_pass_th_init;
AnnaBridge 172:65be27845400 579 #endif /* (RADIO_IS_GEN_3P0 || RADIO_IS_GEN_2P1) */
AnnaBridge 172:65be27845400 580 uint32_t agc_ctrl_0_init; /* NOTE: Common init and mode init will be OR'd together for AGC_CTRL_0 to form complete register initialization */
AnnaBridge 172:65be27845400 581 uint32_t agc_ctrl_1_init_26mhz; /* NOTE: This will be OR'd with datarate specific init to form complete register initialization */
AnnaBridge 172:65be27845400 582 uint32_t agc_ctrl_1_init_32mhz; /* NOTE: This will be OR'd with datarate specific init to form complete register initialization */
AnnaBridge 172:65be27845400 583 uint32_t agc_ctrl_3_init;
AnnaBridge 172:65be27845400 584 /* Other agc config inits moved to modeXdatarate config table */
AnnaBridge 172:65be27845400 585 uint32_t agc_gain_tbl_03_00_init;
AnnaBridge 172:65be27845400 586 uint32_t agc_gain_tbl_07_04_init;
AnnaBridge 172:65be27845400 587 uint32_t agc_gain_tbl_11_08_init;
AnnaBridge 172:65be27845400 588 uint32_t agc_gain_tbl_15_12_init;
AnnaBridge 172:65be27845400 589 uint32_t agc_gain_tbl_19_16_init;
AnnaBridge 172:65be27845400 590 uint32_t agc_gain_tbl_23_20_init;
AnnaBridge 172:65be27845400 591 uint32_t agc_gain_tbl_26_24_init;
AnnaBridge 172:65be27845400 592 uint32_t rssi_ctrl_0_init;
AnnaBridge 172:65be27845400 593 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 594 uint32_t rssi_ctrl_1_init;
AnnaBridge 172:65be27845400 595 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 596 uint32_t cca_ed_lqi_ctrl_0_init;
AnnaBridge 172:65be27845400 597 uint32_t cca_ed_lqi_ctrl_1_init;
AnnaBridge 172:65be27845400 598
AnnaBridge 172:65be27845400 599 /* XCVR_TSM configs */
AnnaBridge 172:65be27845400 600 uint32_t tsm_ctrl;
AnnaBridge 172:65be27845400 601 uint32_t tsm_ovrd2_init;
AnnaBridge 172:65be27845400 602 uint32_t end_of_seq_init_26mhz;
AnnaBridge 172:65be27845400 603 uint32_t end_of_seq_init_32mhz;
AnnaBridge 172:65be27845400 604 #if !RADIO_IS_GEN_2P1
AnnaBridge 172:65be27845400 605 uint32_t lpps_ctrl_init;
AnnaBridge 172:65be27845400 606 #endif /* !RADIO_IS_GEN_2P1 */
AnnaBridge 172:65be27845400 607 uint32_t tsm_fast_ctrl2_init_26mhz;
AnnaBridge 172:65be27845400 608 uint32_t tsm_fast_ctrl2_init_32mhz;
AnnaBridge 172:65be27845400 609 uint32_t recycle_count_init_26mhz;
AnnaBridge 172:65be27845400 610 uint32_t recycle_count_init_32mhz;
AnnaBridge 172:65be27845400 611 uint32_t pa_ramp_tbl_0_init;
AnnaBridge 172:65be27845400 612 uint32_t pa_ramp_tbl_1_init;
AnnaBridge 172:65be27845400 613 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 614 uint32_t pa_ramp_tbl_2_init;
AnnaBridge 172:65be27845400 615 uint32_t pa_ramp_tbl_3_init;
AnnaBridge 172:65be27845400 616 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 617 uint32_t tsm_timing_00_init;
AnnaBridge 172:65be27845400 618 uint32_t tsm_timing_01_init;
AnnaBridge 172:65be27845400 619 uint32_t tsm_timing_02_init;
AnnaBridge 172:65be27845400 620 uint32_t tsm_timing_03_init;
AnnaBridge 172:65be27845400 621 uint32_t tsm_timing_04_init;
AnnaBridge 172:65be27845400 622 uint32_t tsm_timing_05_init;
AnnaBridge 172:65be27845400 623 uint32_t tsm_timing_06_init;
AnnaBridge 172:65be27845400 624 uint32_t tsm_timing_07_init;
AnnaBridge 172:65be27845400 625 uint32_t tsm_timing_08_init;
AnnaBridge 172:65be27845400 626 uint32_t tsm_timing_09_init;
AnnaBridge 172:65be27845400 627 uint32_t tsm_timing_10_init;
AnnaBridge 172:65be27845400 628 uint32_t tsm_timing_11_init;
AnnaBridge 172:65be27845400 629 uint32_t tsm_timing_12_init;
AnnaBridge 172:65be27845400 630 uint32_t tsm_timing_13_init;
AnnaBridge 172:65be27845400 631 uint32_t tsm_timing_14_init_26mhz; /* tsm_timing_14 has mode specific LSbyte (both LS bytes) */
AnnaBridge 172:65be27845400 632 uint32_t tsm_timing_14_init_32mhz; /* tsm_timing_14 has mode specific LSbyte (both LS bytes) */
AnnaBridge 172:65be27845400 633 uint32_t tsm_timing_15_init;
AnnaBridge 172:65be27845400 634 uint32_t tsm_timing_16_init_26mhz;
AnnaBridge 172:65be27845400 635 uint32_t tsm_timing_16_init_32mhz;
AnnaBridge 172:65be27845400 636 uint32_t tsm_timing_17_init;
AnnaBridge 172:65be27845400 637 uint32_t tsm_timing_18_init;
AnnaBridge 172:65be27845400 638 uint32_t tsm_timing_19_init;
AnnaBridge 172:65be27845400 639 uint32_t tsm_timing_20_init;
AnnaBridge 172:65be27845400 640 uint32_t tsm_timing_21_init;
AnnaBridge 172:65be27845400 641 uint32_t tsm_timing_22_init;
AnnaBridge 172:65be27845400 642 uint32_t tsm_timing_23_init;
AnnaBridge 172:65be27845400 643 uint32_t tsm_timing_24_init;
AnnaBridge 172:65be27845400 644 uint32_t tsm_timing_25_init_26mhz;
AnnaBridge 172:65be27845400 645 uint32_t tsm_timing_25_init_32mhz;
AnnaBridge 172:65be27845400 646 uint32_t tsm_timing_26_init;
AnnaBridge 172:65be27845400 647 uint32_t tsm_timing_27_init_26mhz;
AnnaBridge 172:65be27845400 648 uint32_t tsm_timing_27_init_32mhz;
AnnaBridge 172:65be27845400 649 uint32_t tsm_timing_28_init_26mhz;
AnnaBridge 172:65be27845400 650 uint32_t tsm_timing_28_init_32mhz;
AnnaBridge 172:65be27845400 651 uint32_t tsm_timing_29_init_26mhz;
AnnaBridge 172:65be27845400 652 uint32_t tsm_timing_29_init_32mhz;
AnnaBridge 172:65be27845400 653 uint32_t tsm_timing_30_init_26mhz;
AnnaBridge 172:65be27845400 654 uint32_t tsm_timing_30_init_32mhz;
AnnaBridge 172:65be27845400 655 uint32_t tsm_timing_31_init_26mhz;
AnnaBridge 172:65be27845400 656 uint32_t tsm_timing_31_init_32mhz;
AnnaBridge 172:65be27845400 657 uint32_t tsm_timing_32_init_26mhz;
AnnaBridge 172:65be27845400 658 uint32_t tsm_timing_32_init_32mhz;
AnnaBridge 172:65be27845400 659 uint32_t tsm_timing_33_init_26mhz;
AnnaBridge 172:65be27845400 660 uint32_t tsm_timing_33_init_32mhz;
AnnaBridge 172:65be27845400 661 uint32_t tsm_timing_34_init;
AnnaBridge 172:65be27845400 662 uint32_t tsm_timing_35_init; /* tsm_timing_35 has a mode specific LSbyte*/
AnnaBridge 172:65be27845400 663 uint32_t tsm_timing_36_init_26mhz;
AnnaBridge 172:65be27845400 664 uint32_t tsm_timing_36_init_32mhz;
AnnaBridge 172:65be27845400 665 uint32_t tsm_timing_37_init_26mhz;
AnnaBridge 172:65be27845400 666 uint32_t tsm_timing_37_init_32mhz;
AnnaBridge 172:65be27845400 667 uint32_t tsm_timing_38_init;
AnnaBridge 172:65be27845400 668 uint32_t tsm_timing_39_init_26mhz;
AnnaBridge 172:65be27845400 669 uint32_t tsm_timing_39_init_32mhz;
AnnaBridge 172:65be27845400 670 uint32_t tsm_timing_40_init_26mhz;
AnnaBridge 172:65be27845400 671 uint32_t tsm_timing_40_init_32mhz;
AnnaBridge 172:65be27845400 672 uint32_t tsm_timing_41_init_26mhz;
AnnaBridge 172:65be27845400 673 uint32_t tsm_timing_41_init_32mhz;
AnnaBridge 172:65be27845400 674 uint32_t tsm_timing_51_init;
AnnaBridge 172:65be27845400 675 uint32_t tsm_timing_52_init_26mhz;
AnnaBridge 172:65be27845400 676 uint32_t tsm_timing_52_init_32mhz;
AnnaBridge 172:65be27845400 677 uint32_t tsm_timing_53_init;
AnnaBridge 172:65be27845400 678 uint32_t tsm_timing_54_init_26mhz;
AnnaBridge 172:65be27845400 679 uint32_t tsm_timing_54_init_32mhz;
AnnaBridge 172:65be27845400 680 uint32_t tsm_timing_55_init_26mhz;
AnnaBridge 172:65be27845400 681 uint32_t tsm_timing_55_init_32mhz;
AnnaBridge 172:65be27845400 682 uint32_t tsm_timing_56_init_26mhz;
AnnaBridge 172:65be27845400 683 uint32_t tsm_timing_56_init_32mhz;
AnnaBridge 172:65be27845400 684 uint32_t tsm_timing_57_init;
AnnaBridge 172:65be27845400 685 uint32_t tsm_timing_58_init;
AnnaBridge 172:65be27845400 686
AnnaBridge 172:65be27845400 687 /* XCVR_TX_DIG configs */
AnnaBridge 172:65be27845400 688 uint32_t tx_ctrl;
AnnaBridge 172:65be27845400 689 uint32_t tx_data_padding;
AnnaBridge 172:65be27845400 690 uint32_t tx_dft_pattern;
AnnaBridge 172:65be27845400 691 #if !RADIO_IS_GEN_2P1
AnnaBridge 172:65be27845400 692 uint32_t rf_dft_bist_1;
AnnaBridge 172:65be27845400 693 uint32_t rf_dft_bist_2;
AnnaBridge 172:65be27845400 694 #endif /* !RADIO_IS_GEN_2P1 */
AnnaBridge 172:65be27845400 695 } xcvr_common_config_t;
AnnaBridge 172:65be27845400 696
AnnaBridge 172:65be27845400 697 /*! @brief XCVR mode specific configure structure (varies by radio mode) */
AnnaBridge 172:65be27845400 698 typedef struct _xcvr_mode_config
AnnaBridge 172:65be27845400 699 {
AnnaBridge 172:65be27845400 700 radio_mode_t radio_mode;
AnnaBridge 172:65be27845400 701 uint32_t scgc5_clock_ena_bits;
AnnaBridge 172:65be27845400 702
AnnaBridge 172:65be27845400 703 /* XCVR_MISC configs */
AnnaBridge 172:65be27845400 704 xcvr_masked_init_32_t xcvr_ctrl;
AnnaBridge 172:65be27845400 705
AnnaBridge 172:65be27845400 706 /* XCVR_PHY configs */
AnnaBridge 172:65be27845400 707 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 708 uint32_t phy_fsk_pd_cfg0;
AnnaBridge 172:65be27845400 709 uint32_t phy_fsk_pd_cfg1;
AnnaBridge 172:65be27845400 710 uint32_t phy_fsk_cfg;
AnnaBridge 172:65be27845400 711 uint32_t phy_fsk_misc;
AnnaBridge 172:65be27845400 712 uint32_t phy_fad_ctrl;
AnnaBridge 172:65be27845400 713 #else
AnnaBridge 172:65be27845400 714 uint32_t phy_pre_ref0_init;
AnnaBridge 172:65be27845400 715 uint32_t phy_pre_ref1_init;
AnnaBridge 172:65be27845400 716 uint32_t phy_pre_ref2_init;
AnnaBridge 172:65be27845400 717 uint32_t phy_cfg1_init;
AnnaBridge 172:65be27845400 718 uint32_t phy_el_cfg_init; /* Should leave EL_WIN_SIZE and EL_INTERVAL to the data_rate specific configuration */
AnnaBridge 172:65be27845400 719 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 720
AnnaBridge 172:65be27845400 721 /* XCVR_RX_DIG configs */
AnnaBridge 172:65be27845400 722 uint32_t rx_dig_ctrl_init_26mhz; /* NOTE: Common init, mode init, and datarate init will be OR'd together for RX_DIG_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 723 uint32_t rx_dig_ctrl_init_32mhz; /* NOTE: Common init, mode init, and datarate init will be OR'd together for RX_DIG_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 724 uint32_t agc_ctrl_0_init; /* NOTE: Common init and mode init will be OR'd together for AGC_CTRL_0 to form complete register initialization */
AnnaBridge 172:65be27845400 725
AnnaBridge 172:65be27845400 726 /* XCVR_TSM configs */
AnnaBridge 172:65be27845400 727 #if (RADIO_IS_GEN_2P0 || RADIO_IS_GEN_2P1)
AnnaBridge 172:65be27845400 728 uint32_t tsm_timing_35_init; /* Only the LSbyte is mode specific */
AnnaBridge 172:65be27845400 729 #endif /* (RADIO_IS_GEN_2P0 || RADIO_IS_GEN_2P1) */
AnnaBridge 172:65be27845400 730
AnnaBridge 172:65be27845400 731 /* XCVR_TX_DIG configs */
AnnaBridge 172:65be27845400 732 uint32_t tx_gfsk_ctrl;
AnnaBridge 172:65be27845400 733 uint32_t tx_gfsk_coeff1_26mhz;
AnnaBridge 172:65be27845400 734 uint32_t tx_gfsk_coeff2_26mhz;
AnnaBridge 172:65be27845400 735 uint32_t tx_gfsk_coeff1_32mhz;
AnnaBridge 172:65be27845400 736 uint32_t tx_gfsk_coeff2_32mhz;
AnnaBridge 172:65be27845400 737 } xcvr_mode_config_t;
AnnaBridge 172:65be27845400 738
AnnaBridge 172:65be27845400 739 /*!
AnnaBridge 172:65be27845400 740 * @brief XCVR modeXdatarate specific configure structure (varies by radio mode AND data rate)
AnnaBridge 172:65be27845400 741 * This structure is used to store all of the XCVR settings which are dependent upon both radio mode and data rate. It is used as an overlay
AnnaBridge 172:65be27845400 742 * on top of the xcvr_mode_config_t structure to supply definitions which are either not in that table or which must be overridden for data rate.
AnnaBridge 172:65be27845400 743 */
AnnaBridge 172:65be27845400 744 typedef struct _xcvr_mode_datarate_config
AnnaBridge 172:65be27845400 745 {
AnnaBridge 172:65be27845400 746 radio_mode_t radio_mode;
AnnaBridge 172:65be27845400 747 data_rate_t data_rate;
AnnaBridge 172:65be27845400 748
AnnaBridge 172:65be27845400 749 /* XCVR_ANA configs */
AnnaBridge 172:65be27845400 750 xcvr_masked_init_32_t ana_sy_ctrl2;
AnnaBridge 172:65be27845400 751 xcvr_masked_init_32_t ana_rx_bba;
AnnaBridge 172:65be27845400 752 xcvr_masked_init_32_t ana_rx_tza;
AnnaBridge 172:65be27845400 753
AnnaBridge 172:65be27845400 754 /* XCVR_PHY configs */
AnnaBridge 172:65be27845400 755 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 756 uint32_t phy_fsk_misc_mode_datarate;
AnnaBridge 172:65be27845400 757 #else
AnnaBridge 172:65be27845400 758 uint32_t phy_cfg2_init;
AnnaBridge 172:65be27845400 759 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 760
AnnaBridge 172:65be27845400 761 uint32_t agc_ctrl_2_init_26mhz;
AnnaBridge 172:65be27845400 762 uint32_t agc_ctrl_2_init_32mhz;
AnnaBridge 172:65be27845400 763 xcvr_rx_chf_coeffs_t rx_chf_coeffs_26mhz; /* 26MHz ext clk */
AnnaBridge 172:65be27845400 764 xcvr_rx_chf_coeffs_t rx_chf_coeffs_32mhz; /* 32MHz ext clk */
AnnaBridge 172:65be27845400 765 uint32_t rx_rccal_ctrl_0;
AnnaBridge 172:65be27845400 766 uint32_t rx_rccal_ctrl_1;
AnnaBridge 172:65be27845400 767
AnnaBridge 172:65be27845400 768 /* XCVR_TX_DIG configs */
AnnaBridge 172:65be27845400 769 uint32_t tx_fsk_scale_26mhz; /* Only used by MSK mode, but dependent on datarate */
AnnaBridge 172:65be27845400 770 uint32_t tx_fsk_scale_32mhz; /* Only used by MSK mode, but dependent on datarate */
AnnaBridge 172:65be27845400 771 } xcvr_mode_datarate_config_t;
AnnaBridge 172:65be27845400 772
AnnaBridge 172:65be27845400 773 /*!
AnnaBridge 172:65be27845400 774 * @brief XCVR datarate specific configure structure (varies by data rate)
AnnaBridge 172:65be27845400 775 * This structure is used to store all of the XCVR settings which are dependent upon data rate. It is used as an overlay
AnnaBridge 172:65be27845400 776 * on top of the xcvr_mode_config_t structure to supply definitions which are either not in that table or which must be overridden for data rate.
AnnaBridge 172:65be27845400 777 */
AnnaBridge 172:65be27845400 778 typedef struct _xcvr_datarate_config
AnnaBridge 172:65be27845400 779 {
AnnaBridge 172:65be27845400 780 data_rate_t data_rate;
AnnaBridge 172:65be27845400 781
AnnaBridge 172:65be27845400 782 /* XCVR_PHY configs */
AnnaBridge 172:65be27845400 783 uint32_t phy_el_cfg_init; /* Note: EL_ENABLE is set in xcvr_mode_config_t settings */
AnnaBridge 172:65be27845400 784
AnnaBridge 172:65be27845400 785 /* XCVR_RX_DIG configs */
AnnaBridge 172:65be27845400 786 uint32_t rx_dig_ctrl_init_26mhz; /* NOTE: Common init, mode init, and datarate init will be OR'd together for RX_DIG_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 787 uint32_t rx_dig_ctrl_init_32mhz; /* NOTE: Common init, mode init, and datarate init will be OR'd together for RX_DIG_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 788 uint32_t agc_ctrl_1_init_26mhz;
AnnaBridge 172:65be27845400 789 uint32_t agc_ctrl_1_init_32mhz;
AnnaBridge 172:65be27845400 790 uint32_t dcoc_ctrl_0_init_26mhz; /* NOTE: This will be OR'd with common init for DCOC_CTRL_0 to form complete register initialization */
AnnaBridge 172:65be27845400 791 uint32_t dcoc_ctrl_0_init_32mhz; /* NOTE: This will be OR'd with common init for DCOC_CTRL_0 to form complete register initialization */
AnnaBridge 172:65be27845400 792 uint32_t dcoc_ctrl_1_init_26mhz; /* NOTE: This will be OR'd with common init for DCOC_CTRL_1 to form complete register initialization */
AnnaBridge 172:65be27845400 793 uint32_t dcoc_ctrl_1_init_32mhz; /* NOTE: This will be OR'd with common init for DCOC_CTRL_1 to form complete register initialization */
AnnaBridge 172:65be27845400 794 uint32_t dcoc_ctrl_2_init_26mhz;
AnnaBridge 172:65be27845400 795 uint32_t dcoc_ctrl_2_init_32mhz;
AnnaBridge 172:65be27845400 796 uint32_t dcoc_cal_iir_init_26mhz;
AnnaBridge 172:65be27845400 797 uint32_t dcoc_cal_iir_init_32mhz;
AnnaBridge 172:65be27845400 798 uint32_t dc_resid_ctrl_26mhz;/* NOTE: This will be OR'd with common init for DCOC_RESID_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 799 uint32_t dc_resid_ctrl_32mhz;/* NOTE: This will be OR'd with common init for DCOC_RESID_CTRL to form complete register initialization */
AnnaBridge 172:65be27845400 800 } xcvr_datarate_config_t;
AnnaBridge 172:65be27845400 801
AnnaBridge 172:65be27845400 802 /*!
AnnaBridge 172:65be27845400 803 * @brief LPUART callback function type
AnnaBridge 172:65be27845400 804 *
AnnaBridge 172:65be27845400 805 * The panic callback function is defined by system if system need to be informed of XCVR fatal errors.
AnnaBridge 172:65be27845400 806 * refer to #XCVR_RegisterPanicCb
AnnaBridge 172:65be27845400 807 */
AnnaBridge 172:65be27845400 808 typedef void (*panic_fptr)(uint32_t panic_id, uint32_t location, uint32_t extra1, uint32_t extra2);
AnnaBridge 172:65be27845400 809
AnnaBridge 172:65be27845400 810 /* Make available const structures from config files */
AnnaBridge 172:65be27845400 811 extern const xcvr_common_config_t xcvr_common_config;
AnnaBridge 172:65be27845400 812 extern const xcvr_mode_config_t zgbe_mode_config;
AnnaBridge 172:65be27845400 813 extern const xcvr_mode_config_t ble_mode_config;
AnnaBridge 172:65be27845400 814 extern const xcvr_mode_config_t ant_mode_config;
AnnaBridge 172:65be27845400 815 extern const xcvr_mode_config_t gfsk_bt_0p5_h_0p5_mode_config;
AnnaBridge 172:65be27845400 816 extern const xcvr_mode_config_t gfsk_bt_0p5_h_0p7_mode_config;
AnnaBridge 172:65be27845400 817 extern const xcvr_mode_config_t gfsk_bt_0p5_h_0p32_mode_config;
AnnaBridge 172:65be27845400 818 extern const xcvr_mode_config_t gfsk_bt_0p5_h_1p0_mode_config;
AnnaBridge 172:65be27845400 819 extern const xcvr_mode_config_t gfsk_bt_0p3_h_0p5_mode_config;
AnnaBridge 172:65be27845400 820 extern const xcvr_mode_config_t gfsk_bt_0p7_h_0p5_mode_config;
AnnaBridge 172:65be27845400 821 extern const xcvr_mode_config_t msk_mode_config;
AnnaBridge 172:65be27845400 822
AnnaBridge 172:65be27845400 823 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 824 extern const xcvr_datarate_config_t xcvr_2mbps_config;
AnnaBridge 172:65be27845400 825 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 826 extern const xcvr_datarate_config_t xcvr_1mbps_config;
AnnaBridge 172:65be27845400 827 extern const xcvr_datarate_config_t xcvr_500kbps_config;
AnnaBridge 172:65be27845400 828 extern const xcvr_datarate_config_t xcvr_250kbps_config;
AnnaBridge 172:65be27845400 829 extern const xcvr_datarate_config_t xcvr_802_15_4_500kbps_config; /* Custom datarate settings for 802.15.4 since it is 2MChips/sec */
AnnaBridge 172:65be27845400 830
AnnaBridge 172:65be27845400 831 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 832 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p5_2mbps_config;
AnnaBridge 172:65be27845400 833 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p32_2mbps_config;
AnnaBridge 172:65be27845400 834 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p3_h_0p5_2mbps_config;
AnnaBridge 172:65be27845400 835 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p7_h_0p5_2mbps_config;
AnnaBridge 172:65be27845400 836 extern const xcvr_mode_datarate_config_t xcvr_MSK_2mbps_config;
AnnaBridge 172:65be27845400 837 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 838 extern const xcvr_mode_datarate_config_t xcvr_BLE_1mbps_config;
AnnaBridge 172:65be27845400 839 extern const xcvr_mode_datarate_config_t xcvr_ZIGBEE_500kbps_config;
AnnaBridge 172:65be27845400 840 extern const xcvr_mode_datarate_config_t xcvr_ANT_1mbps_config;
AnnaBridge 172:65be27845400 841 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p5_1mbps_config;
AnnaBridge 172:65be27845400 842 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p5_500kbps_config;
AnnaBridge 172:65be27845400 843 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p5_250kbps_config;
AnnaBridge 172:65be27845400 844 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p32_1mbps_config;
AnnaBridge 172:65be27845400 845 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p32_500kbps_config;
AnnaBridge 172:65be27845400 846 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p32_250kbps_config;
AnnaBridge 172:65be27845400 847 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p7_1mbps_config;
AnnaBridge 172:65be27845400 848 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p7_500kbps_config;
AnnaBridge 172:65be27845400 849 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_0p7_250kbps_config;
AnnaBridge 172:65be27845400 850 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_1p0_1mbps_config;
AnnaBridge 172:65be27845400 851 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_1p0_500kbps_config;
AnnaBridge 172:65be27845400 852 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p5_h_1p0_250kbps_config;
AnnaBridge 172:65be27845400 853 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p3_h_0p5_1mbps_config;
AnnaBridge 172:65be27845400 854 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p3_h_0p5_500kbps_config;
AnnaBridge 172:65be27845400 855 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p3_h_0p5_250kbps_config;
AnnaBridge 172:65be27845400 856 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p7_h_0p5_1mbps_config;
AnnaBridge 172:65be27845400 857 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p7_h_0p5_500kbps_config;
AnnaBridge 172:65be27845400 858 extern const xcvr_mode_datarate_config_t xcvr_GFSK_BT_0p7_h_0p5_250kbps_config;
AnnaBridge 172:65be27845400 859 extern const xcvr_mode_datarate_config_t xcvr_MSK_1mbps_config;
AnnaBridge 172:65be27845400 860 extern const xcvr_mode_datarate_config_t xcvr_MSK_500kbps_config;
AnnaBridge 172:65be27845400 861 extern const xcvr_mode_datarate_config_t xcvr_MSK_250kbps_config;
AnnaBridge 172:65be27845400 862
AnnaBridge 172:65be27845400 863 /*******************************************************************************
AnnaBridge 172:65be27845400 864 * API
AnnaBridge 172:65be27845400 865 ******************************************************************************/
AnnaBridge 172:65be27845400 866
AnnaBridge 172:65be27845400 867 #if defined(__cplusplus)
AnnaBridge 172:65be27845400 868 extern "C" {
AnnaBridge 172:65be27845400 869 #endif
AnnaBridge 172:65be27845400 870
AnnaBridge 172:65be27845400 871 /*!
AnnaBridge 172:65be27845400 872 * @name XCVR functional Operation
AnnaBridge 172:65be27845400 873 * @{
AnnaBridge 172:65be27845400 874 */
AnnaBridge 172:65be27845400 875
AnnaBridge 172:65be27845400 876 /*!
AnnaBridge 172:65be27845400 877 * @brief Initializes an XCVR instance.
AnnaBridge 172:65be27845400 878 *
AnnaBridge 172:65be27845400 879 * This function initializes the XCVR module according to the radio_mode and data_rate settings. This the only function call required to
AnnaBridge 172:65be27845400 880 * start up the XCVR in most situations.
AnnaBridge 172:65be27845400 881 *
AnnaBridge 172:65be27845400 882 * @param radio_mode The radio mode for which the XCVR should be configured.
AnnaBridge 172:65be27845400 883 * @param data_rate The data rate for which the XCVR should be configured. Only matters when GFSK/MSK radio_mode is selected.
AnnaBridge 172:65be27845400 884 * @note This function encompasses the ::XCVRGetDefafultConfig() and ::XCVR_Configure() functions.
AnnaBridge 172:65be27845400 885 */
AnnaBridge 172:65be27845400 886 xcvrStatus_t XCVR_Init(radio_mode_t radio_mode, data_rate_t data_rate);
AnnaBridge 172:65be27845400 887
AnnaBridge 172:65be27845400 888 /*!
AnnaBridge 172:65be27845400 889 * @brief Deinitializes an XCVR instance.
AnnaBridge 172:65be27845400 890 *
AnnaBridge 172:65be27845400 891 * This function gate the XCVR module clock and set all register value to reset value.
AnnaBridge 172:65be27845400 892 *
AnnaBridge 172:65be27845400 893 */
AnnaBridge 172:65be27845400 894 void XCVR_Deinit(void);
AnnaBridge 172:65be27845400 895
AnnaBridge 172:65be27845400 896 /*!
AnnaBridge 172:65be27845400 897 * @brief Initializes XCVR configure structure.
AnnaBridge 172:65be27845400 898 *
AnnaBridge 172:65be27845400 899 * This function updates pointers to the XCVR configure structures with default values.
AnnaBridge 172:65be27845400 900 * The configurations are divided into a common structure, a set of radio mode specific
AnnaBridge 172:65be27845400 901 * structures (one per radio_mode), a set of mode&datarate specific structures (for each mode at
AnnaBridge 172:65be27845400 902 * each datarate), and a set of data rate specific structures.
AnnaBridge 172:65be27845400 903 * The pointers provided by this routine point to const structures which can be
AnnaBridge 172:65be27845400 904 * copied to variable structures if changes to settings are required.
AnnaBridge 172:65be27845400 905 *
AnnaBridge 172:65be27845400 906 * @param radio_mode [in] The radio mode for which the configuration structures are requested.
AnnaBridge 172:65be27845400 907 * @param data_rate [in] The data rate for which the configuration structures are requested.
AnnaBridge 172:65be27845400 908 * @param com_config [in,out] Pointer to a pointer to the common configuration settings structure.
AnnaBridge 172:65be27845400 909 * @param mode_config [in,out] Pointer to a pointer to the mode specific configuration settings structure.
AnnaBridge 172:65be27845400 910 * @param mode_datarate_config [in,out] Pointer to a pointer to the modeXdata rate specific configuration settings structure.
AnnaBridge 172:65be27845400 911 * @param datarate_config [in,out] Pointer to a pointer to the data rate specific configuration settings structure.
AnnaBridge 172:65be27845400 912 * @return 0 success, others failure
AnnaBridge 172:65be27845400 913 * @see XCVR_Configure
AnnaBridge 172:65be27845400 914 */
AnnaBridge 172:65be27845400 915 xcvrStatus_t XCVR_GetDefaultConfig(radio_mode_t radio_mode,
AnnaBridge 172:65be27845400 916 data_rate_t data_rate,
AnnaBridge 172:65be27845400 917 const xcvr_common_config_t ** com_config,
AnnaBridge 172:65be27845400 918 const xcvr_mode_config_t ** mode_config,
AnnaBridge 172:65be27845400 919 const xcvr_mode_datarate_config_t ** mode_datarate_config,
AnnaBridge 172:65be27845400 920 const xcvr_datarate_config_t ** datarate_config);
AnnaBridge 172:65be27845400 921
AnnaBridge 172:65be27845400 922 /*!
AnnaBridge 172:65be27845400 923 * @brief Initializes an XCVR instance.
AnnaBridge 172:65be27845400 924 *
AnnaBridge 172:65be27845400 925 * This function initializes the XCVR module with user-defined settings.
AnnaBridge 172:65be27845400 926 *
AnnaBridge 172:65be27845400 927 * @param com_config Pointer to the common configuration settings structure.
AnnaBridge 172:65be27845400 928 * @param mode_config Pointer to the mode specific configuration settings structure.
AnnaBridge 172:65be27845400 929 * @param mode_datarate_config Pointer to a pointer to the modeXdata rate specific configuration settings structure.
AnnaBridge 172:65be27845400 930 * @param datarate_config Pointer to a pointer to the data rate specific configuration settings structure.
AnnaBridge 172:65be27845400 931 * @param tempDegC temperature of the die in degrees C.
AnnaBridge 172:65be27845400 932 * @param ext_clk indicates the external clock setting, 32MHz or 26MHz.
AnnaBridge 172:65be27845400 933 * @param first_init indicates whether the call is to initialize (== 1) or the call is to perform a mode change (== 0)
AnnaBridge 172:65be27845400 934 * @return 0 succeed, others failed
AnnaBridge 172:65be27845400 935 */
AnnaBridge 172:65be27845400 936 xcvrStatus_t XCVR_Configure(const xcvr_common_config_t *com_config,
AnnaBridge 172:65be27845400 937 const xcvr_mode_config_t *mode_config,
AnnaBridge 172:65be27845400 938 const xcvr_mode_datarate_config_t *mode_datarate_config,
AnnaBridge 172:65be27845400 939 const xcvr_datarate_config_t *datarate_config,
AnnaBridge 172:65be27845400 940 int16_t tempDegC,
AnnaBridge 172:65be27845400 941 XCVR_INIT_MODE_CHG_T first_init);
AnnaBridge 172:65be27845400 942
AnnaBridge 172:65be27845400 943 /*!
AnnaBridge 172:65be27845400 944 * @brief Set XCVR register to reset value.
AnnaBridge 172:65be27845400 945 *
AnnaBridge 172:65be27845400 946 * This function set XCVR register to the reset value.
AnnaBridge 172:65be27845400 947 *
AnnaBridge 172:65be27845400 948 */
AnnaBridge 172:65be27845400 949 void XCVR_Reset(void);
AnnaBridge 172:65be27845400 950
AnnaBridge 172:65be27845400 951 /*!
AnnaBridge 172:65be27845400 952 * @brief Change the operating mode of the radio.
AnnaBridge 172:65be27845400 953 *
AnnaBridge 172:65be27845400 954 * This function changes the XCVR to a new radio operating mode.
AnnaBridge 172:65be27845400 955 *
AnnaBridge 172:65be27845400 956 * @param new_radio_mode The radio mode for which the XCVR should be configured.
AnnaBridge 172:65be27845400 957 * @param new_data_rate The data rate for which the XCVR should be configured. Only matters when GFSK/MSK radio_mode is selected.
AnnaBridge 172:65be27845400 958 * @return status of the mode change.
AnnaBridge 172:65be27845400 959 */
AnnaBridge 172:65be27845400 960 xcvrStatus_t XCVR_ChangeMode(radio_mode_t new_radio_mode, data_rate_t new_data_rate);
AnnaBridge 172:65be27845400 961
AnnaBridge 172:65be27845400 962 /*!
AnnaBridge 172:65be27845400 963 * @brief Enable Narrowband RSSI measurement.
AnnaBridge 172:65be27845400 964 *
AnnaBridge 172:65be27845400 965 * This function enables the narrowband RSSI measurement
AnnaBridge 172:65be27845400 966 *
AnnaBridge 172:65be27845400 967 * @param IIRnbEnable true causes the NB RSSI to be enabled, false disabled.
AnnaBridge 172:65be27845400 968 */
AnnaBridge 172:65be27845400 969 void XCVR_EnaNBRSSIMeas(uint8_t IIRnbEnable);
AnnaBridge 172:65be27845400 970
AnnaBridge 172:65be27845400 971 /*!
AnnaBridge 172:65be27845400 972 * @brief Set an arbitrary frequency for RX and TX for the radio.
AnnaBridge 172:65be27845400 973 *
AnnaBridge 172:65be27845400 974 * This function sets the radio frequency used for RX and RX..
AnnaBridge 172:65be27845400 975 *
AnnaBridge 172:65be27845400 976 * @param freq target frequency setting in Hz.
AnnaBridge 172:65be27845400 977 * @param refOsc reference oscillator setting in Hz.
AnnaBridge 172:65be27845400 978 * @return status of the frequency change.
AnnaBridge 172:65be27845400 979 * @details
AnnaBridge 172:65be27845400 980 */
AnnaBridge 172:65be27845400 981 xcvrStatus_t XCVR_OverrideFrequency(uint32_t freq, uint32_t refOsc);
AnnaBridge 172:65be27845400 982
AnnaBridge 172:65be27845400 983 /*!
AnnaBridge 172:65be27845400 984 * @brief Register a callback from upper layers.
AnnaBridge 172:65be27845400 985 *
AnnaBridge 172:65be27845400 986 * This function registers a callback from the upper layers for the radio to call in case of fatal errors.
AnnaBridge 172:65be27845400 987 *
AnnaBridge 172:65be27845400 988 * @param fptr The function pointer to a panic callback.
AnnaBridge 172:65be27845400 989 */
AnnaBridge 172:65be27845400 990 void XCVR_RegisterPanicCb(panic_fptr fptr); /* allow upper layers to provide PANIC callback */
AnnaBridge 172:65be27845400 991
AnnaBridge 172:65be27845400 992 /*!
AnnaBridge 172:65be27845400 993 * @brief Read the health status of the XCVR to detect errors.
AnnaBridge 172:65be27845400 994 *
AnnaBridge 172:65be27845400 995 * This function enables the upper layers to request the current radio health.
AnnaBridge 172:65be27845400 996 *
AnnaBridge 172:65be27845400 997 * @return The health status of the radio..
AnnaBridge 172:65be27845400 998 */
AnnaBridge 172:65be27845400 999 healthStatus_t XCVR_HealthCheck(void); /* allow upper layers to poll the radio health */
AnnaBridge 172:65be27845400 1000
AnnaBridge 172:65be27845400 1001 /*!
AnnaBridge 172:65be27845400 1002 * @brief Control FAD and LPPS features.
AnnaBridge 172:65be27845400 1003 *
AnnaBridge 172:65be27845400 1004 * This function controls the Fast Antenna Diversity (FAD) and Low Power Preamble Search.
AnnaBridge 172:65be27845400 1005 *
AnnaBridge 172:65be27845400 1006 * @param fptr control the FAD and LPPS settings.
AnnaBridge 172:65be27845400 1007 *
AnnaBridge 172:65be27845400 1008 */
AnnaBridge 172:65be27845400 1009 void XCVR_FadLppsControl(FAD_LPPS_CTRL_T control);
AnnaBridge 172:65be27845400 1010
AnnaBridge 172:65be27845400 1011 /*!
AnnaBridge 172:65be27845400 1012 * @brief Change the mapping of the radio IRQs.
AnnaBridge 172:65be27845400 1013 *
AnnaBridge 172:65be27845400 1014 * This function changes the mapping of the radio LL IRQ signals to the 2.4G Radio INT0 and 2.4G Radio INT1 lines.
AnnaBridge 172:65be27845400 1015 *
AnnaBridge 172:65be27845400 1016 * @param irq0_mapping the LL which should be mapped to the INT0 line.
AnnaBridge 172:65be27845400 1017 * @param irq1_mapping the LL which should be mapped to the INT1 line.
AnnaBridge 172:65be27845400 1018 * @return status of the mapping request.
AnnaBridge 172:65be27845400 1019 * @ note The radio_mode_t parameters map to ::link_layer_t selections for the LL which is connected to the INT line.
AnnaBridge 172:65be27845400 1020 * @warning
AnnaBridge 172:65be27845400 1021 * The same LL must NOT be mapped to both INT lines.
AnnaBridge 172:65be27845400 1022 */
AnnaBridge 172:65be27845400 1023 xcvrStatus_t XCVR_SetIRQMapping(radio_mode_t irq0_mapping, radio_mode_t irq1_mapping);
AnnaBridge 172:65be27845400 1024
AnnaBridge 172:65be27845400 1025 #if RADIO_IS_GEN_3P0
AnnaBridge 172:65be27845400 1026 /*!
AnnaBridge 172:65be27845400 1027 * @brief Sets the network address used by the PHY during BLE Bit Streaming Mode.
AnnaBridge 172:65be27845400 1028 *
AnnaBridge 172:65be27845400 1029 * This function programs the register in the PHY which contains the network address used during BSM.
AnnaBridge 172:65be27845400 1030 *
AnnaBridge 172:65be27845400 1031 * @param bsm_ntw_address the address to be used during BSM.
AnnaBridge 172:65be27845400 1032 * @ note This routine does NOT enable BSM.
AnnaBridge 172:65be27845400 1033 */
AnnaBridge 172:65be27845400 1034 void XCVR_SetBSM_NTW_Address(uint32_t bsm_ntw_address);
AnnaBridge 172:65be27845400 1035
AnnaBridge 172:65be27845400 1036 /*!
AnnaBridge 172:65be27845400 1037 * @brief Reads the currently programmed network address used by the PHY during BLE Bit Streaming Mode.
AnnaBridge 172:65be27845400 1038 *
AnnaBridge 172:65be27845400 1039 * This function reads the register in the PHY which contains the network address used during BSM.
AnnaBridge 172:65be27845400 1040 *
AnnaBridge 172:65be27845400 1041 * @return bsm_ntw_address the address to be used during BSM.
AnnaBridge 172:65be27845400 1042 * @ note This routine does NOT enable BSM.
AnnaBridge 172:65be27845400 1043 */
AnnaBridge 172:65be27845400 1044 uint32_t XCVR_GetBSM_NTW_Address(void);
AnnaBridge 172:65be27845400 1045 #endif /* RADIO_IS_GEN_3P0 */
AnnaBridge 172:65be27845400 1046
AnnaBridge 172:65be27845400 1047 /*!
AnnaBridge 172:65be27845400 1048 * @brief Get the mapping of the one of the radio IRQs.
AnnaBridge 172:65be27845400 1049 *
AnnaBridge 172:65be27845400 1050 * This function reads the setting for the mapping of one of the radio LL IRQ signals to the 2.4G Radio INT0 and 2.4G Radio INT1 lines.
AnnaBridge 172:65be27845400 1051 *
AnnaBridge 172:65be27845400 1052 * @param int_num the number, 0 or 1, of the INT line to fetched.
AnnaBridge 172:65be27845400 1053 * @return the mapping setting of the specified line.
AnnaBridge 172:65be27845400 1054 * @note Any value passed into this routine other than 0 will be treated as a 1.
AnnaBridge 172:65be27845400 1055 */
AnnaBridge 172:65be27845400 1056 link_layer_t XCVR_GetIRQMapping(uint8_t int_num);
AnnaBridge 172:65be27845400 1057
AnnaBridge 172:65be27845400 1058 /*!
AnnaBridge 172:65be27845400 1059 * @brief Get the current configuration of the XCVR.
AnnaBridge 172:65be27845400 1060 *
AnnaBridge 172:65be27845400 1061 * This function fetches the current configuration (radio mode and radio data rate) of the XCVR to allow LL to properly config data rates, etc
AnnaBridge 172:65be27845400 1062 *
AnnaBridge 172:65be27845400 1063 * @param curr_config pointer to a structure to be updated with the current mode and data rate.
AnnaBridge 172:65be27845400 1064 * @return the status of the request, success or invalid parameter (null pointer).
AnnaBridge 172:65be27845400 1065 * @note This API will return meaningless results if called before the radio is initialized...
AnnaBridge 172:65be27845400 1066 */
AnnaBridge 172:65be27845400 1067 xcvrStatus_t XCVR_GetCurrentConfig(xcvr_currConfig_t * curr_config);
AnnaBridge 172:65be27845400 1068
AnnaBridge 172:65be27845400 1069 /*******************************************************************************
AnnaBridge 172:65be27845400 1070 * Customer level trim functions
AnnaBridge 172:65be27845400 1071 ******************************************************************************/
AnnaBridge 172:65be27845400 1072 /*!
AnnaBridge 172:65be27845400 1073 * @brief Controls setting the XTAL trim value..
AnnaBridge 172:65be27845400 1074 *
AnnaBridge 172:65be27845400 1075 * This function enables the upper layers set a crystal trim compensation facor
AnnaBridge 172:65be27845400 1076 *
AnnaBridge 172:65be27845400 1077 * @param xtalTrim the trim value to apply to the XTAL trimming register. Only the 7 LSB are valid, setting the 8th bit returns an error.
AnnaBridge 172:65be27845400 1078 * @return The health status of the radio..
AnnaBridge 172:65be27845400 1079 */
AnnaBridge 172:65be27845400 1080 xcvrStatus_t XCVR_SetXtalTrim(uint8_t xtalTrim);
AnnaBridge 172:65be27845400 1081
AnnaBridge 172:65be27845400 1082 /*!
AnnaBridge 172:65be27845400 1083 * @brief Controls getting the XTAL trim value..
AnnaBridge 172:65be27845400 1084 *
AnnaBridge 172:65be27845400 1085 * This function enables the upper layers to read the current XTAL compensation factors.
AnnaBridge 172:65be27845400 1086 * The returned value is in the range 0..127 (7 bits).
AnnaBridge 172:65be27845400 1087 *
AnnaBridge 172:65be27845400 1088 * @return The XTAL trim compensation factors..
AnnaBridge 172:65be27845400 1089 */
AnnaBridge 172:65be27845400 1090 uint8_t XCVR_GetXtalTrim(void);
AnnaBridge 172:65be27845400 1091
AnnaBridge 172:65be27845400 1092 /*!
AnnaBridge 172:65be27845400 1093 * @brief Controls setting the RSSI adjustment..
AnnaBridge 172:65be27845400 1094 *
AnnaBridge 172:65be27845400 1095 * This function enables the upper layers to set an RSSI adjustment value.
AnnaBridge 172:65be27845400 1096 *
AnnaBridge 172:65be27845400 1097 * @param adj the adjustment value to apply to the RSSI adjustment register. The value must be a signed 8-bit value, in 1/4 dBm step.
AnnaBridge 172:65be27845400 1098 * @return The health status of the radio..
AnnaBridge 172:65be27845400 1099 */
AnnaBridge 172:65be27845400 1100 xcvrStatus_t XCVR_SetRssiAdjustment(int8_t adj);
AnnaBridge 172:65be27845400 1101
AnnaBridge 172:65be27845400 1102 /*!
AnnaBridge 172:65be27845400 1103 * @brief Controls getting the RSSI adjustment..
AnnaBridge 172:65be27845400 1104 *
AnnaBridge 172:65be27845400 1105 * This function enables the upper layers to read the current XCVR RSSI adjustment value.
AnnaBridge 172:65be27845400 1106 * The returned value is a signed 8-bit value, in 1/4 dBm step.
AnnaBridge 172:65be27845400 1107 *
AnnaBridge 172:65be27845400 1108 * @return The RSSI adjustment value..
AnnaBridge 172:65be27845400 1109 */
AnnaBridge 172:65be27845400 1110 int8_t XCVR_GetRssiAdjustment(void);
AnnaBridge 172:65be27845400 1111
AnnaBridge 172:65be27845400 1112 /*!
AnnaBridge 172:65be27845400 1113 * @brief Controls setting the PLL to a particular channel.
AnnaBridge 172:65be27845400 1114 *
AnnaBridge 172:65be27845400 1115 * This function enables setting the radio channel for TX and RX.
AnnaBridge 172:65be27845400 1116 *
AnnaBridge 172:65be27845400 1117 * @param channel the channel number to set
AnnaBridge 172:65be27845400 1118 * @param useMappedChannel when true, channel is assumed to be from the protocol specific channel map. when false, channel is assumed to be from the 128 general channel list..
AnnaBridge 172:65be27845400 1119 * @return The status of the channel over-ride.
AnnaBridge 172:65be27845400 1120 */
AnnaBridge 172:65be27845400 1121 xcvrStatus_t XCVR_OverrideChannel(uint8_t channel, uint8_t useMappedChannel);
AnnaBridge 172:65be27845400 1122
AnnaBridge 172:65be27845400 1123 /*!
AnnaBridge 172:65be27845400 1124 * @brief Reads the current frequency for RX and TX for the radio.
AnnaBridge 172:65be27845400 1125 *
AnnaBridge 172:65be27845400 1126 * This function reads the radio frequency used for RX and RX..
AnnaBridge 172:65be27845400 1127 *
AnnaBridge 172:65be27845400 1128 * @return Current radio frequency setting.
AnnaBridge 172:65be27845400 1129 */
AnnaBridge 172:65be27845400 1130 uint32_t XCVR_GetFreq(void);
AnnaBridge 172:65be27845400 1131
AnnaBridge 172:65be27845400 1132 /*!
AnnaBridge 172:65be27845400 1133 * @brief Force receiver warmup.
AnnaBridge 172:65be27845400 1134 *
AnnaBridge 172:65be27845400 1135 * This function forces the initiation of a receiver warmup sequence.
AnnaBridge 172:65be27845400 1136 *
AnnaBridge 172:65be27845400 1137 */
AnnaBridge 172:65be27845400 1138 void XCVR_ForceRxWu(void);
AnnaBridge 172:65be27845400 1139
AnnaBridge 172:65be27845400 1140 /*!
AnnaBridge 172:65be27845400 1141 * @brief Force receiver warmdown.
AnnaBridge 172:65be27845400 1142 *
AnnaBridge 172:65be27845400 1143 * This function forces the initiation of a receiver warmdown sequence.
AnnaBridge 172:65be27845400 1144 *
AnnaBridge 172:65be27845400 1145 */
AnnaBridge 172:65be27845400 1146 void XCVR_ForceRxWd(void);
AnnaBridge 172:65be27845400 1147
AnnaBridge 172:65be27845400 1148 /*!
AnnaBridge 172:65be27845400 1149 * @brief Force transmitter warmup.
AnnaBridge 172:65be27845400 1150 *
AnnaBridge 172:65be27845400 1151 * This function forces the initiation of a transmit warmup sequence.
AnnaBridge 172:65be27845400 1152 *
AnnaBridge 172:65be27845400 1153 */
AnnaBridge 172:65be27845400 1154 void XCVR_ForceTxWu(void);
AnnaBridge 172:65be27845400 1155
AnnaBridge 172:65be27845400 1156 /*!
AnnaBridge 172:65be27845400 1157 * @brief Force transmitter warmdown.
AnnaBridge 172:65be27845400 1158 *
AnnaBridge 172:65be27845400 1159 * This function forces the initiation of a transmit warmdown sequence.
AnnaBridge 172:65be27845400 1160 *
AnnaBridge 172:65be27845400 1161 */
AnnaBridge 172:65be27845400 1162 void XCVR_ForceTxWd(void);
AnnaBridge 172:65be27845400 1163
AnnaBridge 172:65be27845400 1164 /*!
AnnaBridge 172:65be27845400 1165 * @brief Starts transmit with a TX pattern register data sequence.
AnnaBridge 172:65be27845400 1166 *
AnnaBridge 172:65be27845400 1167 * This function starts transmitting using the DFT pattern register mode.
AnnaBridge 172:65be27845400 1168 *
AnnaBridge 172:65be27845400 1169 * @param channel_num - the protocol specific channel to transmit on. Valid values are defined in the CHANNEL_NUM register documentation.
AnnaBridge 172:65be27845400 1170 * @param radio_mode The radio mode for which the XCVR should be configured.
AnnaBridge 172:65be27845400 1171 * @param data_rate The data rate for which the XCVR should be configured. Only matters when GFSK/MSK radio_mode is selected.
AnnaBridge 172:65be27845400 1172 * @param tx_pattern - the data pattern to transmit on.
AnnaBridge 172:65be27845400 1173 * @return The status of the pattern reg transmit.
AnnaBridge 172:65be27845400 1174 * @note The XCVR_DftTxOff() function must be called to turn off TX and revert all settings. This routine calls XCVR_ChangeMode() with the desired radio mode
AnnaBridge 172:65be27845400 1175 * and data rate.
AnnaBridge 172:65be27845400 1176 */
AnnaBridge 172:65be27845400 1177 xcvrStatus_t XCVR_DftTxPatternReg(uint16_t channel_num, radio_mode_t radio_mode, data_rate_t data_rate, uint32_t tx_pattern);
AnnaBridge 172:65be27845400 1178
AnnaBridge 172:65be27845400 1179 /*!
AnnaBridge 172:65be27845400 1180 * @brief Starts transmit with a TX LFSR register data sequence.
AnnaBridge 172:65be27845400 1181 *
AnnaBridge 172:65be27845400 1182 * This function starts transmitting using the DFT LFSR register mode.
AnnaBridge 172:65be27845400 1183 *
AnnaBridge 172:65be27845400 1184 * @param channel_num - the protocol specific channel to transmit on. Valid values are defined in the CHANNEL_NUM register documentation.
AnnaBridge 172:65be27845400 1185 * @param radio_mode The radio mode for which the XCVR should be configured.
AnnaBridge 172:65be27845400 1186 * @param data_rate The data rate for which the XCVR should be configured. Only matters when GFSK/MSK radio_mode is selected.
AnnaBridge 172:65be27845400 1187 * @param lfsr_length - the length of the LFSR sequence to use.
AnnaBridge 172:65be27845400 1188 * @return The status of the LFSR reg transmit.
AnnaBridge 172:65be27845400 1189 * @note The XCVR_DftTxOff() function must be called to turn off TX and revert all settings. This routine calls XCVR_ChangeMode() with the desired radio mode
AnnaBridge 172:65be27845400 1190 * and data rate.
AnnaBridge 172:65be27845400 1191 */
AnnaBridge 172:65be27845400 1192 xcvrStatus_t XCVR_DftTxLfsrReg(uint16_t channel_num, radio_mode_t radio_mode, data_rate_t data_rate, uint8_t lfsr_length);
AnnaBridge 172:65be27845400 1193
AnnaBridge 172:65be27845400 1194 /*!
AnnaBridge 172:65be27845400 1195 * @brief Controls clearing all TX DFT settings.
AnnaBridge 172:65be27845400 1196 *
AnnaBridge 172:65be27845400 1197 * This function reverts all TX DFT settings from the test modes to normal operating mode.
AnnaBridge 172:65be27845400 1198 *
AnnaBridge 172:65be27845400 1199 */
AnnaBridge 172:65be27845400 1200 void XCVR_DftTxOff(void);
AnnaBridge 172:65be27845400 1201
AnnaBridge 172:65be27845400 1202 /*!
AnnaBridge 172:65be27845400 1203 * @brief Controls setting the PA power level.
AnnaBridge 172:65be27845400 1204 *
AnnaBridge 172:65be27845400 1205 * This function enables setting the PA power level to a specific setting, overriding any link layer settings.
AnnaBridge 172:65be27845400 1206 *
AnnaBridge 172:65be27845400 1207 * @param pa_power - the power level to set. Valid values are 0, 1, and even values from 2 to 0x3E, inclusive.
AnnaBridge 172:65be27845400 1208 * @return The status of the PA power over-ride.
AnnaBridge 172:65be27845400 1209 */
AnnaBridge 172:65be27845400 1210 xcvrStatus_t XCVR_ForcePAPower(uint8_t pa_power);
AnnaBridge 172:65be27845400 1211
AnnaBridge 172:65be27845400 1212 /*!
AnnaBridge 172:65be27845400 1213 * @brief Starts CW TX.
AnnaBridge 172:65be27845400 1214 *
AnnaBridge 172:65be27845400 1215 * This function starts transmitting CW (no modulation).
AnnaBridge 172:65be27845400 1216 *
AnnaBridge 172:65be27845400 1217 * @param rf_channel_freq - the RF channel to transmit on. Valid values are integer values from 2360 to 2487MHz, inclusive.
AnnaBridge 172:65be27845400 1218 * @param protocol - the protocol setting to use, valid settings are 6 (GFSK) and 7 (FSK).
AnnaBridge 172:65be27845400 1219 * @return The status of the CW transmit.
AnnaBridge 172:65be27845400 1220 */
AnnaBridge 172:65be27845400 1221 xcvrStatus_t XCVR_DftTxCW(uint16_t rf_channel_freq, uint8_t protocol);
AnnaBridge 172:65be27845400 1222
AnnaBridge 172:65be27845400 1223 xcvrStatus_t XCVR_CoexistenceInit(void);
AnnaBridge 172:65be27845400 1224 xcvrStatus_t XCVR_CoexistenceSetPriority(XCVR_COEX_PRIORITY_T rxPriority, XCVR_COEX_PRIORITY_T txPriority);
AnnaBridge 172:65be27845400 1225 xcvrStatus_t XCVR_CoexistenceSaveRestoreTimings(uint8_t saveTimings);
AnnaBridge 172:65be27845400 1226
AnnaBridge 172:65be27845400 1227 /* @} */
AnnaBridge 172:65be27845400 1228
AnnaBridge 172:65be27845400 1229 #if defined(__cplusplus)
AnnaBridge 172:65be27845400 1230 }
AnnaBridge 172:65be27845400 1231 #endif
AnnaBridge 172:65be27845400 1232
AnnaBridge 172:65be27845400 1233 /*! @}*/
AnnaBridge 172:65be27845400 1234
AnnaBridge 172:65be27845400 1235 #endif /* _FSL_XCVR_H_ */
AnnaBridge 172:65be27845400 1236