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

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_port.h中的EASY_RF宏定义为0时,可通过修改gRfConfig结构体来配置参数。

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

分别打开txrx工程,编译后下载到两个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