实训Day01

2021-05-24

实训, Zigbee

本周主要是学习关于Zigbee的自组网,今天是第一天,都是些简单的环境配置和运行

0x01 什么是Zigbee

  • Zigbee:近距离、低复杂的双信通信系统
  • 本质:无线设备之间得到通信方式
  • 用途:用于短距离、低功耗、传输效率低电子设备之间数据传输
  • 特点:低功耗、低成本、大容量、时延短、可靠性高、网络拓扑结构灵活
  • 缺点:通信速率比较小
  • 主要作用:构建无线局域网
  • 其他:Zigbee、Zigbee协议、Zigbee通信方式是一回事
  • 注意:Zigbee只是用来完成数据通信的工作,具体使用的功能系统取决于上位机计算机

0x02 无线通信方式对比

  • 蓝牙:功耗比较低(相对于Zigbee),组建网络节点数少(7~8)
  • WiFi:通信速率比较大,功耗大
  • Zigbee:组建大规模网络,且功耗低,缺点:通信速率比较小

0x03 Zigbee环境安装

  1. 环境工具

    image-20210524182058679

  2. 双击安装包后,先后出现下面左边的两个画面时,以管理员身份运行注册工具,记得关闭安全软件

    image-20210524182533660

  3. 一直下一步即可

0x04 IAR工程建立

  1. 先创建一个工作空间

    步骤:File–>new–>workspace

    image-20210524182703229

  2. 创建一个工程

    Project–>Create New Project–>Empty project–>0K–>保存

    image-20210524182815959

  3. 新建一个文件–>保存为.c文件

    image-20210524182901492

​ Crtl+s保存,后缀.c

  1. 将.c文件添加进工程

    image-20210524183025818

  2. 保存工作空间

    image-20210524183113154

    或者直接关闭时候选择保存

  3. 编译和仿真

    image-20210524190237177

0x05 选项配置

  • 选择“工程名-Debug”–>options

    image-20210524183306665

  1. General Options–>Device 选择Texas Instruments–>cc2530F256

    image-20210524183511254

  2. )Linker–>Output–>Override default勾上

    Allow C-SPY-specific extra output file 勾上

    image-20210524183611570

  3. Debugger–>Driver–>选择Texas Instrments

    image-20210524183703336

这些选项设置不配置好,后续下载编译或调试时会出错

  1. 生成Hex文件的设置

Linker–>Extra Output–>Genetare extra output file【勾上】–>

Override defualt【勾上】–>命名为.hex文件

output format :intel-extended–>OK

image-20210524185648418

再次编译后会在项目空间的Debuh/Exe目录下生成hex文件,烧录的时候往下面去找即可

0x06 驱动安装

别问,问就是上课在睡觉,没截图

image-20210524190051022

0x07 文件烧录

  • 安装烧录软件SmartRFProgram

双击一直下一步

  • 烧录

烧录前需要重置仿真器,烧录出错须注意下仿真器是否重置,同时烧录的时候需要终止IAR Embedded的仿真

image-20210524184229969

0x08 LED灯闪烁

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include "iocc2530.h"
// 点亮两盏LED灯
void delay_ms(unsigned int ms) {
unsigned int i;
while(ms--)
for(i = 0;i < 275;i++);
}

void led_init(void) {
P1_0 = 0;
P1_1 = 0;
}

void main(void) {
P1DIR |= 0x03;
while(1) {
led_init();
delay_ms(500);
P1_0 = 1;
P1_1 = 1;
delay_ms(500);
}
}