小蜜蜂笔记
嵌入式开发与物联网应用教育践行者

【BasicRF国赛实训-2】基于BaiscRF点对点通信的串口收发(附全部源码与注释)

实训题目要求

选择2块国赛Zigbee模块或小蜜蜂的XMF09B国赛兼容板,在国赛提供的工程资源中进行基于BasicRF的程序设计,实现基于BasicRF无线点对点通信的串口数据透传,具体要求如下:
<1> 节点A 和节点B 的PANID设置为0x1234,通道号设置为17,节点地址自定义
<2> 在PC端使用“串口助手”工具,通过串口向节点A发送数据。节点A接收到串口数据后,将该数据通过RF无线发送给节点B。节点B接收到新的无线数据后,将该数据通过串口发送到PC端的另一个“串口助手”工具,并显示出来。
<3> 在PC端使用“串口助手”工具,通过串口向节点B发送数据。节点B接收到串口数据后,将该数据通过RF无线发送给节点A。节点A接收到新的无线数据后,将该数据通过串口发送到PC端的另一个“串口助手”工具,并显示出来。
<4> 串口的波特率使用默认的115200

参考资料:Zigbee模块XMF09B国赛兼容版资料汇总
参考资料:BasicRF点对点无线通信的应用开发核心要点
参考资料:BasicRf点对点与Z-Stack组网国赛官方提供API函数汇总

HEX烧写文件下载:基于BasicRF的串口收发-节点A
HEX烧写文件下载:基于BasicRF的串口收发-节点B

配置点对点无线通信的基本参数

#define RF_CHANNEL    17         // 频道 11~26
#define PAN_ID        0x1234     //网络id 
//节点A的地址信息
#define MY_ADDR       0x000a     //本机模块地址
#define SEND_ADDR     0x000b     //发送地址

//节点B的地址信息
//#define MY_ADDR     0x000b     //本机模块地址
//#define SEND_ADDR   0x000a     //发送地址

变量定义与函数声明

unsigned char dat_Recv[32];     //无线数据接收缓存
unsigned char dat_Send[32];     //串口数据发送缓存
unsigned char len = 0;          //串口数据接收长度

void Delay(unsigned int t);     //普通延时函数
void Recv_UR_Data();            //串口数据接收处理函数
void Recv_RF_Data();            //无线数据接收处理函数

主函数的实现

/********************MAIN************************/
void main(void)
{
    halBoardInit();//选手不得在此函数内添加代码
    ConfigRf_Init();//选手不得在此函数内添加代码
    
    while(1)
    {
    /* user code start */
      Recv_UR_Data(); //串口数据接收处理
      Recv_RF_Data(); //无线数据接收处理
      Delay(200);
    /* user code end */
    }
}

串口数据接收处理函数的实现

void Delay(unsigned int t)
{
  while(t--);
}

void Recv_UR_Data()
{
  len = halUartRxLen();
  if(len != 0)
  {
    dat_Send[0] = len;
    halUartRead(&dat_Send[1], len);
    len = 0;

    basicRfSendPacket(SEND_ADDR, dat_Send, 32);
  }
}

无线数据接收处理函数的实现

void Recv_RF_Data()
{
  if(TRUE == basicRfPacketIsReady())    //接收到新的无线数据
  {
    basicRfReceive(dat_Recv, 32, NULL);      
    halUartWrite(&dat_Recv[1], dat_Recv[0]);
  }
}

特别说明:
利用物联网国赛提供的BasicRF工程资源进行串口数据收发,在系统上电后,你没有进行任何串口数据发送的情况下,PC端会收到一个字节0x00的数据。这是因为国赛提供的资源中,在串口初始化的时候会先发一个0x00的数据给串口。这个问题可以自行修正加以完善。

注:如需完整工程源码,可通过网站下方的“联系我们”中的联系方式,留下邮箱地址,我们会将资料以邮件方式发到该邮箱。

赞(46)
未经允许不得转载:小蜜蜂笔记 » 【BasicRF国赛实训-2】基于BaiscRF点对点通信的串口收发(附全部源码与注释)

小蜜蜂笔记 更专业 更方便 更高效

联系我们精品小店