Digi公司XBee Pro SX模块的通讯方式

电子说

1.3w人已加入

描述

无人机行业的不少客户反馈,第一次接触XBee Pro SX模块时,看着整篇的文档感觉头大,不知从何下手。本文做个总结,以供有需要的朋友借鉴。

Digi公司的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

添加模块:

模块

添加另一个,同理:

模块

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

选择固件:

模块

4、AT指令

①打开串口

模块

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

模块

③将本机设为**广播模式(即:DH=0,DL=0xFFFF)**,除了用AT指令,也可以在设置界面直接设置。当然,MCU程序里,只能用串口发送AT指令来设置了。

模块

④发送“Hello XBEE”

模块

模块

注意:两个XBee接上天线后距离不宜过近,以防损坏模块,官方推荐2m左右 。

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

①初始化设置目标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;    //ATDH   “char SRUDH_CMD[14]="ATDH00000000
";”,
为ASCII里的回车    UART_SendWait(UART1,SRUDH_CMD,sizeof(SRUDH_CMD));  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;    //ATDL  UART_SendWait(UART1,SRUDL_CMD,sizeof(SRUDL_CMD));     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;    //ATHP,先导码  UART_SendWait(UART1,HP_CMD,sizeof(HP_CMD));     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;    //ATWR  UART_SendWait(UART1,WRCommandf,sizeof(WRCommandf));     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;    //ATCN,每次正确发送都会收到OK  UART_SendWait(UART1,SetTimeCommandf,sizeof(SetTimeCommandf));    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;}

 

②发送数据

透传模式下,只要把目标地址设定好,就可以直接发送数据: UART_SendWait(UART1,Xbee_Send,10); //将数据发送给XBEE

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

二、API传输方式

API模式的传输功能非常强大,使用也很方便,建议在学会使用透传模式后,上手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等。  

 

审核编辑:汤梓红

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分