无线开关LED灯.ppt
上传人:天马****23 上传时间:2024-09-11 格式:PPT 页数:34 大小:2.8MB 金币:10 举报 版权申诉
预览加载中,请您耐心等待几秒...

无线开关LED灯.ppt

无线开关LED灯.ppt

预览

免费试读已结束,剩余 24 页请下载文档后查看

10 金币

下载此文档

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

目录实训目的目录实训内容目录实训原理实训原理图2.1BasicRF软件结构◇硬件层是实现数据传输的基础,肯定要放在最底层。◇硬件抽象层包含访问无线接收功能,以及开发板上的TIMER、GPIO、UART、ADC、LCD、buttons等外设功能。◇基本无线传输层提供一种简单双向无线通信协议。◇应用层是用户编写代码的地方,可调用封装好的BasicRF和HAL的函数,实现不同的应用。CC2530BasicRF文件结构如图2.2所示,图2.2CC2530BasicRF文件结构BasicRF操作包括启动、发送、接收三个环节。1.启动启动过程包括:初始化开发板的硬件外设和配置I/O端口,设置无线通讯的网络ID、信道、接收和发送模块地址、安全加密等参数。(1)创建basicRfCfg_t数据结构。在basic_rf.h文件上可以找到basicRfCfg_t数据结构的定义。typedefstruct{uint16myAddr;//本机地址,取值范围0x0000~0xffff,作为识别本模块的地址uint16panId;//网络ID,取值范围0x0000~0xffff,要建立通讯此参数必须一致uint8channel;//通信信道,取值范围11~26,要建立通讯此参数必须一致uint8ackRequest;//应答信号#ifdefSECURITY_CCM//是否加密,预定义时取消了加密uint8*securityKey;uint8*securityNonce;#endif}basicRfCfg_t;注意:首先要确定两个通讯模块的网络ID和通信信道要一致,其次设置各模块的识别地址,即模块的地址或编号。(2)为basicRfCfg_t型结构体变量basicRfConfig填充部分参数。在voidmain(void)函数中有如下3行代码,就是为basicRfConfig数据结构部分变量赋值的。basicRfConfig.panId=PAN_ID;//宏定义:#definePAN_ID0x2007basicRfConfig.channel=RF_CHANNEL;//宏定义:#defineRF_CHANNEL25basicRfConfig.ackRequest=TRUE;//宏定义:#defineTRUE1(3)调用halBoardInit()函数,对硬件外设和I/O端口进行初始化,voidhalBoardInit(void)函数在hal_board.c文件中。(4)调用halRfInit()函数,打开射频模块,设置默认配置选项,允许自动确认和允许随机数产生。2.发送创建一个buffer,把数据放入其中,调用basicRfSendPacket()函数发送数据。在该工程中,light_switch.c文件中的appSwitch()函数是用来发送数据的,appSwitch()函数代码如下,请注意删除了液晶显示代码。staticvoidappSwitch(){pTxData[0]=LIGHT_TOGGLE_CMD;//发送的数据放到buffer中(即数组pTxData)basicRfConfig.myAddr=SWITCH_ADDR;//本机地址if(basicRfInit(&basicRfConfig)==FAILED){//初始化HAL_ASSERT(FALSE);}basicRfReceiveOff();//关闭接收模式,节能while(TRUE){if(halButtonPushed()==HAL_BUTTON_1){//调用按键函数basicRfSendPacket(LIGHT_ADDR,pTxData,APP_PAYLOAD_LENGTH);halIntOff();//关中断halMcuSetLowPowerMode(HAL_MCU_LPM_3);//WillturnonglobalhalIntOn();//开中断}}}(1)第2行,把要发送的数据LIGHT_TOGGLE_CMD(宏定义该值为1)放到buffer中,数组pTxData就是发送的buffer,即把要发送的数据存放到该数组中。(2)第3行,为basicRfCfg_t型结构体变量basicRfConfig.myAddr赋值,宏定义SWITCH_ADDR为0x2520,即发射模块的本机地址。(3)第4行,调用basicRfInit(&basicRfConfig)初始化函数,负责调用halRfInit(),配置参数,设置中断等。在basic_rf.c代码中可以找到uint8basicRfInit(basicRfCfg_