00_normal 普通型收发例程¶
1. 简介¶
本例程演示PAN211x普通(单向)通信功能,Tx发射数据,Rx接收数据。
2. 应用代码说明¶
2.1 发射应用代码¶
TX端设置为发射模式,间隔500ms发送一次数据, 流程如下:
PAN211_Init()
初始化芯片,从DeepSleep切换到STB3状态,期间写入应用参数并校准。在发射之前清除中断
PAN211_ClearIRQFlags
调用
PAN211_SendPacket
发送数据PAN211_GetIRQFlags()
获取中断标志,如果发送成功则会有RF_IT_TX_IRQ
标志在发送结束后使用
PAN211_ClearIRQFlags
清除中断
2.2 接收应用代码¶
RX端设置为接收模式,轮询是否有数据接收到,流程如下:
PAN211_Init()
初始化,从DeepSleep切换到STB3状态,期间写入应用参数并校准。在接收之前清除中断
PAN211_ClearIRQFlags
调用
PAN211_RxStart
开始接收轮询
PAN211_GetIRQFlags()
获取中断标志,如果接收成功则会有RF_IT_RX_IRQ
标志使用
PAN211_ReadFifo
读取数据在接收结束后使用
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,4线SPI,IIC接口¶
用户可以通过修改pan211_port.h
中的INTERFACE_MODE
宏定义来切换接口模式。
3线SPI模式:
#define INTERFACE_MODE USE_SPI_3LINE
4线SPI模式:
#define INTERFACE_MODE USE_SPI_4LINE
IIC模式:
#define INTERFACE_MODE USE_I2C
5. 例程演示¶
例程位置:
01_SDK/example/00_normal
修改参数:
确保pan211_.h
中的EASY_RF
宏定义为1,即#define EASY_RF 1
,可使用配置导出工具替换对应工程的./src/easy_reg.h
文件来配置参数。
使用步骤:
找到两块PAN211x开发板,分别作为Tx端和Rx端。
用Type-C数据线供电
用跳线帽连接电源跳线P9。
将电源切换开关S1切换至“USB”端。
使用串口模块连接到UART调试引脚P8。
分别打开
tx
和rx
工程,编译后下载到两个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