RF Examples

Table of Contents

API-RF-CASE1:RF BLE 2M TX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_2M) RF mode initialization: RF_MODE_BLE_2M
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_set_txmode() start Tx mode
main_loop() rf_tx_pkt() rf_tx_pkt(ble_tx_packet) send packet in manual mode
rf_tx_finish() while(!rf_tx_finish()) wait for tx packet being finished
rf_tx_finish_clear_flag() clear the flag of tx finished

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
volatile unsigned int tx_cnt=0;
unsigned char ble_tx_packet[48] __attribute__ ((aligned (4))) = {0x23,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

API-RF-CASE2:RF BLE 2M RX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_2M) RF mode initialization: RF_MODE_BLE_2M
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
rf_set_rxmode() start Rx mode
main_loop() if( rf_is_rx_finish() ) rf_is_rx_finish() determine whether rx packet is finished
> if(RF_BLE_PACKET_CRC_OK(rx_packet)&&RF_BLE_PACKET_LENGTH_OK(rx_packet)) determine whether rx packet is right
>> rx_cnt++ Perform packet parsing and processing
> rf_rx_finish_clear_flag() clear the flag of rx finished
> rf_set_tx_rx_off_auto_mode() turn off RF auto mode

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
volatile unsigned int rx_cnt=0;
unsigned char rx_packet[64] __attribute__ ((aligned (4)));

API-RF-CASE3:RF BLE 1M TX

    refer to API-RF-CASE1:RF BLE 2M TX

API-RF-CASE4:RF BLE 1M RX

    refer to API-RF-CASE2:RF BLE 2M RX

API-RF-CASE5:RF BLE 1M NO PN TX

    refer to API-RF-CASE1:RF BLE 2M TX

API-RF-CASE6:RF BLE 1M NO PN RX

    refer to API-RF-CASE2:RF BLE 2M RX

API-RF-CASE7:RF ZIGBEE 250K TX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_ZIGBEE_250K) RF mode initialization: RF_MODE_ZIGBEE_250K
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_set_txmode() start Tx mode
main_loop() rf_tx_pkt() rf_tx_pkt(Zigbee_tx_packet) send packet in manual mode
rf_tx_finish() while(!rf_tx_finish()) wait for tx packet being finished
rf_tx_finish_clear_flag() clear the flag of tx finished

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
volatile unsigned int tx_cnt=0;
unsigned char Zigbee_tx_packet[48] __attribute__ ((aligned (4))) = {0x12,0x00,0x00,0x00,0x13,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

API-RF-CASE8:RF ZIGBEE 250K RX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_ZIGBEE_250K) RF mode initialization: RF_MODE_ZIGBEE_250K
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
rf_set_rxmode() start Rx mode
main_loop() if( rf_is_rx_finish() ) rf_is_rx_finish() determine whether rx packet is finished
> if(RF_ZIGBEE_PACKET_CRC_OK(rx_packet)&&RF_ZIGBEE_PACKET_LENGTH_OK(rx_packet)) determine whether rx packet is right
>> rx_cnt++ Perform packet parsing and processing
> rf_rx_finish_clear_flag() clear the flag of rx finished
> rf_set_tx_rx_off_auto_mode() turn off RF auto mode

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
volatile unsigned int rx_cnt=0;
unsigned char rx_packet[64] __attribute__ ((aligned (4)));

API-RF-CASE9:RF LR S2 500K TX

    refer to API-RF-CASE1:RF BLE 2M TX

API-RF-CASE10:RF LR S2 500K RX

    refer to API-RF-CASE2:RF BLE 2M RX

API-RF-CASE11:RF LR S8 125K TX

    refer to API-RF-CASE1:RF BLE 2M TX

API-RF-CASE912:RF LR S8 125K RX

    refer to API-RF-CASE2:RF BLE 2M RX

API-RF-CASE13:RF PRIVATE 250K TX

MODE Function Sub-Function APIs Description Update Status
ESB irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_PRIVATE_250K) RF mode initialization: RF_MODE_PRIVATE_250K
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_set_txmode() start Tx mode
main_loop() rf_tx_pkt() rf_tx_pkt(Private_ESB_tx_packet) send packet in manual mode
rf_tx_finish() while(!rf_tx_finish()) wait for tx packet being finished
rf_tx_finish_clear_flag() clear the flag of tx finished
SB irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_LR_S8_125K) RF mode initialization: RF_MODE_LR_S8_125K
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_fix_payload_len_set() rf_fix_payload_len_set(RX_PAYLOAD_LEN) set the length of shockburst for RF Private mode
rf_set_txmode() start Tx mode
main_loop() rf_tx_pkt() rf_tx_pkt(Private_SB_tx_packet) send packet in manual mode
rf_tx_finish() while(!rf_tx_finish()) wait for tx packet being finished
rf_tx_finish_clear_flag() clear the flag of tx finished

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
#define RX_PAYLOAD_LEN 32
volatile unsigned int tx_cnt=0;
unsigned char Private_SB_tx_packet[48] __attribute__ ((aligned (4))) = {0x20,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};
unsigned char Private_ESB_tx_packet[48] __attribute__ ((aligned (4))) = {0x21,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

API-RF-CASE14:RF PRIVATE 250K RX

MODE Function Sub-Function APIs Description Update Status
ESB irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_PRIVATE_250K) RF mode initialization: RF_MODE_PRIVATE_250K
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
rf_set_rxmode() start Rx mode
main_loop() if( rf_is_rx_finish() ) rf_is_rx_finish() determine whether rx packet is finished
> if(RF_NRF_ESB_PACKET_CRC_OK(rx_packet)&&RF_NRF_ESB_PACKET_LENGTH_OK(rx_packet)) determine whether rx packet is right
>> rx_cnt++ Perform packet parsing and processing
> rf_rx_finish_clear_flag() clear the flag of rx finished
> rf_set_tx_rx_off_auto_mode() turn off RF auto mode
SB irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_PRIVATE_250K) RF mode initialization: RF_MODE_PRIVATE_250K
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_fix_payload_len_set() rf_fix_payload_len_set(RX_PAYLOAD_LEN) set the length of shockburst for RF Private mode
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
rf_set_rxmode() start Rx mode
main_loop() if( rf_is_rx_finish() ) rf_is_rx_finish() determine whether rx packet is finished
> if(RF_NRF_SB_PACKET_CRC_OK(rx_packet)) RF_NRF_SB_PACKET_CRC_OK() determine whether rx packet is right
>> rx_cnt++ Perform packet parsing and processing
> rf_rx_finish_clear_flag() clear the flag of rx finished
> rf_set_tx_rx_off_auto_mode() turn off RF auto mode


Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
#define RX_PAYLOAD_LEN 32
volatile unsigned int rx_cnt=0;
unsigned char rx_packet[64] __attribute__ ((aligned (4)));

API-RF-CASE15:RF PRIVATE 500K TX

    refer to API-RF-CASE13:RF PRIVATE 250K TX

API-RF-CASE16:RF PRIVATE 500K RX

    refer to API-RF-CASE14:RF PRIVATE 250K RX

API-RF-CASE17:RF PRIVATE 1M TX

    refer to API-RF-CASE13:RF PRIVATE 250K TX

API-RF-CASE18:RF PRIVATE 1M RX

    refer to API-RF-CASE14:RF PRIVATE 250K RX

API-RF-CASE19:RF PRIVATE 2M TX

    refer to API-RF-CASE13:RF PRIVATE 250K TX

API-RF-CASE20:RF PRIVATE 2M RX

    refer to API-RF-CASE14:RF PRIVATE 250K RX

API-RF-CASE21:RF ANT TX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_ANT) RF mode initialization: RF_MODE_ANT
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_fix_payload_len_set() rf_fix_payload_len_set(RX_PAYLOAD_LEN) set the length of shockburst for RF ANT mode
rf_set_txmode() start Tx mode
main_loop() rf_tx_pkt() rf_tx_pkt(Ant_tx_packet) send packet in manual mode
rf_tx_finish() while(!rf_tx_finish()) wait for tx packet being finished
rf_tx_finish_clear_flag() clear the flag of tx finished

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
#define RX_PAYLOAD_LEN 32
volatile unsigned int tx_cnt=0;
unsigned char Ant_tx_packet[48] __attribute__ ((aligned (4))) = {RX_PAYLOAD_LEN-2,0x00,0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

API-RF-CASE22:RF ANT RX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_ANT) RF mode initialization: RF_MODE_ANT
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_fix_payload_len_set() rf_fix_payload_len_set(RX_PAYLOAD_LEN) set the length of shockburst for RF ANT mode
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
rf_set_rxmode() start Rx mode
main_loop() if( rf_is_rx_finish() ) rf_is_rx_finish() determine whether rx packet is finished
> if(rf_is_rx_right()) rf_is_rx_right() determine whether rx packet is right
>> rx_cnt++ Perform packet parsing and processing
> rf_rx_finish_clear_flag() clear the flag of rx finished
> rf_set_tx_rx_off_auto_mode() turn off RF auto mode

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
#define RX_PAYLOAD_LEN 32
volatile unsigned int rx_cnt=0;

API-RF-CASE23:RF BLE 2M AUTO TX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_2M) RF mode initialization: RF_MODE_BLE_2M
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
main_loop() rf_start_stx() rf_start_stx(ble_tx_packet, clock_time() + 16*1000*TX_INTERVAL_MS) send one packet every 1ms in auto mode and close
rf_tx_finish() while(!rf_tx_finish()) wait for tx packet being finished
rf_tx_finish_clear_flag() clear the flag of tx finished

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
#define TX_INTERVAL_MS 1
volatile unsigned int tx_cnt=0;
unsigned char ble_tx_packet[48] __attribute__ ((aligned (4))) = {0x23,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

API-RF-CASE24:RF BLE 2M AUTO RX

Function Sub-Function APIs Description Update Status
irq_handler() none Interrupt handler function 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_2M) RF mode initialization: RF_MODE_BLE_2M
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_set_tx_rx_off() reset RF Tx/Rx mode
rf_set_channel() rf_set_channel(RF_FREQ,0) set channel for RF
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
rf_start_srx() rf_start_srx(clock_time() + 100*16) start SRX mode
main_loop() if( rf_is_rx_finish() ) rf_is_rx_finish() determine whether rx packet is finished
> if(RF_BLE_PACKET_CRC_OK(rx_packet)&&RF_BLE_PACKET_LENGTH_OK(rx_packet)) determine whether rx packet is right
>> rx_cnt++ Perform packet parsing and processing
> rf_rx_finish_clear_flag() clear the flag of rx finished
> rf_set_tx_rx_off_auto_mode() turn off RF auto mode
> rf_start_srx() rf_start_srx(clock_time() + 100*16) start SRX mode again

Variables above are defined as below

#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
volatile unsigned int rx_cnt=0;
__attribute__ ((aligned (4))) unsigned char rx_packet[64];

API-RF-CASE25:RF BLE 2M AUTO TX2RX

Function Sub-Function APIs Description Update Status
irq_handler() Tx IRQ if(rf_irq_src_get()&FLD_RF_IRQ_TX==FLD_RF_IRQ_TX) rf_irq_src_get() determine whether interrupt flag is generated by Tx 2019-1-10
>rf_irq_clr_src(FLD_RF_IRQ_TX) rf_irq_clr_src() clear the interrupt flag 2019-1-10
>tx_state = 1 get tx state 2019-1-10
Rx IRQ if(rf_irq_src_get()&FLD_RF_IRQ_RX==FLD_RF_IRQ_RX) rf_irq_src_get() determine whether interrupt flag is generated by Rx 2019-1-10
>rf_irq_clr_src(FLD_RF_IRQ_RX) rf_irq_clr_src() clear the interrupt flag 2019-1-10
>rx_state = 1 get rx state 2019-1-10
TX2RX Rx TIMEOUT IRQ if(rf_irq_src_get()&FLD_RF_IRQ_RX_TIMEOUT==FLD_RF_IRQ_RX_TIMEOUT) determine whether interrupt flag is generated by Rx timeout 2019-1-10
>rf_irq_clr_src(FLD_RF_IRQ_RX_TIMEOUT) rf_irq_clr_src() clear the interrupt flag 2019-1-10
>timeout_state = 1 get timeout state 2019-1-10
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_2M) RF mode initialization: RF_MODE_BLE_2M
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_trx_state_set() rf_set_trx_state(RF_MODE_AUTO,RF_FREQ) set Tx/Rx auto mode
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
irq_disable() disable global interrupt
irq_clr_src() clear global interrupt flag
irq_enable_type() irq_set_mask(FLD_IRQ_ZB_RT_EN) set global interrupt mask
rf_irq_disable() rf_irq_disable(FLD_RF_IRQ_ALL) clear all rf irq mask
rf_irq_enable() rf_irq_enable(FLD_RF_IRQ_TX
Ι FLD_RF_IRQ_RX
Ι FLD_RF_IRQ_RX_TIMEOUT)
set rf interrupt mask
irq_enable() enable global interrupt
main_loop() tx_state=0
rx_state=0
timeout_state=0
initiate the Tx/Rx/timeout state
sleep_ms(100) sleep_ms() delay 100ms
rf_start_stx2rx (ble_tx_packet,
clock_time()+16*TX_DELAY_US,STX_WAITTIME_US)
rf_start_stx2rx() start Tx2Rx
... for more details , please refer to Driver Demo

Variables above are defined as below

#define STX_WAITTIME_US 4000
#define SRX_WAITTIME_US 100000
#define TX_DELAY_US 10
#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
volatile unsigned int tx_state=0;
volatile unsigned int rx_state=0;
volatile unsigned int timeout_state=0;
unsigned char rx_packet[64] __attribute__ ((aligned (4)));
unsigned char ble_tx_packet[48] __attribute__ ((aligned (4))) = {0x23,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

API-RF-CASE26:RF BLE 2M AUTO RX2TX

Function Sub-Function APIs Description Update Status
irq_handler() Tx IRQ if(rf_irq_src_get()&FLD_RF_IRQ_TX==FLD_RF_IRQ_TX) rf_irq_src_get() determine whether interrupt flag is generated by Tx 2019-1-10
>rf_irq_clr_src(FLD_RF_IRQ_TX) rf_irq_clr_src() clear the interrupt flag
>tx_state = 1 get tx state
Rx IRQ if(rf_irq_src_get()&FLD_RF_IRQ_RX==FLD_RF_IRQ_RX) rf_irq_src_get() determine whether interrupt flag is generated by Rx
>rf_irq_clr_src(FLD_RF_IRQ_RX) rf_irq_clr_src() clear the interrupt flag
>rx_state = 1 get rx state
RX2TX Rx TIMEOUT IRQ if(rf_irq_src_get()&FLD_RF_IRQ_FIRST_TIMEOUT==FLD_RF_IRQ_FIRST_TIMEOUT) determine whether interrupt flag is generated by Rx timeout
>rf_irq_clr_src(FLD_RF_IRQ_FIRST_TIMEOUT) rf_irq_clr_src() clear the interrupt flag
>timeout_state = 1 get timeout state
main() cpu_wakeup_init() CPU initialization function [Mandatory]
clock_init() clock_init(SYS_CLK_24M_Crystal) Clock initialization function, System Clock is 24M RC by default [optional]
rf_drv_init() rf_drv_init(RF_MODE_BLE_2M) RF mode initialization: RF_MODE_BLE_2M
gpio_init() gpio_init(1) GPIO initialization: set the initialization status of all GPIOs [optional]
user_init() rf_set_power_level_index() rf_set_power_level_index (RF_POWER) set tx power level
rf_trx_state_set() rf_set_trx_state(RF_MODE_AUTO,RF_FREQ) set Tx/Rx auto mode
rf_access_code_comm() rf_access_code_comm(ACCESS_CODE) set access code for RF
rf_rx_buffer_set() rf_rx_buffer_set(rx_packet,64, 0) set buffer for rx packet
irq_disable() disable global interrupt
irq_clr_src() clear global interrupt flag
irq_enable_type() irq_enable_type(FLD_IRQ_ZB_RT_EN) set global interrupt mask
rf_irq_disable() rf_irq_disable(FLD_RF_IRQ_ALL) clear all rf irq mask
rf_irq_enable() rf_irq_enable(FLD_RF_IRQ_TX
Ι FLD_RF_IRQ_RX
Ι FLD_RF_IRQ_FIRST_TIMEOUT)
set rf interrupt mask
irq_enable() enable global interrupt
main_loop() tx_state=0
rx_state=0
timeout_state=0
initiate the Tx/Rx/timeout state
rf_start_srx2tx(ble_tx_packet,
clock_time()+16*TX_DELAY_US ,SRX_WAITTIME_US)
rf_start_srx2tx() start Tx2Rx
... for more details , please refer to Driver Demo

Variables above are defined as below

#define STX_WAITTIME_US 4000
#define SRX_WAITTIME_US 100000
#define TX_DELAY_US 10
#define RF_FREQ 35
#define RF_POWER RF_POWER_P10p46dBm
#define ACCESS_CODE 0x29417671
volatile unsigned int tx_state=0;
volatile unsigned int rx_state=0;
volatile unsigned int timeout_state=0;
unsigned char rx_packet[64] __attribute__ ((aligned (4)));
unsigned char ble_tx_packet[48] __attribute__ ((aligned (4))) = {0x23,0x00,0x00,0x00,0x00,0x21,0x00,0x00,0x00,0x00,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xaa,0xbb,0xcc,0xdd,0xee,0xff};

History Record

Date Description Author
2019-1-10 initial release LJW