06_multipipe 多通道地址例程

1. 简介

本例程在基础通信例程(00_normal)的基础上,实现了多通道地址功能。PAN211x提供6个可用通道,每个通道可绑定不同的通信地址。其中:

  • 通道0和1:支持完全自定义的5字节地址

  • 通道2至5:仅支持修改最低字节,高4字节将自动与通道1保持一致 通过读取相应寄存器,接收端可识别数据来源的通道号。

2. 应用说明

2.1. 地址配置说明

地址配置注意事项

PAN211x的地址寄存器采用LSB->MSB排列顺序。以下示例代码:

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. 通道号获取

接收端可使用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文件来配置参数。

使用步骤:

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

  1. 用Type-C数据线供电

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

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

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

  5. 分别打开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