《智能产品设计与应用》课件-基于BasicRF的点对点无线通信原理与应用_第1页
《智能产品设计与应用》课件-基于BasicRF的点对点无线通信原理与应用_第2页
《智能产品设计与应用》课件-基于BasicRF的点对点无线通信原理与应用_第3页
《智能产品设计与应用》课件-基于BasicRF的点对点无线通信原理与应用_第4页
《智能产品设计与应用》课件-基于BasicRF的点对点无线通信原理与应用_第5页
已阅读5页,还剩20页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

智能产品设计与应用基于BasicRF的点对点无线通信案例导入01/PART

ONE基于BasicRF的点对点无线通信BasicRF由TI公司提供,它包含了IEEE802.15.4标准的数据包的收发。这个协议只是用来演示无线设备是如何进行数据传输的,不包含完整功能的协议。但是它采用了与802.15.4MA兼容的数据包结构及ACK包结构,其功能限制如下:不提供“多跳”、“设备扫描”及Beacon。不提供不同种的网络设备,如协调器、路由器等。所有节点同级,只实现点对点传输。传输时会等待信道空闲,但不按802.15.4CSMA-CA要求进行两次CCA检测。不重传数据。简言之,BasicRF功能较为简单,但可用来进行无线设备数据传输的入门学习。BasicRF概述基于BasicRF的点对点无线通信BasicRF软件包主要有四个部分:硬件层:HardwareLayerA硬件抽象层:HardwareAbstractionLayer基本无线传输层:BasicRFLayer应用层:AppliactionBasicRF只是简单的点对点无线通信协议,不具备“多跳”、“设备扫描”功能,不提供多种网络设备,如协调器,所有的节点为同一等级,只能实现点对点的数据传输,传输时会等待信道空闲,但不支持数据重传。BasicRF概述基于BasicRF的点对点无线通信BasicRF概述基于BasicRF的点对点无线通信BasicRF的应用开发要点BasicRF软件包看起来比较复杂,而实际上BasicRF相关的核心要点,有四个部分:无线参数的配置。无线模块的初始化。无线数据的发送。无线数据的接收。需要配置四个无线参数:本机地址、目标地址、PandID、通信信道。注意:两个通信节点的PandID和通信信道必须一致。基于BasicRF的点对点无线通信BasicRF核心函数介绍1.BasicRF无线数据发送:basicRfSendPacket()uint8basicRfSendPacket(uint16destAddr,uint8*pPayload,uint8length)功能:将待发送数据缓冲区中指定长度的数据发送给目标地址的节点。返回值:SUCCESS:数据发送成功。 FAILED:数据发送失败。参数:destAddr:发送的目标地址。

pPayload:待发送数据的缓冲区指针。 length:待发送数据的长度。基于BasicRF的点对点无线通信BasicRF核心函数介绍2.BasicRF判断是否已收到无线数据:basicRfPacketlsReady()uint8basicRfPacketIsReady(void)功能:查询无线模块是否成功接收到数据。返回值:返回TRUE:表示已成功接收到无线数据,有数据可以读取。基于BasicRF的点对点无线通信BasicRF核心函数介绍3.BasicRF无线数据读取:basicRfReceive()uint8basicRfReceive(uint8*pRxData,uint16len,int16*pRssi)功能:在已经接收到的无线数据中,读取指定长度的数据到数据接收缓冲区中。返回值:实际读取到的数据长度。参数:pRxData:存放读取数据的缓冲区指针。

len:需要读取数据的长度。

pRssi:保持上一次数据接收包信息变量位置,一般填NULL。基于BasicRF的点对点无线通信staticvoidappSwitch(){

//BasicRF

初始化

basicRfConfig.myAddr=SWITCH_ADDR;

if(basicRfInit(&basicRfConfig)==FAILED){

HAL_ASSERT(FALSE);}//KeepReceiveroffwhennotneededtosavepowerbasicRfReceiveOff();//Mainloopwhile(TRUE){if(halButtonPushed()==HAL_BUTTON_1){

bsicRfSendPacket(LIGHT_ADDR,pTxData,APP_PAYLOAD_LENGTH);//PutMCUtosleep.ItwillwakeuponjoystickinterrupthalIntOff();halMcuSetLowPowerMode(HAL_MCU_LPM_3);//Willturnonglobal//interruptenablehalIntOn();}}}基于BasicRF的点对点无线通信选择左边窗口application下的light_switch.c打开,找到main()函数里的以下代码:

//被点灯的板打开此函数(appLight)appLight();//作为开关板打开此函数(appSwitch)appSwitch();基于BasicRF的点对点无线通信通信任务及结果给两块开发板上电,按下A开发板的S1,B开发板的D1会被点亮。智能产品设计与应用主讲教师:肖俊芳基于BasicRF的点对点无线通信应用案例导入01/PART

ONE基于BasicRF的点对点无线通信应用使用2块CC2530模块,进行无线数据通信A模块按下k1,发送数据0x02给B模块,B模块收到数据后LED1状态取反。B模块按下k1,发送数据0x02给A模块,A模块收到数据后LED1状态取反。RF频道设置为25,网络ID为0x2007;两个模块地址分别为:0x2520和0xBEEF。任务:点对点无线通信CC2530模块ACC2530模块B基于BasicRF的点对点无线通信应用任务:点对点无线通信A模块按下K1无线数据0x02B模块LED1取反发送接收B模块按下K1无线数据0x02A模块LED1取反发送接收基于BasicRF的点对点无线通信应用参数配置、初始化硬件PANID、信道、本机地址、目标地址---结构体如何把数据发送出去?发给谁?发什么?如何把接收到的数据准确的取出来?如何知道新数据到来如何取出新数据任务:点对点无线通信基于BasicRF的点对点无线通信应用任务:点对点无线通信一、无线参数配置1.通信频道和网络ID#defineRF_CHANNEL25//RF频道#definePAN_ID0x2007//网络ID2.点对点通讯地址设置开始//#defineMY_ADDR0x2520//本机模块地址//#defineSEND_ADDR0xBEEF//发送模块地址#defineSEND_ADDR0x2520//本机模块地址#defineMY_ADDR0xBEEF//发送模块地址3.端口引脚定义#defineLED1P1_0//led1#definek1P0_14.数据定义staticbasicRfCfg_tbasicRfConfig;//这个需要unsignedchardat_send;//存放通过无线模块要发送的数据unsignedchardat_recv;//存放通过无线模块接收的数据typedefstruct{uint16myAddr;//本机地址uint16panId;//网络ID,与其他模块一致uint8channel;//通信信道,一致uint8ackRequest;//应答信号#ifdefSECURITY_CCM//是否加密uint8*securityKey;uint8*securityNonce;#endif}basicRfCfg_t;basic_rf.h文件通过basicRfInit(basicRfCfg_t*pRfConfit)函数,将参数写入到无线模块中基于BasicRF的点对点无线通信应用任务:点对点无线通信二、无线模块初始化voidConfigRf_Init(void){basicRfConfig.panId=PAN_ID;//网络

0x2007basicRfConfig.channel=RF_CHANNEL;//RF频道25basicRfConfig.myAddr=MY_ADDR;//本机地址0xBEEFbasicRfConfig.ackRequest=TRUE;#ifdefSECURITY_CCMbasicRfConfig.securityKey=key;#endifwhile(basicRfInit(&basicRfConfig)==FAILED);//将参数写入到无线模块中。basicRfReceiveOn();//开启无线模块的数据接收功能}hal_rf.cuint8halRfInit(void)//{FRMCTRL0|=(AUTO__ACK|AUTO__CRC)TXFILTCFG=0x09;AGCCTRL1=0x15;FSCAL1=0x00halPaLnaInit();//自动确认和允许随机数产生halRfEnableRxInterrupt();//使能接收中断returnSUCCESS;}该函数初始化射频无线模块,设置默认配置选项,允许自动确认和允许随机数产生。在开发中,直接调用该函数来初始化无线模块,不需要关注该函数的实现细节。基于BasicRF的点对点无线通信应用任务:点对点无线通信三、无线数据发送先创建一个字节数组作为数据发送的缓冲区,将要发送的内容置于数组之中,然后调用无线数据发送函数进行发送即可。uint8

basicRfSendPacket(

uint16

destAddr,

//发送的目标地址

uint8*

pPayload,

//发送内容的数组

uint8

length//发送数据的长度);

函数执行成功返回:SUCCESS。函数执行失败返回:FAILED。基于BasicRF的点对点无线通信应用任务:点对点无线通信四、无线数据接收basicRfPacketIsReady()查询是否收到新的数据包,如果有新的数据包,则返回TRUE。新的数据包信息会存放在basicRfRxInfo_t类型结构体的rxi中。basicRfReceive()把接收到的数据复制到自定义的缓冲区中,然后进行使用。uint8

basicRfReceive(

uint8*

pRxData,

//数据接收缓冲区

uint8

len,

//要接收的数据长度

int16*

pRssi);

//无线信号强度函数执行成功返回:接收的字节数。了解即可基于BasicRF的点对点无线通信应用1.通信频道和网络ID设置K1按下?发送数据basicRfSendPacket(SEND_ADDR,&dat_recv,1);如果收到数据?取出数据

basicRfReceive(&dat_recv,1,NULL);dat_recv==0x02?LED1=~LED1;main

IO端口初始化(按键和LED灯)2.点对点通信地址设置(发送地址和接收地址)4.数据定义:定义存放发送数据、接收数据的变量3.端口引脚定义,K1,LED1basicRfPacketIsReady()==true判断收到的数据是否是0x02?基于BasicRF的点对点无线通信应用使用2块CC2530模块,进行无线数据通信A模块按下k1,发送数据0x02给B模块,B模块收到数据后LED1状态取反。B模块按下k1,发送数据0x02给A模块,A模块收到数据后LED1状态取反。RF频道设置为25,网络ID为0x2007;两个模块地址分别为:#0x2520和0x

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论