一,按 A模块的按键---控制 B模块的 LED 亮灭
1、实验需求:
硬件需求:cc2530 模块两个、调试器一个。
软件需求:IAR810、仿真器的驱动。
(如果没有安装 IAR810 和仿真器驱动,请看 “1.软件工具”文件夹里面的“CC2530 开发套件相
关软件的安装.pdf”文档,把 IAR810 和仿真器驱动装起来) 。
使用 IAR810,因为我家这个资料是基于 IAR810 做的,所以还请各位劳神装一下了。谢谢!
必须要
下面就来看看到底如何实际动手操弄模块吧,然后把模块通过仿真器连接到电脑,如下图:
如上图连接后,在按几下仿真器的复位按钮。让仿真器能探测到模块,如果想查看,仿真器有没有确实的探测到模块,可以迚行如下操作。
当然这个软件肯定是需要你安装下,你的开始菜单中才有的,具体如何安装,请看“ “1.软件工具”
文件夹里面的“CC2530 开发套件相关软件的安装.pdf”文档”,进行安装下。
上图中有了2530之后,就可以进行debug了,否则不可以的哦,会弹出错误的哦!!因为出现cc2530,表示仿真器已经可靠的切实的连接到了 CC2530 模块了。debug 就是吧程序从电脑通过仿真器搞进cc2530,如果仿真器都没识别到2530,那怎么弄吧程序从电脑搞进 cc2530 呢?你说是吧。
出现迚度条后,等一会,迚度条结束,会出现如下图:
如上 debug了的模块,是终端模块,程序也被保存在终端模块里面了。
取下模块,把另外一个模块连接到仿真器,再把仿真器连接到电脑:
同样上图中有了 cc2530 乊后才能 debug哦,否则不可以哦!!然后如下图操作:
然后把两个模块都单独的放到一边,不需要不仿真器连接,也是可以的。
然后把天线杆拧到模块上的铜的天线座子上
3、操作模块看实验效果:
用 usb 数据线直接把模块连接到电脑,给两个模块上电,如下图:
稍等会,协调器的 LED3 先亮起来,表示协调器建立了无线 zigbee 网络。
在协调器 led3 亮起乊后一会,终端的 LED3 也亮起来了,表示终端加入了无线 zigbee 网络了。表
示协调器和终端组网了。
实验效果:
然后按终端模块的 S1 键。S1 键在哪里,请看下图。 协调器模块的 LED2 就会交替亮灭。
4,实验分析:
刚才在前面打开协议栈代码,并 debug 模块的时候,大家估计也在 iar 中看到了协议栈代码的庞大,
代码文件那么多,无从下手啊,其实不然,我们要学的是如何使用协议栈,如何在协议栈的基础上会
无线发送、无线控制、无线采集。而不是去研究透协议栈(研究透是科学家干的事情) 。因为关于
zigbee 无线组网以及一些其他特性,协议栈代码里面已经写好了,我们要做的,就是在这个协议栈
基础上,能实现自己想要的无线的效果就行了。
协议栈的目录结构:先来看下协议栈的目录结构吧,在第一章中我们安装了协议栈,不知您是否还记
得,大家可以去看下自己安装的协议栈的目录里面到底有什么?
Components,顾名思义这个是放我们的库的文件夹,里面放了一些我们用到的ZDO,driver,hal,
zcl等库的代码
Documents,这个不用说大家都知道是放TI的开发文档的,里面很多都是讲述协议栈的API的有空时
可以看看
Projects,这个文件夹放的是TI协议栈的例子程序,一个个例子程序都是以一个个project的形式给我
们的,学好这些例子程序里面的一两个,基本你能做事情了。
Tools,这个文件夹是放 TI 的例子程序的一些上位机乊类的程序,作为工具使用。
对协议栈的肤浅认识:下面我就谈下我自己对 Zigbe 无线通信,一些比较肤浅的认识:
1,模块的组网方式。
2,如何发送数据的
3,如何接受数据并处理的
以上三点,不难理解,假设有 n 个 cc2530 模块在一起,先以一定的方式组成了 zigbee 网络,然后
各个模块发送数据,然后各个模块接受了数据并处理了数据。是不是就完成了一个无线通信了。就这
么简单。
组网方式:每个模块都有其自己的组网方式,有如下几种:
我们这套套件资料,主要以广播和单播为主。
一般在一个 zigbee 网络中的 n个 cc2530 模块,有一个协调器(也就是俗话说的 zigbee 总节点),
和 n 个终端模块(俗话说的就是子节点)。
而协调器一般被设置为广播,就是协调器可以向其他 n 个所有终端模块发送数据。在说白点,就是
协调器广播数据,其他 n 个终端都可以收到数据,并处理数据。
而终端一般被设置为向协调器单播,就是所有的 n 个终端,都向协调器发送数据。
在我们这个实验中,协调器代码就是广播,看下图分析
在我们这个实验中,终端就是向协调器单播,看下图分析
好了,组网方式设定好了,协调器,终端它们组好网了,那下面就是如何发数据和接受数据了。
如何发送数据:
在 enddeviceEB.c 中我们调用了无线发送数据函数 AF 函数。
从上图中,不难看出,我们按 S1 键后,就导致调用了 AF 发送函数,在网络内,发送了 1 个字符“1”;
至于为何按了 S1 键,就会来调用这个 AF 函数,这个是协议栈做的事情,我们可以先不管,目前只
要知道只要你按了 S1 键,就能迚行到上图中的红框框内的代码就行了,这样就完成了发送数据了。
关于 AF 函数的掌握,大家先可以掌握这个 AF 函数的数据长度和数据内容参数即可,其他参数
可以暂时不用去理会。
接受数据并处理:
协调器收到终端发送来的数据后,交替点亮戒者熄灭 led1,
细看上图中对代码的注释部分,不难理解,我们的协调器模块的 led2 为何会交替亮灭了。至于那个
“GENERICAPP_CLUSTERID” ,其实是一个命令号,就有点类似于“立正”“稍息”乊类的命令一样,
是一种命令,接受处理函数判断是“GENERICAPP_CLUSTERID”的时候,干什么事情呢,就是迚行
led2 交替亮灭吧。有点类似,当是“立正”的时候,我们要干的事情就是:严肃点,不能私下讲话。
当是“稍息”的时候,我们可以干点稍微说说笑笑事情了,就是什么命令干什么事情,至于什么命令
干什么事情,全看你自己写的代码了。
好的,实验分析大致到这里了,总结下:
1,整个协议栈那么多代码,和我们有关的就是 app 应用层的 c 文件,其他我们可以不管。
2,组网方式,协调器一般向所有终端广播。而终端只向一个模块就是协调器单播,不和其他终端模
块说话。
3,如何发送数据,调用 AF 函数,知道发送的命令,发送数据长度和发送数据内容参数即可
4,如何接受并处理无线数据,就是那个“pkt->cmd.Data”就能取数据了,取完数据用代码来干事
情就好了。
是不是觉得 zigbee 无线通信也不难,组网,发送,接受并处理,完事 over,哈哈,我个人的一点肤
浅理解,还请各位多多指正赐教。
实验流程图如下:
全部资料51hei下载地址:
基于CC2530的无线控制灯.rar
(6.14 MB, 下载次数: 100)
|