CC2530无线通信丢包率测试 - 图文 联系客服

发布时间 : 星期二 文章CC2530无线通信丢包率测试 - 图文更新完毕开始阅读fc4afb0a915f804d2b16c1ae

嵌入式课程设计报告

开始 系统时钟和玩味设备初始化 NO RF初始化 YES SW1是否按下 YES NO 信道设置 是否按下SW2或SW4 SW2被按下 开启接收功能 发射功率设置 SW3被按下 发送数据包数量设置 是否接受到数据 发送速度设置 数据计算 YES 计 关闭接收功能 NO 是否按下SW4? 结果显示 NO 是否使能32K定时器 定时发送数据

图13流程图

18

嵌入式课程设计报告

附录

#include \#include \#include \#include \#include \#include \

#define RF_CHANNEL 25 // RF 使用信道25,其功率是2.4GHz #define PAN_ID 0x2011 //通信PANID #define SWITCH_ADDR 0x2530 //开关模块地址 #define LIGHT_ADDR 0xBEEF //灯模块地址 #define APP_PAYLOAD_LENGTH 1 //命令长度 #define LIGHT_TOGGLE_CMD 0 //命令数据 // 以下为状态的宏定义 #define IDLE 0 #define SEND_CMD 1 //角色的宏定义 #define NONE 0 #define SWITCH 1 #define LIGHT 2 #define APP_MODES 2 //按键的宏定义 #define HAL_BUTTON_1 1 #define HAL_BUTTON_2 2 #define HAL_BUTTON_3 3 #define HAL_BUTTON_4 4 #define HAL_BUTTON_5 5 #define HAL_BUTTON_6 6 static

uint8

pTxData[APP_PAYLOAD_LENGTH];

//

pRxData[APP_PAYLOAD_LENGTH]; //接收数据数组

19

嵌入式课程设计报告

static basicRfCfg_t basicRfConfig; //RF初始化

extern void halboardinit(void); //硬件的初始化函数为halboardinit extern void ctrPCA9554FLASHLED(uint8 led); //IIC灯控制函数 extern void ctrPCA9554LED(uint8 led,uint8 operation); extern uint8 halkeycmd(void); //获取按键值函数 #ifdef SECURITY_CCM //定义安全密钥 static uint8 key[]= {

0xc0, 0xc1, 0xc2, 0xc3, 0xc4, 0xc5, 0xc6, 0xc7, 0xc8, 0xc9, 0xca, 0xcb, 0xcc, 0xcd, 0xce, 0xcf, }; #endif

static void wanLight(); //灯应用处理函数 static void wanSwitch(); //开关应用处理函数

static uint8 wanSelectMode(void); //应用功能选择函数

/************************************************************************** * 函数名称:wanLight

* 功能描述:接收模式应用函数,初始化RF一些参数,接收另一个模块发送的控制命令,然后控制相应的LED灯

* 参 数:无 * 返 回 值:无

**************************************************************************/ static void wanLight() {

basicRfConfig.myAddr = LIGHT_ADDR; //设置灯应用函数接收模块的地址 if(basicRfInit(&basicRfConfig)==FAILED) //RF初始化 {

ctrPCA9554FLASHLED(5); //若RF初始化失败,则所有的LED5都将闪烁 } 165 basicRfReceiveOn(); //打开接收功能 // Main loop while (TRUE) {

while(!basicRfPacketIsReady()); //准备接收数据

20

嵌入式课程设计报告

if(basicRfReceive(pRxData, APP_PAYLOAD_LENGTH, NULL)>0) //如若满足条件,则接收数据

{

if(pRxData[0] == LIGHT_TOGGLE_CMD) //判断命令正确与否 {

ctrPCA9554FLASHLED(1); //关闭或打开LED1 } } } }

/************************************************************************** * 函数名称:wanSwitch

* 功能描述:发送模式应用函数,初始化发送模式RF,通过按下SW4向另一个模块发送控制命令。

* 参 数:无 * 返 回 值:无

**************************************************************************************************/

static void wanSwitch() {

pTxData[0] = LIGHT_TOGGLE_CMD; //向发送数据中写入命令

basicRfConfig.myAddr = SWITCH_ADDR; //设置开关应用发送模块的地址 if(basicRfInit(&basicRfConfig)==FAILED) //RF初始化 {

ctrPCA9554FLASHLED(5); //RF初始化失败,则所有的LED5闪烁 } 166 basicRfReceiveOff(); //关闭接收功能 // Main loop while (TRUE) {

if(halkeycmd() == HAL_BUTTON_4) //判断是否按下SW4 {

basicRfSendPacket(LIGHT_ADDR, pTxData, APP_PAYLOAD_LENGTH);//发送数据

21