06_multipipe 多通道地址例程¶
1. 简介¶
本例程在00_normal
例程的基础上,增加了多通道地址功能。PAN211x共有6个通道可以使用,每个通道可以绑定不同的地址。其中通道0,1可以任意设置(5bytes)。通道2,3,4,5的高4 bytes默认与通道1相同,仅最低字节可以更改。接收端收到数据后,可以通过读取对应的寄存器读出哪个通道接收到。
2. 应用代码说明¶
2.1. 地址填写说明¶
需要注意: 由于PAN211x的地址寄存器排列顺序为LSB->MSB。在Tx端的代码中
uint8_t AddressList[6][5] = {
{0xC0,0xCC,0xCC,0xCC,0xCC},
{0xC1,0xCC,0xCC,0xCC,0xCC},
{0xC2,0xCC,0xCC,0xCC,0xCC},
{0xC3,0xCC,0xCC,0xCC,0xCC},
{0xC4,0xCC,0xCC,0xCC,0xCC},
{0xC5,0xCC,0xCC,0xCC,0xCC},
};
实际上对应的各通道的地址(MSB->LSB)为:
Pipe0: 0xCC,0xCC,0xCC,0xCC,0xC0
Pipe1: 0xCC,0xCC,0xCC,0xCC,0xC1
Pipe2: 0xCC,0xCC,0xCC,0xCC,0xC2
Pipe3: 0xCC,0xCC,0xCC,0xCC,0xC3
Pipe4: 0xCC,0xCC,0xCC,0xCC,0xC4
Pipe5: 0xCC,0xCC,0xCC,0xCC,0xC5
用户可以通过PAN211_SetTxAddr
接口来修改发射地址。
2.2. 通道号读取¶
在Rx端的代码中,可以通过PAN211_GetRxPipeNum
接口来获取当前接收到的数据是哪个通道的。
u8 PipeNum = (u8)PAN211_GetRxPipeNum();
PAN211_ReadFifo(TRX_FIFO, RxBuf, 32);
printf("Rx[%d] on pipe %d\r\n", count++, PipeNum);
3. 例程演示¶
例程位置:
01_SDK/example/06_multipipe
修改参数:
pan211_.h
中的EASY_RF
宏定义为0时,可通过修改gRfConfig
结构体来配置参数。
pan211_.h
中的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[0] on addr 0
Tx[1] on addr 1
Tx[2] on addr 2
Tx[3] on addr 3
Tx[4] on addr 4
RX端日志:
CPU @ 64000000Hz
SPI-3LINE
Rx[0] on pipe 0
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[1] on pipe 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] on pipe 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] on pipe 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[4] on pipe 4
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