hpw422移植新的sdk
This commit is contained in:
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,245 @@
|
||||
/*!
|
||||
* \file rf_2_4g.h
|
||||
*
|
||||
* \brief The head file of rf_2_4g.c
|
||||
*
|
||||
* \copyright Revised BSD License, see section \ref LICENSE.
|
||||
*
|
||||
* \code
|
||||
*
|
||||
* _ __ _ ________ _
|
||||
* | |/ /(_)___ / ____/ /_ (_)___
|
||||
* | // / __ \/ / / __ \/ / __ \
|
||||
* / |/ / / / / /___/ / / / / /_/ /
|
||||
* /_/|_/_/_/ /_/\____/_/ /_/_/ .___/
|
||||
* /_/
|
||||
* (C) 2022-2025 XinChip
|
||||
*
|
||||
* \endcode
|
||||
*
|
||||
* \author ( XinChip ) Alex-J
|
||||
*
|
||||
* \author ( XinChip )
|
||||
*/
|
||||
|
||||
/* Define to prevent recursive inclusion -------------------------------------*/
|
||||
#ifndef __RF_2_4G_H__
|
||||
#define __RF_2_4G_H__
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C"
|
||||
{
|
||||
#endif
|
||||
|
||||
/*-----------------------------------------------------------------------------------
|
||||
INCLUDE HEADE FILES
|
||||
------------------------------------------------------------------------------------*/
|
||||
#include "rf_config.h"
|
||||
#include "xc6xxx.h"
|
||||
#include "xc_rf_24g_register.h"
|
||||
/*------------------------------------------------------------------------------------
|
||||
Macros
|
||||
-------------------------------------------------------------------------------------*/
|
||||
/* RF Command Code */
|
||||
#define R_REG 0x00
|
||||
#define W_REG 0x20
|
||||
#define R_RX_PL_WID 0x60
|
||||
#define R_RX_PLOAD 0x61
|
||||
#define W_TX_PLOAD 0xA0
|
||||
#define W_TX_PLOAD_NOACK 0xB0
|
||||
#define W_ACK_PLOAD 0xA8
|
||||
#define FLUSH_TX 0xE1
|
||||
#define FLUSH_RX 0xE2
|
||||
#define REUSE_TX_PL 0xE3
|
||||
|
||||
#define CMD_NOP 0xFF
|
||||
#define CMD_DONE 0x100
|
||||
/* FIFO status */
|
||||
#define STAT_TX_REUSE (0x1 << 6)
|
||||
#define STAT_TX_FULL (0x1 << 5)
|
||||
#define STAT_TX_EMPTY (0x1 << 4)
|
||||
#define STAT_RX_FULL (0x02)
|
||||
#define STAT_RX_EMPTY (0x01)
|
||||
/* STATUS Interrupt status */
|
||||
#ifdef XC62XX
|
||||
#define MASK_PBT_CRC_FAIL (0x1 << 8)
|
||||
#define MASK_RX_SYNC (0x1 << 7)
|
||||
#endif
|
||||
#define MASK_RX_DR (0x1 << 6)
|
||||
#define MASK_TX_DS (0x1 << 5)
|
||||
#define MASK_MAX_RT (0x1 << 4)
|
||||
#define MASK_ALL_INTER (MASK_RX_DR | MASK_TX_DS | MASK_MAX_RT)
|
||||
|
||||
/* RF State Machine */
|
||||
#define CE_CTL_HIGH XC_RF_2_4G->CFG_TOP |= 0x4000
|
||||
#define CE_CTL_LOW XC_RF_2_4G->CFG_TOP &= ~0x4000
|
||||
|
||||
/* Number of CRC bytes */
|
||||
#define CRC_0BYTE 0U
|
||||
#define CRC_1BYTE 1U
|
||||
#define CRC_2BYTE 2U
|
||||
|
||||
/* Communication rate */
|
||||
#define DR_1M 0x02
|
||||
#define DR_2M 0x0A
|
||||
#define DR_250K 0x22
|
||||
#define DR_125K 0x2A
|
||||
/* Communication mode */
|
||||
#define TX_MODE 0
|
||||
#define RX_MODE 1
|
||||
#define TRX_MODE 2
|
||||
#define RTX_MODE 3
|
||||
|
||||
|
||||
#define DELAY_CNT 0U
|
||||
|
||||
#define LOGI(...) printf(__VA_ARGS__)
|
||||
#ifdef RF_DEMO
|
||||
#define RF_FAIL 0U
|
||||
#define RF_SUCCESS 1U
|
||||
#define ASSERT while (1)
|
||||
#endif
|
||||
|
||||
|
||||
#define XINCHIP_PACKET 0
|
||||
#define PANCHIP_PACKET 1
|
||||
#define BELKEN_PACKET 2
|
||||
#define TELINK_PACKET 3
|
||||
#define HUNTERSUN_PACKET 4
|
||||
|
||||
#ifdef XC62XX
|
||||
/* The maximum payload is 256 bytes */
|
||||
#define XINCX_2_4G_PIPE0_LEN 32
|
||||
#else
|
||||
#if (XINCX_RF_NORMAL_PACKET_MODE)
|
||||
/* The maximum payload of static packets is 63 bytes */
|
||||
#define XINCX_2_4G_PIPE0_LEN 32
|
||||
#else
|
||||
/* The maximum payload of a dynamic packet is 128 bytes */
|
||||
#define XINCX_2_4G_PIPE0_LEN 32
|
||||
#endif //XINCX_RF_NORMAL_PACKET_MODE
|
||||
#endif //XC62XX
|
||||
#define BUFF_LEN XINCX_2_4G_PIPE0_LEN
|
||||
|
||||
#define readl(addr) (*(volatile unsigned int *)(addr))
|
||||
#define writel(addr, value) (*(volatile unsigned int *)(addr) = (value))
|
||||
|
||||
/* RF Tx Status Typedef */
|
||||
typedef enum
|
||||
{
|
||||
TX_DATA_OK = 0,
|
||||
TX_DATA_INVALID = 1,
|
||||
TX_RETRANS_MAX = 2
|
||||
} eRF_Tx_Status;
|
||||
|
||||
|
||||
/*------------------------------------------------------------------------------------
|
||||
Global Variables
|
||||
-------------------------------------------------------------------------------------*/
|
||||
/*------------------------------------------------------------------------------------
|
||||
Exported Functions
|
||||
-------------------------------------------------------------------------------------*/
|
||||
void nop_cnt(uint32_t cnt);
|
||||
void rf_wr_cmd(uint8_t cmd);
|
||||
void rf_rc_calib(void);
|
||||
void reset_rf2_4g(void);
|
||||
void freq_ctune(uint8_t val);
|
||||
void rf24g_modem_init(void);
|
||||
void rf24g_config(void);
|
||||
void rf24g_init(void);
|
||||
void set_rf_dynpd(uint8_t dynpd);
|
||||
void set_rf_power(uint8_t tx_pwr);
|
||||
void set_rf_afc(void);
|
||||
void rf_set_channel(uint16_t channel);
|
||||
void set_rf_channel(uint16_t channel);
|
||||
void set_rf_txaddr(uint32_t addr_l, uint32_t addr_h);
|
||||
void set_rf_pipe0_rxaddr(uint32_t addr_l, uint32_t addr_h);
|
||||
void set_rf_tx_addr_width(uint8_t bytes);
|
||||
void set_rf_DR(uint8_t rate);
|
||||
void set_rf_feature(uint8_t long_pld, uint8_t fec, uint8_t whiten, uint8_t dpl, uint8_t ack_pay, uint8_t dyn_ack);
|
||||
void set_rf_compatility_featue(uint8_t guard_cfg, uint8_t long_pld_type, uint8_t preamble_num,
|
||||
uint8_t preamble_type, uint8_t crc_scope_header, uint8_t crc_scope_addr);
|
||||
uint8_t set_rf_preamble(uint32_t preamble_word);
|
||||
void set_rf_guard_woard(uint16_t guard_word);
|
||||
void set_rf_mode(uint8_t mode);
|
||||
void set_rf_crc(uint8_t crc_byte);
|
||||
#ifdef XC62XX
|
||||
void set_rf_pipe_rx_payLen(uint16_t p0_len, uint16_t p1_len, uint16_t p2_len, uint16_t p3_len, uint16_t p4_len,
|
||||
uint16_t p5_len);
|
||||
#else
|
||||
void set_rf_pipe_rx_payLen(uint8_t p0_len, uint8_t p1_len, uint8_t p2_len, uint8_t p3_len, uint8_t p4_len,
|
||||
uint8_t p5_len);
|
||||
#endif
|
||||
void set_rf_retr(uint8_t cnt, uint8_t delay);
|
||||
void set_rf_enaa(uint8_t pipe0_enaa, uint8_t pipe1_enaa, uint8_t pipe2_enaa, uint8_t pipe3_enaa, uint8_t pipe4_enaa,
|
||||
uint8_t pipe5_enaa);
|
||||
void set_rf_en_pipe(uint8_t user_pipe);
|
||||
void rf_24g_callback(void *context);
|
||||
void rf_2M_config(void);
|
||||
|
||||
uint8_t rf_tx_packet(uint8_t *data, uint16_t len);
|
||||
uint16_t rf_rx_packet(uint8_t *buff);
|
||||
void rf_fill_ack_packet(uint8_t *buff, uint8_t len);
|
||||
uint8_t rf_read_ack_packet(uint8_t *buff);
|
||||
void rf_off_and_on(void);
|
||||
void rf_ana24_set(void);
|
||||
int16_t rf_get_rssi(void);
|
||||
#ifdef XC62XX
|
||||
void rf_pbt_init(void);
|
||||
uint8_t rf_set_pbt_hl_ord(bool ord);
|
||||
uint8_t rf_set_pbt_hl_offset(uint16_t hl_offset);
|
||||
uint8_t rf_set_pbt_h_len(uint8_t handler_len);
|
||||
uint8_t rf_set_pbt_en(void);
|
||||
uint8_t rf_set_pbt_off(void);
|
||||
uint8_t rf_set_crc_bit_inv(bool crc_inv);
|
||||
uint8_t rf_set_ack_type(bool ack_type);
|
||||
uint8_t rf_set_pid_det(bool pin_en);
|
||||
uint8_t rf_set_fifo_len(bool length_fifo);
|
||||
uint16_t rf_get_pend_rxfrem_len(void);
|
||||
uint8_t rf_set_pbt_auto_trx(bool auto_trx);
|
||||
uint8_t rf_set_pbt_pld_len_offset(uint8_t offset);
|
||||
uint8_t rf_set_pbt_crc_init(uint32_t init_val);
|
||||
uint32_t rf_get_pbt_timer(void);
|
||||
uint32_t rf_get_pbt_sync_timer(void);
|
||||
uint8_t rf_set_pbt_tx_head(uint8_t *hadnler_buff);
|
||||
uint32_t rf_get_pbt_tx_head(void);
|
||||
uint32_t rf_get_pbt_rx_head(void);
|
||||
uint8_t rf_set_pbt_rx2tx_timer(uint16_t timer);
|
||||
uint8_t rf_set_pbt_tx2rx_timer(uint16_t timer);
|
||||
|
||||
uint8_t rf_set_pbt_crc_fail_on(void);
|
||||
uint8_t rf_set_pbt_crc_fail_off(void);
|
||||
uint8_t rf_set_sync_inter_on(void);
|
||||
uint8_t rf_set_sync_inter_off(void);
|
||||
uint8_t rf_set_whiten_value(uint8_t value);
|
||||
uint8_t rf_set_panchip_whiten_on(void);
|
||||
uint8_t rf_set_panchip_whiten_off(void);
|
||||
uint8_t rf_set_whiten_opt(uint8_t whiten_opt);
|
||||
|
||||
uint8_t rf_set_pllon_lock_time(uint8_t pll_timer);
|
||||
|
||||
uint8_t rf_set_pbt_auto_trx_timer(uint16_t pbt_rx2tx_timer, uint16_t pbt_tx2rx_timer);
|
||||
uint8_t rf_set_pbt_config(uint8_t pbt_auto_trx, int len_offset, uint32_t pbt_crc_init);
|
||||
|
||||
|
||||
uint8_t rf_clk_div23_en_soften_on(void);
|
||||
uint8_t rf_clk_div23_en_soften_off(void);
|
||||
uint8_t rf_clk_div23_en_soft_on(void);
|
||||
uint8_t rf_clk_div23_en_soft_off(void);
|
||||
uint8_t rf_chan_mult_1p5_soften_on(void);
|
||||
uint8_t rf_chan_mult_1p5_soften_off(void);
|
||||
uint8_t rf_chan_mult_1p5_soft_on(void);
|
||||
uint8_t rf_chan_mult_1p5_soft_off(void);
|
||||
|
||||
uint8_t rf_chan_frac_offset(uint32_t value);
|
||||
#endif
|
||||
|
||||
void rf_set_freq_dev(uint16_t freq_dev);
|
||||
uint16_t rf_get_freq_dev(void);
|
||||
void rf_ack_payload_config(void);
|
||||
#define INFO_BUFF(buff, len) rf_buff_info(buff, len)
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
#endif /* __RF_2_4G__ */
|
||||
Reference in New Issue
Block a user