好文档 - 专业文书写作范文服务资料分享网站

实验2 利用点对点通讯实现无线串口

天下 分享 时间: 加入收藏 我要投稿 点赞

实验2 利用点对点通讯实现无线串口 【实验目的】

在实验1建立无线通讯的基础上,实现无线串口通讯。 掌握无线发送和接收数据的方法。 掌握串口接收和发送数据的方法。 【实验内容】 配置RF参数;

两个CC2530节点建立无线通讯,实现无线串口通讯。 【实验原理】

一、Basic RF 参数配置 同实验1 二、无线数据发送:

1. 创建一个buffer,把数据放入其中 2. 调用basicRfSendPacket()函数发送 三、无线数据接收:

1. 通过basicRfPacketIsReady()函数来检查是否收到一个新的数据包。 2. 调用basicRfReceive()函数,把收到的数据复制到buffer中。 四、串口数据发送

1. 创建一个buffer,把数据放入其中 2. 调用halUartWrite()函数发送 五、串口数据接收 1. 通过调用RecvUartData()函数来接收数据,并以数据长度来判断是否有收到数据。 六、本例实现功能:

一个PC串口连接到一个使用本应用实例的ZigBee设备来收发数据,同样另一个PC串口连接到另一个使用本应用实例的ZigBee设备来收发数据,实现两个串口以无线方式进行双工通讯。本实验演示了以ZigBee设备来实现串口以无线方式进行双工通讯的方法。 连接如图2-1所示:

图2-1 无线串口连接图

【实验步骤】

1.打开工作空间“...\\基于BasciRF的实训\\ 2 点对点无线串口实验\\Project\\ uart_rf.eww” 2.参照实验1建立无线通讯的方法,进行参数配置,编译生成两个可建立无线通讯的代码。 分别作以下设置后生成代码: /*****点对点通讯地址设置******/

#define RF_CHANNEL 20 // 频道 11~26 #define PAN_ID 0x1A5B //网络id #define MY_ADDR 0x1015 // 本机模块地址 #define SEND_ADDR 0xAC3A //发送地址 /**************************************************/ /*****点对点通讯地址设置******/

#define RF_CHANNEL 20 // 频道 11~26 #define PAN_ID 0x1A5B //网络id #define MY_ADDR 0xAC3A //发送地址 /**************************************************/ /*****点对点通讯地址设置******/

#define RF_CHANNEL 20 // 频道 11~26 #define PAN_ID 0x1A5B //网络id #define MY_ADDR 0xAC3A // 本机模块地址 #define SEND_ADDR 0x1015 //发送地址 /**************************************************/ 注意:如果有多组同时进行试验,每组间的RF_CHANNEL和PAN_ID至少要有一个参数不同;如果多组间的RF_CHANNEL和PAN_ID都一样,会造成信号串扰。

3.下载代码

把编译生成的两个代码分别下载到两个节点模块中。 4.运行

两个节点模块分别接到PC机串口,串口的波特率设置为38400, 模块 上电。

一个串口发送的数据,在另一个串口就能完整地显示,如图2-2所示:

图2-2无线串口实验结果

【实验相关代码】

主文档uart_rf.c中的相关代码:

/*****************点对点通讯地址设置********************/ #define RF_CHANNEL 20 // 频道 11~26 #define PAN_ID 0x1379 //网络id #define MY_ADDR 0x1234 // 本机模块地址 #define SEND_ADDR 0x5678 //发送地址 /*******************************************************/ static basicRfCfg_t basicRfConfig;

/**************************************************/ // 无线RF初始化 void ConfigRf_Init(void) {

basicRfConfig.panId = PAN_ID; //zigbee的ID号 设置

basicRfConfig.channel = RF_CHANNEL; //zigbee的频道设置

basicRfConfig.myAddr = MY_ADDR; //设置本机地址 basicRfConfig.ackRequest = TRUE; //应答信号 while(basicRfInit(&basicRfConfig) == FAILED); //检测zigbee的参数是否配置成功 basicRfReceiveOn(); // 打开RF }

/********************MAIN************************/ void main(void) { uint16 len = 0;

halBoardInit(); //模块相关资源的初始化 ConfigRf_Init(); //无线收发参数的配置初始化 halLedSet(3); halLedSet(4); while(1) {

len = RecvUartData(); // 接收串口数据 if(len > 0) { halLedToggle(3); // 绿灯取反,无线发送指示 //把串口数据通过zigbee发送出去

basicRfSendPacket(SEND_ADDR, uRxData,len); } if(basicRfPacketIsReady()) //查询有没收到无线信号 {

halLedToggle(4); // 红灯取反,无线接收指示 //接收无线数据 len = basicRfReceive(pRxData, MAX_RECV_BUF_LEN, NULL); //接收到的无线发送到串口数 halUartWrite(pRxData,len); } } } /************************main end

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

【思考题】

1. 掌握无线发送和接收的方法。 2. 掌握串口接收和发送的方法。 3. 本例两个串口的波特率相同(都为38400),如果两个串口的波特率不相同,能进行通讯吗?如果能,该如何实现?

4. 如果数据在无线发送时要进行加密,接收到无线数据后进行相应的解密,在软件上该如何实现?

实验2 利用点对点通讯实现无线串口

实验2利用点对点通讯实现无线串口【实验目的】在实验1建立无线通讯的基础上,实现无线串口通讯。掌握无线发送和接收数据的方法。掌握串口接收和发送数据的方法。【实验内容】配置RF参数;两个CC2530节点建立无线通讯,实现无线串口通讯。【实验原理】一、BasicRF参数配置同实验1二、无线数据发送:<
推荐度:
点击下载文档文档为doc格式
7ehzx15e7y0cqsj0v4ss
领取福利

微信扫码领取福利

微信扫码分享