PRF: 2.4G API演示例程¶
1 功能概述¶
此项目演示了2.4G用到的API及收包率测试例程。
2 环境要求¶
board: 支持 2.4G 功能的开发板2个
uart: 显示串口输出log
PC串口工具:Panchip Serial Assistant V0.0.006.exe
逻辑分析仪,用于抓取tx和rx时序波形
需要
prf_api_tx
和prf_api_rx
两个板子一起使用。
3 编译和烧录¶
例程位置:
zephyr\samples_panchip\proprietary_radio\prf_api_tx
zephyr\samples_panchip\proprietary_radio\prf_api_rx
使用 ZAL 工具可以对其进行编译、烧录、打开 VS Code 调试等操作。关于 ZAL 工具的详细介绍请参考:Zephyr APP Launcher 工具介绍。
烧录prf_api_tx程序至A板(后续发送端板子简称A板)
烧录prf_api_rx程序至B板(后续发送端板子简称B板)
4 演示说明¶
将接收端串口和发射端串口分别接到PC的USB端口上。
根据串口提示演示各个api功能。
观察PC串口工具的输出结果或者逻辑分析仪波形图。
4.1 演示项介绍¶
演示API panchip_prf_set_chn
演示API PHY_SetExternChannel
演示API panchip_switch_prf
演示API panchip_prf_set_tx_pwr
演示API panchip_prf_set_trx_mode
演示API panchip_prf_set_addr
演示API panchip_prf_set_data
演示API panchip_prf_dev_set
演示API panchip_prf_carrier_start/stop
演示API panchip_prf_read_rssi
演示API panchip_prf_read_carrier_rssi
演示API panchip_prf_set_ack_data
演示ISR event_pid_err_fun
演示API panchip_prf_trx_trans_time
演示2.4G普通型收包率
演示2.4G普通型极限收包率
演示2.4G增强型收包率
演示2.4G增强型极限收包率
4.2 演示结果¶
4.2.1 API panchip_prf_set_chn¶
带内频点切换演示例程,频点范围2402~2480。
复位芯片,B板输入命令’A’,进入普通型RX模式。
复位芯片,A板输入命令’A’,进入普通型TX模式,每次发送5byte数据。
B板打印当前频点及接收数据,接收完成后修改频点,每次频点步进加1,重新进入RX模式。
A板打印当前频点及tx done中断,发送完成后修改频点,每次频点步进加1,重新进入TX模式。
重复步骤4、5直至遍历所有频点。
输出结果:
:::{figure-md} :align: center
:::
4.2.2 API PHY_SetExternChannel¶
带外频点切换演示例程,频点范围2360~2401及2481~2510。
复位芯片,B板输入命令’B’,进入普通型RX模式。
复位芯片,A板输入命令’B’,进入普通型TX模式,每次发送5byte数据。
B板打印当前频点及接收数据,接收完成后修改频点,每次频点步进加1,重新进入RX模式。
A板打印当前频点及tx done中断,发送完成后修改频点,每次频点步进加1,重新进入TX模式。
重复步骤4、5直至遍历所有频点。
输出结果:
:::{figure-md} :align: center
:::
4.2.3 API panchip_switch_prf¶
模式切换演示例程,从xn297模式切换为nrf模式。
复位芯片,B板输入命令’C’,进入xn297模式普通型RX模式。
复位芯片,A板输入命令’C’,进入xn297模式普通型TX模式,每次发送5byte数据。
B板打印接收数据并切换为nrf接收模式,重新进入RX模式。
A板打印tx done中断并切换为nrf接收模式,重新进入TX模式。
B板打印接收数据,A板打印tx done中断。
输出结果:
:::{figure-md} :align: center
:::
4.2.4 API panchip_prf_set_tx_pwr¶
功率档位切换演示例程,功率遍历范围为-45dbm~7dbm。
复位芯片,B板输入命令’D’,进入xn297模式普通型RX模式。
复位芯片,A板输入命令’D’,进入xn297模式普通型TX模式,每次发送5byte数据。
B板打印接收数据并打印rssi,重新进入RX模式。
A板打印tx done中断并切换tx功率,每次功率加一,重新进入TX模式。
重复步骤4、5直至遍历所有功率档位。
输出结果:
:::{figure-md} :align: center
:::
4.2.5 API panchip_prf_set_trx_mode¶
TX/RX模式切换演示例程。
复位芯片,B板输入命令’E’,进入xn297模式普通型RX模式。
复位芯片,A板输入命令’E’,进入xn297模式普通型TX模式,发送5byte数据。
B板打印接收数据,并切换为TX模式。
A板打印tx done中断并切换为RX模式。
B板打印tx done,A板打印接收数据。
输出结果:
:::{figure-md} :align: center
:::
4.2.6 API panchip_prf_set_addr¶
通信地址切换演示例程,特殊地址0xffffffff、0xffff0000、0xff000000、0x00000000收包差,0x55555555、0xAAAAAAAA收包均是crc error。
复位芯片,B板输入命令’F’,进入xn297模式普通型RX模式。
复位芯片,A板输入命令’F’,进入xn297模式普通型TX模式,发送5byte数据。
B板打印接收数据,修改通信地址及长度,并重新进入RX模式。
A板打印tx done中断,修改通信地址及长度,并重新进入TX模式。
B板打印接收数据。
输出结果:
:::{figure-md} :align: center
:::
4.2.7 API panchip_prf_set_data/panchip_prf_data_rec¶
Payload数据设置及接收演示例程。
复位芯片,B板输入命令’G’,进入xn297模式普通型RX模式。
复位芯片,A板输入命令’G’,进入xn297模式普通型TX模式,发送1byte数据。
B板打印接收数据,并重新进入RX模式。
A板打印tx done中断,修改payload长度,并重新进入TX模式,发送64byte数据。
B板打印接收数据,并重新进入RX模式。
A板打印tx done中断,修改payload长度,并重新进入TX模式,发送255byte数据。
B板、A板切换为nrf模式,重复步骤2~7(不需要复位芯片)。
输出结果:
:::{figure-md} :align: center
:::
4.2.8 API panchip_prf_dev_set¶
频偏设置演示例程。
复位芯片,B板输入命令’H’,进入xn297模式普通型RX模式。
复位芯片,A板输入命令’H’,进入xn297模式普通型TX模式,发送1byte数据。
B板打印接收数据,切换工作模式为nrf模式,并切换频偏为nrf频偏设置,重新进入RX模式。
A板打印tx done中断,切换工作模式为nrf模式,并切换频偏为nrf频偏设置,重新进入TX模式。
B板打印接收数据,A板打印tx done中断。
输出结果:
:::{figure-md} :align: center
:::
4.2.9 API panchip_prf_rx_stop¶
RX强制停止演示例程。
复位芯片,B板输入命令’I’,进入RX模式,RX timeout功能关闭。
延时100ms,强制停止RX。
触发timeout中断。
输出结果:
:::{figure-md} :align: center
:::
4.2.10 API panchip_prf_carrier_start/stop¶
载波模式启动停止演示例程,遍历带内所有频点。
复位芯片,A板输入命令’I’,进入载波发送模式。
延时20ms,频点加1,重新启动载波发送模式。
频点遍历至2480后,停止载波发送模式并退出。
输出结果:
:::{figure-md} :align: center
:::
4.2.11 API panchip_prf_read_rssi¶
读取RSSI演示例程,遍历带内所有频点。
复位芯片,B板输入命令’J’,进入普通型RX模式。
复位芯片,A板输入命令’J’,进入普通型TX模式,每次发送5byte数据。
B板打印当前频点、RSSI及接收数据,接收完成后修改频点,每次频点步进加1,重新进入RX模式。
A板打印当前频点及tx done中断,发送完成后修改频点,每次频点步进加1,重新进入TX模式。
重复步骤4、5直至遍历所有频点。
输出结果:
:::{figure-md} :align: center
:::
4.2.12 API panchip_prf_read_carrier_rssi¶
读取载波RSSI演示例程,遍历带内所有频点。
复位芯片,B板输入命令’K’,进入普通型RX模式。
复位芯片,A板输入命令’K’,进入载波发送模式。
延时20ms,重新启动载波发送模式。
B板读取RSSI值,A板未发送载波时RSSI很小,发送载波后恢复正常值。
输出结果:
:::{figure-md} :align: center
:::
4.2.13 API panchip_prf_set_ack_data¶
增强型模式下ACK Payload设置演示例程。
复位芯片,B板输入命令’L’,选择需要测试的ack payload长度,进入增强型RX模式。
复位芯片,A板输入命令’L’,进入增强型TX模式,发送1byte数据。
B板RX转TX并发送ack数据,打印tx done中断。
A板TX转RX,打印接收的ack数据及tx done中断。
A板修改发送数据长度,步进为5,最大63。
重复步骤4、5、6 十次。
修改ack长度执行步骤2~7。
输出结果:
:::{figure-md} :align: center
:::
4.2.14 API event_pid_err_fun¶
增强型模式下pid error演示例程。
复位芯片,B板输入命令’M’,进入增强型RX模式并设置ack payload固定长度5byte。
复位芯片,A板输入命令’M’,进入增强型TX模式,固定pid为0,发送5byte数据,重复发送10次。
B板打印tx done及pid error中断。
A板打印接收的ack数据及tx done中断。
输出结果:
:::{figure-md} :align: center
:::
4.2.15 API panchip_prf_trx_trans_time¶
增强型TRX转换传输时间设置演示例程。
复位芯片,B板输入命令’N’,进入增强型RX模式并设置ack payload固定长度5byte。
复位芯片,A板输入命令’N’,进入增强型TX模式,固定pid为0,发送5byte数据,重复发送10次。
B板和A板每次TRX转换传输时间在原有基础上增加5us,B板初始设置为120us,A板初始设置为80us。
A板打印接收的ack数据及tx done中断。
逻辑分析仪分析A/B板子tx转rx或rx转tx中间时间间隔,每次间隔增大5us,最大与最小间隔45us
输出结果:
:::{figure-md} :align: center
:::
:::{figure-md} :align: center
:::
4.2.16 2.4G普通型收包率演示¶
普通型收包率演示例程,TX端每次发送1000包数据,RX端打印接收包数。
复位芯片,B板输入命令’O’,进入普通型RX模式,选择接收的数据长度。
复位芯片,A板输入命令’O’,进入普通型TX模式,选择发送的数据长度。
A板打印当前测试的次数,B板打印接收包数。
重复测试10次。
输出结果:
:::{figure-md} :align: center
:::
4.2.17 2.4G普通型极限收包率演示¶
普通型极限收包率演示例程。
复位芯片,B板输入命令’P’,进入普通型RX模式,选择接收的数据长度。
复位芯片,A板输入命令’P’,进入普通型TX模式,选择发送的数据长度。
A板一直处于发送状态,B板一直处在接收状态并每隔1s打印一次接收包数。
输出结果:
:::{figure-md} :align: center
:::
4.2.18 2.4G增强型收包率演示¶
增强型收包率演示例程,TX端每次发送1000包数据,RX端打印接收包数。
复位芯片,B板输入命令’Q’,进入增强型RX模式,选择发送的ack的数据长度。
复位芯片,A板输入命令’Q’,进入增强型TX模式,选择发送的数据长度。
A板打印当前测试的次数及收到的ack包数,B板打印接收包数。
重复测试10次。
输出结果:
:::{figure-md} :align: center
:::
4.2.19 2.4G增强型极限收包率演示¶
增强型极限收包率演示例程,PHY设置为2M。
复位芯片,B板输入命令’R’,进入增强型RX模式,选择发送的ack的数据长度,长度选择为0时进入tx noack模式。
复位芯片,A板输入命令’R’,进入增强型TX模式,选择发送的数据长度。
A板一直处于发送状态,B板一直处在接收状态并每隔1s打印一次接收包数。
输出结果:
:::{figure-md} :align: center
:::
5 开发说明¶
发射端启动了一个1s的定时器,每隔1s发送一包2.4G数据。发送成功串口输出log”tx done”。
5.1 2.4G发射初始化¶
2.4G初始化配置说明如下:
初始化配置的结构体“pan_prf_config_t”
Type |
name |
Description |
---|---|---|
prf_mode_t |
work_mode |
工作模式配置,包括普通型和增强型 |
prf_chip_mode_sel_t |
chip_mode |
xn297通信协议和nordic通信协议配置 |
prf_trx_mode_t |
trx_mode |
收发模式配置 |
prf_phy_t |
phy |
通信速率配置,可配置为1M和2M |
prf_crc_sel_t |
crc |
数据包CRC配置,可配置为crc 16bit,crc 8bit,no crc |
prf_scramble_sel_t |
src |
数据包扰码的配置,可配置为使用扰码和不使用扰码 |
uint16_t |
rx_timeout |
接收超时时间配置,最大50000us |
uint16_t |
rf_channel |
2.4g频点配置,配置范围2402-2480Mhz |
uint8_t |
tx_no_ack |
配置增强型模式下tx是否需要ack |
uint8_t |
nrf52_mode |
nordic的长包模式配置,最大payload的长度为255 |
uint8_t |
rx_length |
rx接收数据包长度配置,增强型模式下可不配置 |
uint8_t |
addr_length |
接入地址长度配置,可配置为3、4、5字节 |
uint8_t |
addr[5] |
接入地址的内容 |
prf_mode_t:
Type |
Value |
Description |
---|---|---|
PRF_MODE_NORMAL |
0 |
普通型 |
PRF_MODE_ENHANCE |
1 |
增强型 |
prf_chip_mode_sel_t:
Type |
Value |
Description |
---|---|---|
PRF_CHIP_MODE_SEL_BLE |
1 |
蓝牙模式 |
PRF_CHIP_MODE_SEL_XN297 |
2 |
XN297模式 |
PRF_CHIP_MODE_SEL_NORDIC |
3 |
NORDIC模式 |
prf_trx_mode_t:
Type |
Value |
Description |
---|---|---|
PRF_TX_MODE |
0 |
2.4G发射 |
PRF_RX_MODE |
1 |
2.4G接收 |
prf_phy_t:
Type |
Value |
Description |
---|---|---|
PRF_PHY_1M |
1 |
1M通信速率 |
PRF_PHY_2M |
2 |
2M通信速率 |
prf_crc_sel_t:
Type |
Value |
Description |
---|---|---|
PRF_CRC_SEL_NOCRC |
0 |
no crc |
PRF_CRC_SEL_CRC8 |
1 |
crc 8bit |
PRF_CRC_SEL_CRC16 |
2 |
crc 16bit |
prf_scramble_sel_t:
Type |
Value |
Description |
---|---|---|
PRF_SRC_SEL_NOSRC |
0 |
不使能扰码 |
PRF_SRC_SEL_EN |
1 |
使能扰码 |
Note:2.4G发射只支持一个通道,也就是点对点通信。如果要支持一对多通信需要遍历初始化发射端的接入的地址。
6 RAM/Flash资源使用情况¶
pri_api_tx:
Memory region Used Size Region Size %age Used
FLASH: 32684 B 384 KB 8.31%
SRAM: 13168 B 64 KB 20.09%
pri_api_rx:
Memory region Used Size Region Size %age Used
FLASH: 33 KB 384 KB 8.59%
SRAM: 13032 B 64 KB 19.89%