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

01_normal_setup 普通型收发配置例程

1. 简介

本例程在00_normal例程的基础上进一步补充了非EASY_RF的配置功能。 另外对IOMUX功能也进行了说明。

2. 应用代码说明

2.1. 发射和接收流程

见上一个例程 00_normal的说明。

2.2. EASY_RF与非EASY_RF配置方式

与00_normal例程相比,本例程增加了EASY_RF配置选项,用户可以修改pan211.h中的EASY_RF定义来选择不同的配置方式。

2.2.1. EASY_RF方式

//pan211.h
#define EASY_RF 1

这种情况下,采用与00_normal例程相同的方式进行配置,上电以后,PAN211_Init()函数会自动根据easy_reg.h中的参数表进行初始化,用户无需再进行额外的参数配置操作。

2.2.2. 非EASY_RF方式

//pan211.h
#define EASY_RF 0

这种情况下,用户需要手动配置参数表,即gRfConfig结构体中的参数,然后调用PAN211_SetUpConfig,此函数会在PAN211x已经完成上电初始化的情况下,重新将参数表写入到PAN211x中,并进行校准,这一过程的时间会比较长,可达数十毫秒,不建议在频繁的操作中使用。

可修改的配置如下:

RFConfig_t gRfConfig =
{
    .Channel = 12, // 0 ~ 83 -> 2400MHz ~ 2483MHz
    .TxPower = PAN211_TXPWR_0dBm, // 0 ~ 9
    .DataRate = PAN211_DR_1Mbps, // 1Mbps, 2Mbps, 250Kbps
    .ChipMode = PAN211_CHIPMODE_XN297,// 297, FS01,FS32
    .EnWhite = true,   // false, true
    .Crc = PAN211_CRC_2byte, // disable, 1byte, 2byte, 3byte
    .TxLen = 32, // 1 ~ 128
    .RxLen = 32, // 1 ~ 128
    .TxAddrWidth = PAN211_WIDTH_5BYTES, // 2 ~ 5
    .TxAddr = {0xcc, 0xcc, 0xcc, 0xcc, 0xcc},
    .RxAddrWidth = PAN211_WIDTH_5BYTES, // 2 ~ 5
    .RxAddr = {
                true, {0xcc, 0xcc, 0xcc, 0xcc, 0xcc}, 
                false, {0}, 
                false, {0},
                false, {0},
                false, {0},
              },
    .Endian = PAN211_ENDIAN_BIG, // big, little
    .crcSkipAddr = false, // false, true
    .EnRxPlLenLimit = false, // false, true

    .WorkMode = PAN211_WORKMODE_NORMAL, // Normal
    .EnDPL = false,
    .EnTxNoAck = true,
    .EnManuPid = false,
    .TRxDelayTimeUs = 0, 
    .RxTimeoutUs = 0,
    .AutoDelayUs = 0,
    .AutoMaxCnt = 0,
    .TxMode = PAN211_TX_MODE_SINGLE,
    .RxMode = PAN211_RX_MODE_CONTINOUS,
};

注意: EASY_RF的两种配置方式本质上一样,这不属于芯片本身的属性,只是为了方便用户使用而提供的两种软件配置方式!

2.3. IOMUX功能

本例程还增加了IOMUX功能,IOMUX用于3线SPI和IIC接口模式下,将PAN211x的SDA引脚复用为中断输出引脚。

PAN211_EnableInterfaceMuxIRQ(true); 使能IOMUX功能。

PAN211_ConfigIT(RF_IT_TX_IRQ, true); 将TX中断输出到SDA引脚,即SDA引脚在TX中断触发时会输出低电平,否则为高电平。

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

3. 例程演示

例程位置:01_SDK/example/01_normal_setup

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[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