XBEE-PRO-SX快速上手

这篇博客详细介绍了XBEE-PRO-SX射频模块的使用,包括硬件准备、XCTU上位机配置、透传模式的数据传输以及API模式的设置和数据发送。通过AT指令设置模块,实现了透传模式下的数据通信,并给出了程序示例。此外,还提及了API模式的高效功能和使用建议。
摘要由CSDN通过智能技术生成

[Digi]XBEE-PRO-SX射频模块快速上手教程

第一次接触XBEE射频模块看着整篇的文档让人头大,不知从何下手在学习了该模块后做了总结,写此博客以供有需要的朋友借鉴。XBEE-PRO-SX通讯方式主要分两种,一种是透传方式还有种是AIP方式,透传使用起来比较简单,但API的功能更为强大,那么先用透传试下传输数据。

一、透传模式

1、硬件方面准备:

XBEE-PRO-SX×2、XBEE调试底板×2、天线×2、Micro-USB连接线×2
在这里插入图片描述

2、XCTU上位机:

官网链接:https://www.digi.com/products/embedded-systems/digi-xbee/digi-xbee-tools/xctu
官网下载速度太慢准备了百度网盘:https://pan.baidu.com/s/1mvUzbomAurTPdJy5YeaPbQ 提取码:hl9f

添加模块
在这里插入图片描述
添加另一个同理
在这里插入图片描述

3、选择固件及配置传输方式

选择固件
在这里插入图片描述

4、AT指令

①、打开串口

在这里插入图片描述

②、先查询下本机MAC, 注."0x0D"是ASCII中的回车字符

在这里插入图片描述

③、将本机设为广播模式,除了用AT指令也可以在设置界面直接设置。(程序里只能用串口指令)

在这里插入图片描述

④、“Hello XBEE”

在这里插入图片描述在这里插入图片描述注意.两个XBEE接上天线后距离不宜过近,以防损坏模块,官方推荐2m左右。实际我调试也就50cm左右,,,没那么长的USB线啊emmmm…

5、用程序控制XBEE发送数据

①、初始化设置目标MAC地址

unsigned char XBEE_Model_Set(void){
  uint8_t date;
      
  while(UART_CheckFlag(UART1, UART_FlagRDRF))            //接收数据寄存器 空 0
  date=UART_ReadDataReg(UART1);
  
  UART1->C2 |= UART_C2_TE_MASK;                         //发送使能
  UART_SendWait(UART1,SetCommand,3);                    //使XBEE进入AT命令模式,里面用字符存的“+++”       
    
  UART1->C2 |= UART_C2_RE_MASK;                                 //接收使能
  
  while(!UART_CheckFlag(UART1, UART_FlagRDRF));                 //接收到数据
  date=UART_ReadDataReg(UART1);
  if(date!=0x4f) return 1;                      //发送完数据后,顺序接收到 0x4f--->0x4B--->0x0D(接收到OK)
  while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4B) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x0D) return 1;
  
  UART_SendWait(UART1,SRUDH_CMD,sizeof(SRUDH_CMD));     //ATDH   “char SRUDH_CMD[14]="ATDH00000000\r";”
  																// \r为ASCII里的回车
  while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4f) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4B) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x0D) return 1;
  
  UART_SendWait(UART1,SRUDL_CMD,sizeof(SRUDL_CMD));                                     //ATDL
  
  while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4f) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4B) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x0D) return 1;
  
  UART_SendWait(UART1,HP_CMD,sizeof(HP_CMD));                     //ATHP  先导码,详见手册
  
  while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4f) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4B) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x0D) return 1;
  
  UART_SendWait(UART1,WRCommandf,sizeof(WRCommandf));                           //ATWR
  
  while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4f) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4B) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x0D) return 1;
  
  UART_SendWait(UART1,SetTimeCommandf,sizeof(SetTimeCommandf));          //ATCN,每次正确发送都会收到OK
  
  while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4f) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x4B) return 1;
   while(!UART_CheckFlag(UART1, UART_FlagRDRF));
  date=UART_ReadDataReg(UART1);
  if(date!=0x0D) return 1;
  
  return 0;
}

②、发送数据
透传下只要把目标mac设定好,就可以直接发送数据

UART_SendWait(UART1,Xbee_Send,10);                  //将数据发送给XBEE

6、透传下的各种AT指令可以详看手册说明

链接:https://pan.baidu.com/s/1wb2yCmjweDLLAIPbOroUYQ 提取码:adkf

二、API传输方式

1、该传输功能非常强大,使用也很方便,建议在学会使用透传方式后,学习此方式。

两个模块都这样设置
在这里插入图片描述

2、API 64位地址 传输协议

在这里插入图片描述协议介绍
在这里插入图片描述

3、API方式 “Hello XBEE”

在这里插入图片描述
接收端的协议同理

4、用程序发送

不用AT指令设置目标地址,直接把目标地址包含在数组中就行

//1byte 帧 头 +2byte 字 节 长 度 +1byte Frame type+1byte Frame ID+8byte 目标 MAC+1byte options+数据字节8byte+1byte 和校验
uint8_t XBEE_Send_Data[23]={0x7E,0x00,0x13,0x00,0x00,0,0,0,0,0,0,0,0,0x00,0,0,0,0,0,0,0,0,0x00};
                                                    //bit5               //bit14      

UART_SendWait(UART1,XBEE_Send_Data,23);                  //将数据发送给XBEE

注.API模式也有AT协议,可以查询本机MAC等…

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值