544 lines
17 KiB
C
544 lines
17 KiB
C
/****************************************************************************
|
|
|
|
Copyright(c) 2019 by Aerospace C.Power (Chongqing) Microelectronics. ALL RIGHTS RESERVED.
|
|
|
|
This Information is proprietary to Aerospace C.Power (Chongqing) Microelectronics and MAY NOT
|
|
be copied by any method or incorporated into another program without
|
|
the express written consent of Aerospace C.Power. This Information or any portion
|
|
thereof remains the property of Aerospace C.Power. The Information contained herein
|
|
is believed to be accurate and Aerospace C.Power assumes no responsibility or
|
|
liability for its use in any way and conveys no license or title under
|
|
any patent or copyright and makes no representation or warranty that this
|
|
Information is free from patent or copyright infringement.
|
|
|
|
****************************************************************************/
|
|
#ifndef __BB_RF_CFG_H__
|
|
#define __BB_RF_CFG_H__
|
|
#include "os_types.h"
|
|
#include "rf_hw_tonemap.h"
|
|
#include "plc_const.h"
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* default channel frequecy hz */
|
|
#define RF_CHANNEL_DEF_FREQ_HZ 490000000
|
|
|
|
/* rf rx default subtract frequecy 450k for option2 bpf mode */
|
|
#define RF_OPT2_RX_BPF_CONSTANT_FREQ_HZ 450000
|
|
/* rf rx default subtract frequecy 180k or option3 bpf mode */
|
|
#define RF_OPT3_RX_BPF_CONSTANT_FREQ_HZ 180000
|
|
/* rf rx default subtract frequecy 300k or option2 lpf mode */
|
|
#define RF_OPT2_RX_LPF_CONSTANT_FREQ_HZ 300000
|
|
/* rf rx default subtract frequecy 150k or option3 lpf mode */
|
|
#define RF_OPT3_RX_LPF_CONSTANT_FREQ_HZ 150000
|
|
|
|
/* rf rate */
|
|
#define RF_CODING_RATE_1_2 0
|
|
#define RF_CODING_RATE_4_5 1
|
|
|
|
/* interweave step */
|
|
#define RF_INTERWEAVE_STEP_4 4
|
|
#define RF_INTERWEAVE_STEP_5 5
|
|
#define RF_INTERWEAVE_STEP_12 12
|
|
#define RF_INTERWEAVE_STEP_13 13
|
|
#define RF_INTERWEAVE_STEP_16 16
|
|
#define RF_INTERWEAVE_STEP_17 17
|
|
#define RF_INTERWEAVE_STEP_18 18
|
|
|
|
/* interweave offset rate 1/2 */
|
|
#define RF_INTERWEAVE_OFFSET_16 16
|
|
#define RF_INTERWEAVE_OFFSET_40 40
|
|
#define RF_INTERWEAVE_OFFSET_72 72
|
|
#define RF_INTERWEAVE_OFFSET_136 136
|
|
#define RF_INTERWEAVE_OFFSET_264 264
|
|
#define RF_INTERWEAVE_OFFSET_520 520
|
|
|
|
/* interweave offset rate 4/5 */
|
|
#define RF_INTERWEAVE_OFFSET_4 4
|
|
#define RF_INTERWEAVE_OFFSET_10 10
|
|
#define RF_INTERWEAVE_OFFSET_18 18
|
|
#define RF_INTERWEAVE_OFFSET_34 34
|
|
#define RF_INTERWEAVE_OFFSET_66 66
|
|
#define RF_INTERWEAVE_OFFSET_130 130
|
|
|
|
/* the max of option 0, 1, 2 */
|
|
#define PHY_OPTION_MAX 3
|
|
/* the max of mcs */
|
|
#define PHY_MCS_MAX 7
|
|
|
|
/* rf bb hw info */
|
|
typedef struct _bb_rf_hw_info {
|
|
/* option of bb, 1: option1; 2: option2; 3: option3 */
|
|
uint32_t option : 2,
|
|
/* block size, 0: PB16, 1: PB40, 2: PB72, 3: PB136, 4: PB264, 5: PB520 */
|
|
fec_blkz : 3,
|
|
/* mcs id 0 - 6 */
|
|
mcs_id : 5,
|
|
/* rate, 0:1/2 rate, 1:4/5 rate */
|
|
fec_rate : 2,
|
|
/* copy num, 1, 2, 4 */
|
|
fec_ncopy : 4,
|
|
/* modulation system, 1: BPSK, 2: QPSK, 4: 16QAM */
|
|
fec_modt : 4,
|
|
/* symbol num */
|
|
fec_nsymb : 12;
|
|
uint32_t codec_cfg;
|
|
uint32_t chan_intl;
|
|
uint32_t robo_intl0;
|
|
uint32_t robo_intl1;
|
|
uint32_t robo_intl2;
|
|
uint32_t modem_cfg;
|
|
|
|
} bb_rf_hw_info_t;
|
|
|
|
/*
|
|
* @brief - bb_rf_cfg_tx_phr_info() bb rf config tx phy header info.
|
|
* @param - [rf_phr] phy header info.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_cfg_tx_phr_info(bb_rf_hw_info_t *rf_phr);
|
|
|
|
/*
|
|
* @brief - bb_rf_cfg_rx_phr_info() bb rf config rx phy header info.
|
|
* @param - [rf_phr] phy header info.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_cfg_rx_phr_info(bb_rf_hw_info_t *rf_phr);
|
|
|
|
/*
|
|
* @brief - bb_rf_cfg_tx_pld_info() bb rf config tx payload info.
|
|
* @param - [rf_pld] payload info.
|
|
* @param - [pb_num] pb num.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_cfg_tx_pld_info(bb_rf_hw_info_t *rf_pld, uint32_t pb_num);
|
|
|
|
/*
|
|
* @brief - bb_rf_cfg_rx_pld_info() bb rf config rx payload info.
|
|
* @param - [rf_pld] payload info.
|
|
* @param - [pb_num] pb num.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_cfg_rx_pld_info(bb_rf_hw_info_t *rf_pld, uint32_t pb_num);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_tx_phr() bb rf set tx phy header.
|
|
* @param - [phr] phy header.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_set_tx_phr(uint32_t *phr);
|
|
|
|
/*
|
|
* @brief - bb_rf_get_tx_phr() bb rf get tx phy header.
|
|
* @param - [phr] phy header.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_get_tx_phr(uint32_t *phr);
|
|
|
|
/*
|
|
* @brief - bb_rf_get_rx_phr() bb rf get rx phy header.
|
|
* @param - [phr] phy header.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_get_rx_phr(uint32_t *phr);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_crc32_en() bb rf set crc32 enable.
|
|
* @param - [enable] enable.
|
|
* @return - void
|
|
*/
|
|
void bb_rf_set_crc32_en(uint32_t enable);
|
|
|
|
/*
|
|
* @brief - bb_rf_get_pld_crc32_err() get pld crc32.
|
|
* @param - [void] void.
|
|
* @return - pld crc32
|
|
*/
|
|
uint32_t bb_rf_get_pld_crc32_err();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_pld_crc24_err() get pld crc24.
|
|
* @param - [void] void.
|
|
* @return - pld crc24
|
|
*/
|
|
uint32_t bb_rf_get_pld_crc24_err();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_pld_crc_rdy() get pld crc ready.
|
|
* @param - [void] void.
|
|
* @return - uint32_t pld is ready or not.
|
|
*/
|
|
uint32_t bb_rf_get_pld_crc_rdy();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_phr_crc24_err() get phr crc24.
|
|
* @param - [void] void.
|
|
* @return - phr crc24
|
|
*/
|
|
uint32_t bb_rf_get_phr_crc24_err();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_phr_crc_rdy() get phr crc ready.
|
|
* @param - [void] void.
|
|
* @return - uint32_t phr is ready.
|
|
*/
|
|
uint32_t bb_rf_get_phr_crc_rdy();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_rx_sig_info() bb rf get rx sig info.
|
|
* @param - [void] void.
|
|
* @return - uint32_t rx sig info
|
|
*/
|
|
uint32_t bb_rf_get_rx_sig_info();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_rx_sig_is_ready() bb rf get rx sig is ready.
|
|
* @param - [void] void.
|
|
* @return - uint32_t rx sig is ready.
|
|
*/
|
|
uint32_t bb_rf_get_rx_sig_is_ready();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_rx_sig_is_err() bb rf get rx sig is error.
|
|
* @param - [void] void.
|
|
* @return - uint32_t rx sig is error.
|
|
*/
|
|
uint32_t bb_rf_get_rx_sig_is_err();
|
|
|
|
/*
|
|
* @brief - bb_rf_set_rx_state_cont() bb rf set rx state continue.
|
|
* @param - [state_cont] state contine.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_set_rx_state_cont(uint32_t state_cont);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_dec_cont() bb rf set rx dec continue.
|
|
* @param - [state_cont] state contine.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_set_dec_cont(uint32_t state_cont);
|
|
|
|
/*
|
|
* @brief - bb_rf_clear_tx_info() bb rf clear tx info.
|
|
* @param - [state_cont] state contine.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_clear_tx_info();
|
|
|
|
/*
|
|
* @brief - bb_rf_clear_rx_info() bb rf clear rx info.
|
|
* @param - [state_cont] state contine.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_clear_rx_info();
|
|
|
|
/* bb_rf_get_interweave_offset - get rf interweave offset.
|
|
* @rate - 0: 1/2 1: 4/5.
|
|
* @blkz - 0, 1, 3, 4, 5.
|
|
* return offset - interweave offset.
|
|
*/
|
|
uint32_t bb_rf_get_interweave_offset(uint32_t rate, uint8_t blkz);
|
|
|
|
/* bb_rf_get_interweave_step - get rf interweave step.
|
|
* @rate - 0: 1/2 1: 4/5.
|
|
* @blkz - 0, 1, 3, 4, 5.
|
|
* return step - interweave step.
|
|
*/
|
|
uint32_t bb_rf_get_interweave_step(uint32_t rate, uint8_t blkz);
|
|
|
|
/*
|
|
* @brief - bb_rf_tx_timer_en() bb rf tx by timer enable.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_tx_timer_en();
|
|
|
|
/*
|
|
* @brief - bb_rf_rx_timer_en() bb rf rx by timer enable.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_rx_timer_en();
|
|
|
|
/*
|
|
* @brief - bb_rf_stop_listen_timer_en() bb rf stop listen timer enable.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_stop_listen_timer_en();
|
|
|
|
/*
|
|
* @brief - bb_rf_debug_tx_immd() bb rf debug tx immediately.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_debug_tx_immd();
|
|
|
|
/*
|
|
* @brief - bb_rf_debug_rx_immd() bb rf debug rx immediately.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_debug_rx_immd();
|
|
|
|
/*
|
|
* @brief - bb_rf_debug_stop_listen_immd() bb rf debug stop listen immediately.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_debug_stop_listen_immd();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_rx_is_busy() bb rf get rx is busy or not.
|
|
* @param - [void] void.
|
|
* @return - uint32_t rx busy or not.
|
|
*/
|
|
uint32_t bb_rf_get_rx_is_busy();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_tx_is_busy() bb rf get tx is busy or not.
|
|
* @param - [void] void.
|
|
* @return - uint32_t tx busy or not.
|
|
*/
|
|
uint32_t bb_rf_get_tx_is_busy();
|
|
|
|
/*
|
|
* @brief - bb_rf_set_fchz() bb rf set frequece hz.
|
|
* @param - [fchz] frequece, hz.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_set_fchz(uint32_t fchz);
|
|
|
|
/*
|
|
* @brief - bb_rf_get_fchz() bb rf get frequece hz.
|
|
* @param - [void] void.
|
|
* @return - fchz frequece, hz.
|
|
*/
|
|
uint32_t bb_rf_get_fchz(void);
|
|
|
|
/*
|
|
* @brief - bb_rf_write_data_to_bb() bb rf write data to bb.
|
|
* @param - [pb_size] pb size.
|
|
* @param - [buf] the buf of data.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_write_data_to_bb(uint32_t pb_size, uint8_t *buf);
|
|
|
|
/*
|
|
* @brief - bb_rf_read_data_from_bb() bb rf read data from bb.
|
|
* @param - [pb_size] pb size.
|
|
* @param - [buf] the buf of data.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_read_data_from_bb(uint32_t pb_size, uint8_t *buf);
|
|
|
|
/*
|
|
* @brief - bb_rf_get_snr_rssi() bb rf get snr and rssi.
|
|
* @param - [option] option.
|
|
* @param - [snr] snr.
|
|
* @param - [rssi] rssi.
|
|
* @param - [gain] gain 13-74.
|
|
* @param - [raw_snr] raw snr.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_get_snr_rssi(uint32_t option, int8_t *snr, int8_t *rssi,
|
|
uint8_t *gain, uint16_t *raw_snr);
|
|
|
|
/*
|
|
* @brief - bb_rf_get_raw_snr_rssi_reg1() bb rf get raw snr/rssi register 1.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
uint32_t bb_rf_get_raw_snr_rssi_reg1();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_raw_snr_rssi_reg2() bb rf get raw snr/rssi register 2.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
uint32_t bb_rf_get_raw_snr_rssi_reg2();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_raw_snr_rssi_reg3() bb rf get raw snr/rssi register 3.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
uint32_t bb_rf_get_raw_snr_rssi_reg3();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_cur_gain() bb rf get gain.
|
|
* @return - uint8_t gain 13-74.
|
|
*/
|
|
uint8_t bb_rf_get_cur_gain();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_evaluate_ppm_hz() bb rf get evaluate ppm hz.
|
|
* @param - [void] void.
|
|
* @return - int32_t ppm, unit hz.
|
|
*/
|
|
int32_t bb_rf_get_evaluate_ppm_hz();
|
|
|
|
/*
|
|
* @brief - bb_rf_tx_switch_step1() bb rf tx switch step1.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_tx_switch_step1();
|
|
|
|
/*
|
|
* @brief - bb_rf_tx_switch_step2() bb rf tx swich step2.
|
|
* @param - [void] void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_tx_switch_step2();
|
|
|
|
/*
|
|
* @brief - bb_rf_tx_set_freq_and_filter() bb rf tx set freq and filter.
|
|
* @param - [option] option.
|
|
* @param - [fchz] frequency if
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_tx_set_freq_and_filter(uint32_t option, uint32_t fchz);
|
|
|
|
/*
|
|
* @brief - bb_rf_tx_cfg() bb rf tx config.
|
|
* @param - [option] option.
|
|
* @param - [fchz] frequency if
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_tx_cfg(uint32_t option, uint32_t fchz);
|
|
|
|
/*
|
|
* @brief - bb_rf_rx_cfg() bb rf rx config.
|
|
* @param - [option] option.
|
|
* @param - [fchz] frequency if
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_rx_cfg(uint32_t option, uint32_t fchz);
|
|
|
|
/*
|
|
* @brief - bb_rf_get_pa() bb rf get pa power.
|
|
* @param - [rf_outside] rf outside or not.
|
|
* @return - int32_t dbm.
|
|
*/
|
|
int32_t bb_rf_get_pa(uint32_t rf_outside);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_pa() bb rf set pa power.
|
|
* @param - [rf_outside] rf outside or not.
|
|
* @param - [dbm] power dbm.
|
|
* @return - uint32_t success or not.
|
|
*/
|
|
uint32_t bb_rf_set_pa(uint32_t rf_outside, int32_t dbm);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_tx_iq_mag() set bb rf tx magnitude
|
|
* calibration value.
|
|
* @param - [tx_i_m] tx magnitude calibration value for I patch
|
|
* @param - [tx_q_m] tx magnitude calibration value for Q patch
|
|
*/
|
|
void bb_rf_set_tx_iq_mag(uint8_t tx_i_m, uint8_t tx_q_m);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_tx_iq_mag() set bb rf tx phase calibration value.
|
|
* @param - [tx_i_p] tx phase calibration value for I patch
|
|
* @param - [tx_q_p] tx phase calibration value for Q patch
|
|
*/
|
|
void bb_rf_set_tx_iq_phase(uint8_t tx_i_p, uint8_t tx_q_p);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_rx_iq_mag() set bb rf rx mag calibration value.
|
|
* @param - [i_mag] tx mag calibration value for I patch
|
|
* @param - [q_mag] tx mag calibration value for Q patch
|
|
*/
|
|
void bb_rf_set_rx_iq_mag(uint8_t i_mag, uint8_t q_mag);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_tx_dc() set bb rf tx dc offset calibration value.
|
|
* @param - [tx_i_dc] tx dc offset calibration value for I patch
|
|
* @param - [tx_q_dc] tx dc offset calibration value for Q patch
|
|
*/
|
|
void bb_rf_set_tx_dc(int8_t tx_i_dc, int8_t tx_q_dc);
|
|
|
|
/*
|
|
* @brief - bb_rf_set_filter() - set filter value.
|
|
* @param - [value] filter value.
|
|
*/
|
|
void bb_rf_set_filter(uint16_t value);
|
|
|
|
/*
|
|
* @brief - bb_rf_update_cali() - update tx calibration values
|
|
* to RF register.
|
|
* @param - [option] specified option.
|
|
*/
|
|
void bb_rf_update_cali(uint8_t option);
|
|
|
|
/*
|
|
* @brief - bb_rf_init_ver() - init rf version
|
|
* @param - void.
|
|
* @return - uint32_t 0: success, 1:fail.
|
|
*/
|
|
uint32_t bb_rf_init_ver();
|
|
|
|
/*
|
|
* @brief - bb_rf_get_ver() - get rf version.
|
|
* @param - void.
|
|
* @return - uint32_t RF_VER_INVAILD: is invaild ver;
|
|
* RF_VER_1: rf chip ver1.
|
|
* RF_VER_2: rf chip ver2.
|
|
*/
|
|
uint32_t bb_rf_get_ver();
|
|
|
|
/*
|
|
* @brief - bb_rf_pll_cfg() - bb rf pll config.
|
|
* @param - void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_pll_cfg(void);
|
|
|
|
/*
|
|
* @brief - bb_rf_standby_cfg() - config rf to standby mode
|
|
* @param - void.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_standby_cfg(void);
|
|
|
|
/*
|
|
* @brief - bb_rf_clibr_dc() - bb rf calibration dc.
|
|
* @param - [option] option.
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_clibr_dc(uint32_t option);
|
|
|
|
/*
|
|
* @brief - bb_rf_clibr_tx_dcoc() - bb rf calibration tx dc loop.
|
|
* @param - [option] option.
|
|
* @param - [fchz] rf center frequency
|
|
* @param - [interval] delay time for fetching ADC data, unit us.
|
|
* @param - [step] step value of traversing iq.
|
|
* @param - [ldovs] pa power set
|
|
* @param - [rf_att] tx rf_att
|
|
* @return - uint8_t wheather or not supported tx dc loop calibration.
|
|
*/
|
|
uint8_t bb_rf_clibr_tx_dcoc(uint32_t option, uint32_t fchz, uint8_t interval,
|
|
uint8_t step, uint16_t* ldovs, uint8_t* rf_att);
|
|
|
|
/*
|
|
* @brief - bb_rf_fix_gain() - bb_rf_fix_gain.
|
|
* @param - [en] enbale or disable fix gain.
|
|
* @param - [rf_gain] rf gain
|
|
* @param - [if_gain] if gain
|
|
* @return - void void.
|
|
*/
|
|
void bb_rf_fix_gain(uint8_t en, uint8_t rf_gain, uint8_t if_gain);
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|
|
|
|
#endif // !__BB_RF_CFG_H__
|
|
|