当前文档版本为 v1.2.0,您可以访问当前页面的 开发中 版本以获取最近可能的更新。

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_txprf_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 演示说明

  1. 将接收端串口和发射端串口分别接到PC的USB端口上。

  2. 根据串口提示演示各个api功能。

  3. 观察PC串口工具的输出结果或者逻辑分析仪波形图。

4.1 演示项介绍

  1. 演示API panchip_prf_set_chn

  2. 演示API PHY_SetExternChannel

  3. 演示API panchip_switch_prf

  4. 演示API panchip_prf_set_tx_pwr

  5. 演示API panchip_prf_set_trx_mode

  6. 演示API panchip_prf_set_addr

  7. 演示API panchip_prf_set_data

  8. 演示API panchip_prf_dev_set

  9. 演示API panchip_prf_carrier_start/stop

  10. 演示API panchip_prf_read_rssi

  11. 演示API panchip_prf_read_carrier_rssi

  12. 演示API panchip_prf_set_ack_data

  13. 演示ISR event_pid_err_fun

  14. 演示API panchip_prf_trx_trans_time

  15. 演示2.4G普通型收包率

  16. 演示2.4G普通型极限收包率

  17. 演示2.4G增强型收包率

  18. 演示2.4G增强型极限收包率

4.2 演示结果

4.2.1 API panchip_prf_set_chn

  1. 带内频点切换演示例程,频点范围2402~2480。

  2. 复位芯片,B板输入命令’A’,进入普通型RX模式。

  3. 复位芯片,A板输入命令’A’,进入普通型TX模式,每次发送5byte数据。

  4. B板打印当前频点及接收数据,接收完成后修改频点,每次频点步进加1,重新进入RX模式。

  5. A板打印当前频点及tx done中断,发送完成后修改频点,每次频点步进加1,重新进入TX模式。

  6. 重复步骤4、5直至遍历所有频点。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.2 API PHY_SetExternChannel

  1. 带外频点切换演示例程,频点范围2360~2401及2481~2510。

  2. 复位芯片,B板输入命令’B’,进入普通型RX模式。

  3. 复位芯片,A板输入命令’B’,进入普通型TX模式,每次发送5byte数据。

  4. B板打印当前频点及接收数据,接收完成后修改频点,每次频点步进加1,重新进入RX模式。

  5. A板打印当前频点及tx done中断,发送完成后修改频点,每次频点步进加1,重新进入TX模式。

  6. 重复步骤4、5直至遍历所有频点。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.3 API panchip_switch_prf

  1. 模式切换演示例程,从xn297模式切换为nrf模式。

  2. 复位芯片,B板输入命令’C’,进入xn297模式普通型RX模式。

  3. 复位芯片,A板输入命令’C’,进入xn297模式普通型TX模式,每次发送5byte数据。

  4. B板打印接收数据并切换为nrf接收模式,重新进入RX模式。

  5. A板打印tx done中断并切换为nrf接收模式,重新进入TX模式。

  6. B板打印接收数据,A板打印tx done中断。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.4 API panchip_prf_set_tx_pwr

  1. 功率档位切换演示例程,功率遍历范围为-45dbm~7dbm。

  2. 复位芯片,B板输入命令’D’,进入xn297模式普通型RX模式。

  3. 复位芯片,A板输入命令’D’,进入xn297模式普通型TX模式,每次发送5byte数据。

  4. B板打印接收数据并打印rssi,重新进入RX模式。

  5. A板打印tx done中断并切换tx功率,每次功率加一,重新进入TX模式。

  6. 重复步骤4、5直至遍历所有功率档位。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.5 API panchip_prf_set_trx_mode

  1. TX/RX模式切换演示例程。

  2. 复位芯片,B板输入命令’E’,进入xn297模式普通型RX模式。

  3. 复位芯片,A板输入命令’E’,进入xn297模式普通型TX模式,发送5byte数据。

  4. B板打印接收数据,并切换为TX模式。

  5. A板打印tx done中断并切换为RX模式。

  6. B板打印tx done,A板打印接收数据。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.6 API panchip_prf_set_addr

  1. 通信地址切换演示例程,特殊地址0xffffffff、0xffff0000、0xff000000、0x00000000收包差,0x55555555、0xAAAAAAAA收包均是crc error。

  2. 复位芯片,B板输入命令’F’,进入xn297模式普通型RX模式。

  3. 复位芯片,A板输入命令’F’,进入xn297模式普通型TX模式,发送5byte数据。

  4. B板打印接收数据,修改通信地址及长度,并重新进入RX模式。

  5. A板打印tx done中断,修改通信地址及长度,并重新进入TX模式。

  6. B板打印接收数据。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.7 API panchip_prf_set_data/panchip_prf_data_rec

  1. Payload数据设置及接收演示例程。

  2. 复位芯片,B板输入命令’G’,进入xn297模式普通型RX模式。

  3. 复位芯片,A板输入命令’G’,进入xn297模式普通型TX模式,发送1byte数据。

  4. B板打印接收数据,并重新进入RX模式。

  5. A板打印tx done中断,修改payload长度,并重新进入TX模式,发送64byte数据。

  6. B板打印接收数据,并重新进入RX模式。

  7. A板打印tx done中断,修改payload长度,并重新进入TX模式,发送255byte数据。

  8. B板、A板切换为nrf模式,重复步骤2~7(不需要复位芯片)。

  9. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.8 API panchip_prf_dev_set

  1. 频偏设置演示例程。

  2. 复位芯片,B板输入命令’H’,进入xn297模式普通型RX模式。

  3. 复位芯片,A板输入命令’H’,进入xn297模式普通型TX模式,发送1byte数据。

  4. B板打印接收数据,切换工作模式为nrf模式,并切换频偏为nrf频偏设置,重新进入RX模式。

  5. A板打印tx done中断,切换工作模式为nrf模式,并切换频偏为nrf频偏设置,重新进入TX模式。

  6. B板打印接收数据,A板打印tx done中断。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.9 API panchip_prf_rx_stop

  1. RX强制停止演示例程。

  2. 复位芯片,B板输入命令’I’,进入RX模式,RX timeout功能关闭。

  3. 延时100ms,强制停止RX。

  4. 触发timeout中断。

  5. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.10 API panchip_prf_carrier_start/stop

  1. 载波模式启动停止演示例程,遍历带内所有频点。

  2. 复位芯片,A板输入命令’I’,进入载波发送模式。

  3. 延时20ms,频点加1,重新启动载波发送模式。

  4. 频点遍历至2480后,停止载波发送模式并退出。

  5. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.11 API panchip_prf_read_rssi

  1. 读取RSSI演示例程,遍历带内所有频点。

  2. 复位芯片,B板输入命令’J’,进入普通型RX模式。

  3. 复位芯片,A板输入命令’J’,进入普通型TX模式,每次发送5byte数据。

  4. B板打印当前频点、RSSI及接收数据,接收完成后修改频点,每次频点步进加1,重新进入RX模式。

  5. A板打印当前频点及tx done中断,发送完成后修改频点,每次频点步进加1,重新进入TX模式。

  6. 重复步骤4、5直至遍历所有频点。

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.12 API panchip_prf_read_carrier_rssi

  1. 读取载波RSSI演示例程,遍历带内所有频点。

  2. 复位芯片,B板输入命令’K’,进入普通型RX模式。

  3. 复位芯片,A板输入命令’K’,进入载波发送模式。

  4. 延时20ms,重新启动载波发送模式。

  5. B板读取RSSI值,A板未发送载波时RSSI很小,发送载波后恢复正常值。

  6. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.13 API panchip_prf_set_ack_data

  1. 增强型模式下ACK Payload设置演示例程。

  2. 复位芯片,B板输入命令’L’,选择需要测试的ack payload长度,进入增强型RX模式。

  3. 复位芯片,A板输入命令’L’,进入增强型TX模式,发送1byte数据。

  4. B板RX转TX并发送ack数据,打印tx done中断。

  5. A板TX转RX,打印接收的ack数据及tx done中断。

  6. A板修改发送数据长度,步进为5,最大63。

  7. 重复步骤4、5、6 十次。

  8. 修改ack长度执行步骤2~7。

  9. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.14 API event_pid_err_fun

  1. 增强型模式下pid error演示例程。

  2. 复位芯片,B板输入命令’M’,进入增强型RX模式并设置ack payload固定长度5byte。

  3. 复位芯片,A板输入命令’M’,进入增强型TX模式,固定pid为0,发送5byte数据,重复发送10次。

  4. B板打印tx done及pid error中断。

  5. A板打印接收的ack数据及tx done中断。

  6. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.15 API panchip_prf_trx_trans_time

  1. 增强型TRX转换传输时间设置演示例程。

  2. 复位芯片,B板输入命令’N’,进入增强型RX模式并设置ack payload固定长度5byte。

  3. 复位芯片,A板输入命令’N’,进入增强型TX模式,固定pid为0,发送5byte数据,重复发送10次。

  4. B板和A板每次TRX转换传输时间在原有基础上增加5us,B板初始设置为120us,A板初始设置为80us。

  5. A板打印接收的ack数据及tx done中断。

  6. 逻辑分析仪分析A/B板子tx转rx或rx转tx中间时间间隔,每次间隔增大5us,最大与最小间隔45us

  7. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

​ :::{figure-md} ​ :align: center

image :::

4.2.16 2.4G普通型收包率演示

  1. 普通型收包率演示例程,TX端每次发送1000包数据,RX端打印接收包数。

  2. 复位芯片,B板输入命令’O’,进入普通型RX模式,选择接收的数据长度。

  3. 复位芯片,A板输入命令’O’,进入普通型TX模式,选择发送的数据长度。

  4. A板打印当前测试的次数,B板打印接收包数。

  5. 重复测试10次。

  6. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.17 2.4G普通型极限收包率演示

  1. 普通型极限收包率演示例程。

  2. 复位芯片,B板输入命令’P’,进入普通型RX模式,选择接收的数据长度。

  3. 复位芯片,A板输入命令’P’,进入普通型TX模式,选择发送的数据长度。

  4. A板一直处于发送状态,B板一直处在接收状态并每隔1s打印一次接收包数。

  5. 输出结果:

​ :::{figure-md} ​ :align: center

image

  1. ​ :::

4.2.18 2.4G增强型收包率演示

  1. 增强型收包率演示例程,TX端每次发送1000包数据,RX端打印接收包数。

  2. 复位芯片,B板输入命令’Q’,进入增强型RX模式,选择发送的ack的数据长度。

  3. 复位芯片,A板输入命令’Q’,进入增强型TX模式,选择发送的数据长度。

  4. A板打印当前测试的次数及收到的ack包数,B板打印接收包数。

  5. 重复测试10次。

  6. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

4.2.19 2.4G增强型极限收包率演示

  1. 增强型极限收包率演示例程,PHY设置为2M。

  2. 复位芯片,B板输入命令’R’,进入增强型RX模式,选择发送的ack的数据长度,长度选择为0时进入tx noack模式。

  3. 复位芯片,A板输入命令’R’,进入增强型TX模式,选择发送的数据长度。

  4. A板一直处于发送状态,B板一直处在接收状态并每隔1s打印一次接收包数。

  5. 输出结果:

​ :::{figure-md} ​ :align: center

image :::

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%