12_carrier_mode 载波发送例程¶
一、简介¶
本例程演示 PAN211 芯片的载波发送功能,用于测试发射功率和频率精度。
二、条件说明¶
频点:2478MHz
芯片工作模式:PAN211_CHIPMODE_XN297
发送功率:9dBm
发送时间:10秒
SPI类型:3线SPI
工作模式:载波发送模式
三、接口(移植)实现¶
根据硬件实现以下配置:
SPI_CS引脚配置为推挽输出
SPI_SCK引脚配置为推挽输出
SPI_DATA引脚配置为推挽输出或输入模式,低功耗模式下需配置为输入模式并启用上拉电阻
#define SPI_CS_HIGH CS_PIN = 1 /* 将SPI_CS引脚设置为高电平 */
#define SPI_CS_LOW CS_PIN = 0 /* 将SPI_CS引脚设置为低电平 */
#define SPI_SCK_HIGH SCK_PIN = 1 /* 将SPI_SCK引脚设置为高电平 */
#define SPI_SCK_LOW SCK_PIN = 0 /* 将SPI_SCK引脚设置为低电平 */
#define SPI_DATA_HIGH DATA_PIN = 1 /* 将SPI_DATA引脚设置为高电平 */
#define SPI_DATA_LOW DATA_PIN = 0 /* 将SPI_DATA引脚设置为低电平 */
#define SPI_DATA_STATUS DATA_PIN /* 读取SPI_DATA引脚状态 */
#define SPI_DATA_OUTPUT GPIO_SetModeByPin(P4_3, GPIO_MODE_OUTPUT) /* 配置SPI_DATA引脚为输出模式 */
#define SPI_DATA_INPUT GPIO_SetModeByPin(P4_3, GPIO_MODE_INPUT) /* 配置SPI_DATA引脚为输入模式 */
根据实际使用的MCU修改SPI接口初始化代码:
/**
* @brief 初始化PAN211 3线SPI接口
* @param 无
* @return 无
* @note 该函数配置SPI_SCK、SPI_CS和SPI_DATA引脚为GPIO模式,并设置为输出模式
* @note PAN211没有独立中断引脚,可开启SPI_DATA引脚中断复用功能
* @note PAN216具有独立中断引脚,可通过P4_5来检测PAN216的中断事件
*/
void BSP_3LineSPIInit(void)
{
CLK_AHBPeriphClockCmd(CLK_AHBPeriph_GPIO, ENABLE);
// 将引脚配置为GPIO模式,以软件SPI实现
SYS_ConfigMFP(P4_0, SYS_MFP_GPIO); // SPI_SCK
SYS_ConfigMFP(P4_1, SYS_MFP_GPIO); // SPI_CS
SYS_ConfigMFP(P4_3, SYS_MFP_GPIO); // SPI_DATA
SYS_ConfigMFP(P4_5, SYS_MFP_GPIO); // IRQ引脚,PAN211未使用
GPIO_SetModeByPin(P4_1, GPIO_MODE_OUTPUT); // 配置SPI_CS为输出模式
GPIO_SetModeByPin(P4_0, GPIO_MODE_OUTPUT); // 配置SPI_SCK为输出模式
GPIO_SetModeByPin(P4_3, GPIO_MODE_OUTPUT); // 配置SPI_DATA为输出模式,后续根据时序需要设置为输入模式
GPIO_SetModeByPin(P4_5, GPIO_MODE_INPUT); // PAN211没有中断引脚,PAN216有中断引脚,配置为输入模式
P41 = 1; // SPI_CS置高,表示未选中
P40 = 0; // SPI_SCK置低,SPI时钟极性为低电平有效
P43 = 0; // SPI_DATA置低
GPIO_EnablePullupPath(P4, BIT3); // 将SPI_DATA引脚设置为输入模式,并启用上拉电阻
}
四、应用范例¶
配置为载波发送模式,在2402MHz频点上发送载波信号:
int main(void)
{
/* MCU 初始化 */
if (PAN211_Init() != 1) /* 初始化&校准 PAN211 芯片 */
{
printf("PAN211 init failed.\r\n");
while (1);
}
PAN211_ClearIRQFlags(0xFF); /* 清除所有PAN211中断标志 */
PAN211_SetChannel(2); /* 设置通道频率为2402MHz */
PAN211_SetTxPower(8); /* 设置发射功率为8dBm */
PAN211_StartCarrierWave(); /* 开始发送载波信号 */
BSP_DelayMs(10000); /* 发送载波信号持续10秒 */
PAN211_ExitCarrierWave(); /* 停止发送载波信号 */
while (1);
}
五、例程演示¶
使用步骤:
找到两块PAN211x开发板,作为测试设备。
用Type-C数据线供电。
用跳线帽连接电源跳线P9。
将电源切换开关S1切换至“USB”端。
将本例程烧录到开发板,然后将
19_realtime_rssi
例程烧录到另一块开发板。注意:两块开发板的频点必须一致。
打开串口调试助手,设置波特率为115200,数据位8位,无校验位,停止位1位,选择开发板的串口,点击连接。
当开发板发送载波时,可以从另外一块开发板的日志明显观察到实时RSSI值变大。
日志:
RSSI Dynamic Chart (dBm) - Current: -15 dBm
-14 | *
-19 | |*************************
-23 | ||||||||||||||||||||||||||
-28 | ||||||||||||||||||||||||||
-32 | ||||||||||||||||||||||||||
-36 | ||||||||||||||||||||||||||
-41 | ||||||||||||||||||||||||||
-45 | * ||||||||||||||||||||||||||
-49 | * | * ||||||||||||||||||||||||||
-54 |* * * | | |* *||||||||||||||||||||||||||
-58 || | | | | || *|||||||||||||||||||||||||||
-62 || | | **|* | * || ||||||||||||||||||||||||||||
-67 || | | |||| | | ||*||||||||||||||||||||||||||||
-71 || | | ||||*| |***|||||||||||||||||||||||||||||||
-75 ||**|**|*||||||*|||||||||||||||||||||||||||||||||||
+--------------------------------------------------
Old New
Statistics:
Current: -15 dBm | Max: -14 dBm | Min: -75 dBm | Range: 61 dB
Signal Quality: Excellent (>= -30 dBm)