rf_rx例程¶
2 环境准备¶
Board: PAN2628b1_evb两块(另一块烧录rf_tx程序)
Micro USB线 用于供电和查看串口打印Log
硬件接线:
将 J19 开关拔至TX侧,将P3_1与UART的TX引脚相连
4 演示说明¶
PAN2628b1_evb接收数据,可以通过串口打印出接收的状态。
下面对使用XN297L私有XN297L私有2.4G协议进行数据发送时的不同配置示例进行说明,使用24L01私有2.4G协议的示例效果一致,不再额外说明。
4.1 普通工作模式¶
AckPayload不使能(RF_APL_DISABLE), DynamicPayload不使能(RF_DPL_DISABLE)
参数配置
序号
参数配置
参数说明
1
RF_CHIPMODE_XN297
xn297芯片模式
2
RF_WORKMODE_NORMAL
普通型工作模式
3
RF_APL_DISABLE
不使能ackpayload
4
RF_DPL_DISABLE
不使能dynamic payload
过程说明
发送端发送一包数据后,等待发送完成中断置位,就表示发成功,硬件上没有重发机制;
接收端收到一包数据后,接收完成中断会置位,用户即可读取接收到的数据。
发送端成功发送64字节长度的数据
TxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1
TxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2
接收端成功接收64字节长度的数据
RxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1
RxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2
4.2 增强型工作模式1¶
参数配置
序号
参数配置
参数说明
1
RF_CHIPMODE_XN297
xn297芯片模式
2
RF_WORKMODE_ENHANCE
增强型工作模式
3
RF_APL_DISABLE
不使能ackpayload,
回复ack时不带用户数据4
RF_DPL_DISABLE
不使能dynamic payload
过程说明
发送端发送一包数据后,必须等到接收端回复的ack包后,才表示发送成功;
否则会按用户设定的发送次数继续发送直到接收到ack包,或者达到最达发送次数才会停止发送。
另外,由于动态负载长度未使能,发送端和接收端必须设定相同的数据长度才能正常通信。
Rx
与Tx
之间数据发送的流程如下:发送端成功发送64字节长度的数据
TxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1
TxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2
接收端成功接收64字节长度的数据
RxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1
RxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2
4.3 增强型工作模式2¶
参数配置
序号
参数配置
参数说明
1
RF_CHIPMODE_XN297
xn297芯片模式
2
RF_WORKMODE_ENHANCE
增强型工作模式
3
RF_APL_ENABLE
使能ackpayload,
回复ack时可带用户数据4
RF_DPL_DISABLE
不使能dynamic payload
过程说明
发送端发送一包数据后,必须等到接收端回复的ack数据包后,才表示发送成功;
否则会按用户设定的发送次数继续发送直到接收到ack数据包,或者达到最达发送次数才会停止发送。
另外,由于动态负载长度未使能,发送端和接收端必须设定相同的数据长度才能正常通信。
Rx
与Tx
之间数据发送的流程如下:发送端成功发送64字节长度的数据
TxLen[32]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1
RxLen[64]: E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8
TxLen[32]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2
RxLen[32]: E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9
接收端成功接收64字节长度的数据
RxLen[64]: E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1 E1
TxLen[64]: E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8 E8
RxLen[64]: E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2 E2
TxLen[64]: E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9 E9
4.4 增强型工作模式3¶
参数配置
序号
参数配置
参数说明
1
RF_CHIPMODE_XN297
xn297芯片模式
2
RF_WORKMODE_ENHANCE
增强型工作模式
3
RF_APL_ENABLE
使能ackpayload,
回复ack时可带用户数据4
RF_DPL_ENABLE
使能dynamic payload,
发送端可以发送可变长包,
接收端可以接收可变长包过程说明
发送端发送一包数据后,必须等到接收端回复的ack数据包后,才表示发送成功;
否则会按用户设定的发送次数继续发送直到接收到ack数据包,或者达到最达发送次数才会停止发送。
另外,由于使能动态负载,发送端和接收端不必设定相同的数据长度才能正常通信。
Rx
与Tx
之间数据发送的流程如下:修改发送端代码中的RF_TX_BUF_SIZE,验证动态负载(可变长包)功能:
#define RF_TX_BUF_SIZE 35
发送端成功发送35字节长度的数据,并接收到接收端回复的64字节数据
TxLen[35]: 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D RxLen[64]: 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F
TxLen[35]: 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E RxLen[64]: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
接收端成功接收35字节长度的数据,并回复64字节数据给发送端
RxLen[35]: 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D 1D TxLen[64]: 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F 2F
RxLen[35]: 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E 1E TxLen[64]: 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30
注:
与上一节内容对比,当DynamicPayload
使能时,允许发送端的发送缓冲区长度RF_TX_BUF_SIZE(31)
小于Rx
端的接收缓冲区长度RF_RX_BUF_SIZE(32)
,可以看到接收端正确接收到了长度为31
字节的数据。
5 开发说明¶
用户只需配置gRfConfig中的成员,即可实现上以上各个功能的验证过程。
RFConfig_t xdata gRfConfig =
{
/*.Channel = */ 2418,
/*.TxPower = */ 7,
/*.DataRate = */ RF_DR_1Mbps,
/*.ChipMode = */ RF_CHIPMODE_XN297,
/*.WorkMode = */ RF_WORKMODE_ENHANCE,
/*.EnAPL = */ ENABLE,
/*.EnDPL = */ ENABLE,
/*.EnTxNoAck = */ DISABLE,
/*.EnWhite = */ ENABLE,
/*.Crc = */ RF_CRC_2BYTE,
/*.AddrWidth = */ RF_ADRESS_SIZE,
/*.TRxAddr = */ {0x10, 0x22, 0x55, 0x0F, 0x71},
/*.RxTimeoutUs = */ 1000,
/*.TxSetupTimeUs = */ 200,
/*.TxBuf = */ {0},
/*.RxBuf = */ {0},
/*.TxLen = */ 0,
/*.RxLen = */ 0,
};
RF参数初始化
APP_RfInit(&gRfConfig);
6 RAM/Flash资源使用情况¶
Program Size: data=40.1 xdata=127 const=57 code=6233