0 ZigBee无线通信概念实验、抓包

2024-01-11 17:28

本文主要是介绍0 ZigBee无线通信概念实验、抓包,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

胜达电子学习笔记:lesson5

ZigBee无线通信概念实验、抓包

  • 5.无线通信概论
    • 5.1 理解 Lesson5-Send
      • `main`:主函数
      • `halRfInit`:射频初始化
      • `RFSend`:无线数据发送出去
      • SendPacket 数组
    • 5.2 理解 Lesson5-Receive
      • RevRFProc() 无线接收函数
    • 5.3 抓包软件Packet Sniffer
    • 5.4 如何改成发送字符串?

5.无线通信概论

✔ 掌握 ZigBee 网络里的相关重要概念,打造自己的无线通信,并掌握捕捉查看空气中的 IEEE802.15.4 无线协议。
✔ 掌握怎么用胜达 USBDongle 抓无线数据包。

新定义:信道、载波、频段

  1. zigbee无线通信,需要高频的载波来提高发射效率,zigbee模块之间要可以正常的收发,接收模块必须把接收频率设置和发射模块的载波频率一致。
  2. ZIgBee有27个载波可以进行通信,载波叫做信道(无线通信的通道)。这些载波的频率落在某些频率区段,我们把这些区段叫做频段。但TI所有支持Zigbee底层协议的芯片只能在2.4G频段的16个信道里进行通信。
    1. 2.4G频段:16个信道
      1. 11 - 2405M
      2. 12 - 2410M
      3. ··
      4. 26 - 2480M
    2. 915M评断/896M评断 11个信道
  3. 网络地址:在zigbee无线局域网里,每一模块都一个在该网络里有唯一的2个字节的地址,这个地址叫做网络地址或网络短地址。
  4. PANID:2字节的编码,用来区别不同的ZigBee无线局域网,也叫个域网ID(可能好几个zigbee是一个网络,另外几个zigbee是另一个网络)

ZigBee向外发送信号,是通过高频载波(信道)发射出去的(发送模块)
而发射出去后,想要被另一个的设备接受,那么另一个设备(接受模块)也要调成发射出去相同的载波频率
载波频率=信道,落在某些频段上

关于频段、信号、载波频率的关系理解图如下

image.png

5.1 理解 Lesson5-Send

main:主函数

功能:初始化相关配置和 while 循环
注意:设置本模块地址的大小端模式

void main()
{LS164_Cfg();//74LS164控制数码管的初始化Init32M(); //主时钟晶振工作在32M KeysIntCfg(); halRfInit();//无线通信的初始化  初始化相关的寄存器,配置工作信道,和PANIDSHORT_ADDR0=0x50;SHORT_ADDR1=0x20;//设置本模块地址  设置本模块的网络地址0x2050//大小端模式问题,LS164_BYTE(1); while(1);
}

halRfInit:射频初始化

功能:无线通信初始化,初始化相关寄存器,配置工作信道 和 PANID

void halRfInit(void)
{//默认配置EA=0;FRMCTRL0 |= 0x60;// Recommended RX settings  TXFILTCFG = 0x09;AGCCTRL1 = 0x15;FSCAL1 = 0x00;// enable RXPKTDONE interrupt  RFIRQM0 |= 0x40;//把射频接收中断打开// enable general RF interruptsIEN2 |= 0x01;//信道与载波对应关系:11对应2405M,12对应2410M···25对应2475MFREQCTRL =(11+(25-11)*5);//(MIN_CHANNEL + (channel - MIN_CHANNEL) * CHANNEL_SPACING);   //设置载波为2475MPAN_ID0=0x07;PAN_ID1=0x20; //0x2007   //个域网ID
//halRfRxInterruptConfig(basicRfRxFrmDoneIsr);    RFST = 0xEC;//清接收缓冲器RFST = 0xE3;//开启接收使能 EA=1;    
}

初始化我们需要改两个地方的内容:

  1. FREQCTRL:这里是信道与载波的对应关系,需要改成我们需要的载波
  2. PAN_ID0 和PAN_ID1:这里是 PANID 即个域网 ID(区分不同的网络的标识符,只有相同 PANID 的设备才能进行组网连接)

RFSend:无线数据发送出去

功能:放在按键中断服务函数中,当按键被按下时,触发这个函数,将我们需要发送的数据给发送出去。
image.png

RFST = 0xE9; //这个寄存器一旦被设置为0xE9,发送缓冲区的数据就被发送出去

//pstr:需要发送的字符串
//len:字符串长度
void RFSend(char *pstr,char len)
{char i;RFST = 0xEC; //确保接收是空的,接收缓冲区清空RFST = 0xE3; //清接收标志位while (FSMSTAT1 & 0x22);//等待射频发送准备好RFST = 0xEE;//确保发送队列是空RFIRQF1 &= ~0x02;//清发送标志位
//为数据发送做好准备工作for(i=0;i<len;i++){//②把SendPacket数组的数据全部发出去RFD=pstr[i];}  //循环的作用是把我们要发送的数据全部压到发送缓冲区里面RFST = 0xE9; //这个寄存器一旦被设置为0xE9,发送缓冲区的数据就被发送出去while(!(RFIRQF1 & 0x02) );//等待发送完成RFIRQF1 = ~0x02;//清发送完成标志
}

SendPacket 数组

1111.png

char SendPacket[]={0x0c,0x61,0x88,0x00,0x07,0x20,0xEF,0xBE,0x20,0x50,SENDVAL};
//第一个字节0x0C含义,这个自己后面还有12个字节要发送(10+2)还有两个CRC校验码自动附加(SendPacket总共是11个字节)
//第5 6个字节表示的是PANID   0x07 + 0x20
//第7 8个字节是无线模块目标设备的网络地址 0xBEEF
//第9 10就是本地模块的网络地址 0x
//11 个字节是我们有用的数据
// CRC码 12 13个字节 是硬件自动追加

5.2 理解 Lesson5-Receive

RevRFProc() 无线接收函数

功能:当进入接收中断时,进入这个函数,读取 SendPacket 数组,获取SENDVAL值

void RevRFProc()
{static char len;static char  ch;len=ch=0;RFIRQM0 &= ~0x40;IEN2 &= ~0x01;EA=1;len=RFD;//读第一个字节判断这一串数据后面有几个字节;//len=0x0C 12while (len>0) {//只要后面还有数据那么就把他都从接受缓冲区取出来ch=RFD;if(3==len)//倒数第三个数据是发送内容{//如果倒数第三个字节等于7,那么我们把LED0取反//执行相关操作,此时ch就是SENDVAL值LS164_BYTE(ch);}len--;}     EA=0;// enable RXPKTDONE interruptRFIRQM0 |= 0x40;// enable general RF interruptsIEN2 |= 0x01;        
}

5.3 抓包软件Packet Sniffer

注意:抓包前将仿真器与 **Receive **端相连
step1:选择合适的 ZigBee 型号(CC2530 选第二个)
image.png
step2:依次点击 1-2-3,注意 ② 中需要选择合适的信道,配置好后点击 ③,然后抓取 Send 端发来的数据,如下图中的黄色块中的数据 05为 Send 端发来的数据。
image.png

5.4 如何改成发送字符串?

难点在于:要改一部分代码(先记下来要改哪些,以后自己再重新设计程序)
蓝色表示修改的是 Send 端
红色表示修改的是 Receive 端
image.png
image.png
image.png
最终效果:
image.png

再次提醒:抓包的话是将仿真器连接到 Receive 端

这篇关于0 ZigBee无线通信概念实验、抓包的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/595129

相关文章

高性能并行计算华为云实验五:

目录 一、实验目的 二、实验说明 三、实验过程 3.1 创建PageRank源码 3.2 makefile的创建和编译 3.3 主机配置文件建立与运行监测 四、实验结果与分析 4.1 采用默认的节点数量及迭代次数进行测试 4.2 分析并行化下节点数量与耗时的变化规律 4.3 分析迭代次数与耗时的变化规律 五、实验思考与总结 5.1 实验思考 5.2 实验总结 E

【Unity Shader】片段着色器(Fragment Shader)的概念及其使用方法

在Unity和图形编程中,片段着色器(Fragment Shader)是渲染管线中的一个阶段,负责计算屏幕上每个像素(片段)的颜色和特性。片段着色器通常在顶点着色器和任何几何处理之后运行,是决定最终像素颜色的关键步骤。 Fragment Shader的概念: 像素处理:片段着色器处理经过顶点着色器和几何着色器处理后,映射到屏幕空间的像素。颜色计算:它计算每个像素的颜色值,这可能包括纹理采样、光

【Unity Shader】Alpha Blend(Alpha混合)的概念及其使用示例

在Unity和图形编程中,Alpha Blend(也称为Alpha混合)是一种用于处理像素透明度的技术。它允许像素与背景像素融合,从而实现透明或半透明的效果。Alpha Blend在渲染具有透明度的物体(如窗户、玻璃、水、雾等)时非常重要。 Alpha Blend的概念: Alpha值:Alpha值是一个介于0(完全透明)和1(完全不透明)的数值,用于表示像素的透明度。混合模式:Alpha B

物联网系统运维——移动电商应用发布,Tomcat应用服务器,实验CentOS 7安装JDK与Tomcat,配置Tomcat Web管理界面

一.Tomcat应用服务器 1.Tomcat介绍 Tomcat是- -个免费的开源的Ser Ivet容器,它是Apache基金会的Jakarta 项目中的一个核心项目,由Apache, Sun和其他一 些公司及个人共同开发而成。Tomcat是一一个小型的轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下被普遍使用,是开发和调试JSP程序的首选。 在Tomcat中,应用程序的成部署很简

STM32HAL库--SDRAM实验(速记版)

STM32F429IGT6 自带了 256K 字节的 SRAM,对一般应用来说,已经足够了,不过在一些对内存要求高的场合, STM32F429 自带的这些内存就不够用了。比如使用 LTDC 驱动RGB 屏、跑算法或者跑 GUI 等,就可能不太够用,所以阿波罗 STM32F429 开发板板载了一颗 32M 字节容量的 SDRAM 芯片:W9825G6KH,满足大内存使用的需求。 1

Spring 集成 RabbitMQ 与其概念,消息持久化,ACK机制

目录 RabbitMQ 概念exchange交换机机制 什么是交换机binding?Direct Exchange交换机Topic Exchange交换机Fanout Exchange交换机Header Exchange交换机RabbitMQ 的 Hello - Demo(springboot实现)RabbitMQ 的 Hello Demo(spring xml实现)RabbitMQ 在生产环境

netty中常用概念的理解

目录   目录ChannelHandler ChannelHandler功能介绍通过ChannelHandlerAdapter自定义拦截器ChannelHandlerContext接口ChannelPipeline ChannelPipeline介绍ChannelPipeline工作原理ChannelHandler的执行顺序   在《Netty权威指南》(第二版)中,ChannelP

Spring Statemachine 概念及应用

1 Finite-state machine 1.1 状态机定义 有限状态机,(英语:Finite-state machine, FSM),又称有限状态自动机,简称状态机,是表示有限个状态以及在这些状态之间的转移和动作等行为的数学模型。 有限状态机体现了两点:首先是离散的,然后是有限的。 State:状态这个词有些难以定义,状态存储关于过去的信息,就是说它反映从系统开始到现在时刻的输入变化

1. 入门概念

1. 倒排索引 (1) 文档(document): 每条数据就是一个文档(2) 词条(term): 文档按照语义分成的词语(3) 倒排索引的案例: 词条是不会重复的,因此在建立索引的时候如图 2. mapping (1) 理解: mapping简单理解为索引库字段的约束。(2) 常见的mapping属性:type: 字段数据类型,常见类型:字符串: text(可分词的文本),

ZigBee bookmark

ZigBee协议栈基础和数据传输实验 Zigbee协议栈发送函数AF_DataRequest说明