在无线通讯的网络中,想必zigbee大家一定不会陌生,这一个主打低功耗的通讯技术、可靠、传输速率第,分为四层构造:应用层、网络层、MAC、物理层;四层各司其职,先从最底层说起吧;
物理层:我们在使用无线通讯的时候需要知道一点就是,通讯双方是必须保持一致的,如果不保持一致是无法通讯的,那么如何来实现这种通讯一致呢,那么就交给了物理层,通过编写同步码来实现同步,一个设备发同步码,里一个设备就接收同步码,如果可以做到发送的同时接收到就说明同步了;
MAC:这一层也就是数据链路层,在ZigBee通讯它的主要作用就是防止数据冲突,因为我们的无线通讯是通过一种广播的形式,在发送数据的时候很容易受到别的数据信号的影响,所以ZigBee制定一套csma-ca机制,当发数据的时候,先拿到时间戳,首先各个数据在时间上有错开的发送的机制,然后在接收信标帧,对比其他冲突的信号,如果优先级低的话就重新这个过程,这样可以有效避免冲突;
网络层:这个实现了一个中继转发的过程,因为是无线通讯最多也就在百多米范围内,如果是管理那种大范围的设备,比如只能农耕,不就需要用到一种中继方然设备吗,就像以前的烽火台,可以将信号传播好远;
应用层:这个应该是我们最熟悉的了,就是实现各种各样的功能的一层了;
说完四层结构,让我们再来聊一聊他使用的标准IEEE,这是一个通讯标准协会,大部分是由一些通讯公司组成的,还有一个值拓扑结构,ZigBee用到的主要有三种,星型拓扑、簇型拓扑、网状型,星型拓扑就是路由器、中断连接在一个协调器上面,这个协调器可以说是一个大网关,簇型的话就是我们说的树形,就像一个树杈一样的分散下去,而网状型就是一个接一个的路由,然后很多的终端连接在上面;
我们也经常还听到信道这个东西,那么信道是用来干嘛的呢?
其实这就要涉及到我们的频道的概念,经常听到的频道有2.4GHZ、868、915MHz,2.4GHZ是国内常用的,其他两个是欧洲美国的,2.4GHZ含有16个信道,不过是11~26的编号,所以后面写代码的时候就要知道不是从零开始,其实有可能很多人用2.4GHZ的时候可能就会存在很多干扰,于是就分出了16个信道,如果遇到连个相同频道的无线电就可以通过使用不同的信道来实现一种隔离的效果;
好了,基本介绍就到这里,我为大家准备了一些资料,是cc2530官方下载的示例代码,我们就使用该代码来进行工程的移植,简化代码,降低我们编写程序的难度:
1、这些资料我放在了公众号:代码栈;回复代码移植即可领取;

解压之后你可以看到上面的文件结构,我们主要需要使用到的文件放在了source;
不过先让我们打开里面的官方案例,在移植的时候我们需要查找一下那一些是我们需要的,这里我告诉大家:basic.rf.c和hal.rf.c是我们肯定要加的,我们先打开ide文件夹:

点击第二个,按照一下步骤打开一个示例:

打开之后我们可以找到里面的文件:
basic.rf.c
hal.rf.c
然后打开我们自己的工程进行移植;
2、现在自己的工程里面新建一个文件夹(BasicRf):

不知道大家的工程结构是怎么样的,但是现在就按照我这样做,main函数放在app里面,应用函数放在drive,工程创建在project,这里新建的文件夹就用来存放我们移植的文件:
打开自己的工程,注意IAR有一个毛病,双击打开的话会覆盖之前打开的,所以我们回到桌面点击app拖动工程到IAR里,然后就可以打开两个了,方便我们拍错和移植:

我们在工程目录里面新建一个文件夹用来存放移植文件,因为IAR里面的工程结构是虚拟的,所以我们需要再建一次,我建议和外面保持一致:

本文详细介绍了Zigbee的四层结构,包括物理层、MAC层、网络层和应用层的功能。在物理层,通过同步码实现设备间的同步;MAC层采用csma-ca机制防止数据冲突;网络层实现中继转发;应用层则实现各种功能。Zigbee通信标准遵循IEEE,常用信道包括2.4GHz、868和915MHz。文章还讲解了Zigbee的三种拓扑结构,并展示了如何进行CC2530的代码移植,包括错误排查和文件导入。最后,给出了发送和接收数据的基本程序实现。
最低0.47元/天 解锁文章

被折叠的 条评论
为什么被折叠?



