00_normal 普通型收发例程

1. 简介

本例程展示了PAN211x的普通型(单向)通信功能。通过一个简单的发射端(Tx)和接收端(Rx)示例,演示基本的数据收发操作。

2. 应用代码说明

2.1 发射端流程

TX端配置为发射模式,每隔500ms发送一次数据。具体流程如下:

  1. 调用PAN211_Init()初始化芯片:从DeepSleep切换至STB3状态,完成参数配置和校准

  2. 发送数据前清除中断标志:PAN211_ClearIRQFlags

  3. 调用PAN211_SendPacket发送数据包

  4. 通过PAN211_GetIRQFlags()检查发送状态,成功时会置位RF_IT_TX_IRQ标志

  5. 发送完成后清除中断标志:PAN211_ClearIRQFlags

2.2 接收应用代码

RX端设置为接收模式,轮询是否有数据接收到,流程如下:

  1. PAN211_Init()初始化,从DeepSleep切换到STB3状态,期间写入应用参数并校准。

  2. 在接收之前清除中断PAN211_ClearIRQFlags

  3. 调用PAN211_RxStart开始接收

  4. 轮询PAN211_GetIRQFlags()获取中断标志,如果接收成功则会有RF_IT_RX_IRQ标志

  5. 使用PAN211_ReadFifo读取数据

  6. 在接收结束后使用PAN211_ClearIRQFlags清除中断

2.3. IOMUX功能

本例程还增加了IOMUX功能,IOMUX用于3线SPI和IIC接口模式下,将PAN211x的SDA引脚复用为中断输出引脚,用户可以通过SDA引脚来检测是否触发了中断。

PAN211_EnableInterfaceMuxIRQ(true); 使能IOMUX功能。

PAN211_ConfigIT(RF_IT_TX_IRQ); 将TX中断输出到SDA引脚,即SDA引脚在TX中断触发时会输出低电平,否则为高电平。使用者可以将多个中断复用到SDA引脚,触发任意中断都会使SDA引脚输出低电平。清除中断标志后SDA引脚会恢复高电平。

while(!IRQ_DETECTED); 表示等待SDA引脚输出低电平,即TX中断触发。

3. 如何修改应用参数

应用参数比如频率、发射功率、速率等以参数表的形式存储在easy_reg.h中,用户可以根据自己的需求,使用配置导出工具生成对应的参数表,使用方法见《PAN211x 参数配置导出工具使用说明》。

PAN211_Init()会在初始化过程中将easy_reg.h中的参数表写入到PAN211中。

4. 如何切换3线SPI,IIC接口

用户可以通过修改pan211_port.h中的INTERFACE_MODE宏定义来切换接口模式。

3线SPI模式:

#define INTERFACE_MODE        USE_SPI_3LINE

IIC模式:

#define INTERFACE_MODE        USE_I2C

5. 例程演示

例程位置:

01_SDK/example/00_normal

修改参数:

确保pan211_port.h中的EASY_RF宏定义为1,即#define EASY_RF 1,可使用配置导出工具替换对应工程的./src/easy_reg.h文件来配置参数。

使用步骤:

找到两块PAN211x开发板,分别作为Tx端和Rx端。

  1. 用Type-C数据线供电

  2. 用跳线帽连接电源跳线P9。

  3. 将电源切换开关S1切换至“USB”端。

  4. 使用串口模块连接到UART调试引脚P8。

  5. 分别打开txrx工程,编译后下载到两个PAN211x开发板上。

TX端日志:

CPU @ 64000000Hz
SPI-3LINE
Tx[1]
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
Tx[2]
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
Tx[3]
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 

RX端日志:

CPU @ 64000000Hz
SPI-3LINE
Rx[1]:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
Rx[2]:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f 
Rx[3]:
00 01 02 03 04 05 06 07 08 09 0a 0b 0c 0d 0e 0f 10 11 12 13 14 15 16 17 18 19 1a 1b 1c 1d 1e 1f