Core2530-XCore2530 用户手册

来自Waveshare Wiki
跳转至: 导航搜索

Zigbee组网实验

Zigbee组网最少需要一个协调器和一个路由器,模块出厂后内置Bootloader,可以直接通过串口将固件下载到模块。

注:组网通信实验需要Core2530/XCore2530两块,ZB502/ZB600底板两块。

Zigbee角色介绍

1. 协调器(Coodinator)

  • 选择一个频道和PAN ID,组建网络
  • 允许路由和终端结点加入这个网络
  • 对网络中的数据进行路由
  • 必须保持供电,不能进入睡眠状态
  • 可以为睡眠的终端结点保留数据,至其唤醒后取回

2. 路由器(Router)

  • 在进行数据收发之前,必须首先加入一个Zigbee网络
  • 本身加入网络后,允许路由和终端结点加入
  • 加入网络后,可以对网络中的数据进行路由
  • 必须保持供电,不能进入睡眠状态
  • 可以为睡眠的终端结点保留数据,至其唤醒后取回

3. 终端(End Device)

  • 在进行数据收发之前,必须首先加入一个Zigbee网络
  • 不允许其他设备加入
  • 必须通过其父节点收发数据,不能对网络中的数据进行路由
  • 可由电池供电,必要时可以进入睡眠状态

Bootloader

1. Bootloader简介

利用模块内置的Bootloader,用户可以通过串口直接下载应用程序而不需要CC Debugger;但Bootloader的烧录必须通过CC Debugger。

模块提供两种Bootloader:bootloader.hex和bootloader_wait.hex,为便于描述,本手册分别将烧录了bootloader.hex和bootloader_wait.hex的模块命名为A和B。

A上电后,如果Flash内部应用程序有效,则立刻开始执行;否则LED1闪烁,表示没有应用程序,可以通过串口进行下载

B上电后,如果Flash内部应用程序有效,LED1和LED2交替闪烁,用户按下KEY2(ZB502)或者摇杆中键(ZB600)时,模块开始执行程序。按下KEY1,LED1闪烁,进入Bootloader模式,允许重新下载应用程序。40秒内无按键操作则自动执行用户程序。如果Flash内部应用程序无效,则LED1闪烁,表示没有应用程序,可以通过串口进行下载。

A适合独立使用,不需要外部按键触发,就能立即进入程序;B适合配套ZB502/ZB600底板,进行实验和学习。模块出厂默认烧录B。

2. CC debugger驱动安装

  • 解压例程提供的软件包CC-Debugger_Drivers.7z到安装目录中。
  • 双击 Setup_SmartRF_Drivers-1.2.0.exe 打开安装程序
  • 点击Next,选择安装路径

Core2530-XCore2530-User-Manual-1.jpg

  • 点击 Install,等待安装完成

Core2530-XCore2530-User-Manual-2.jpg

  • 安装结束后,连接CC Debugger到电脑,打开windows 设备管理器,如有下图显示的硬件,说明驱动安装成功。

Core2530-XCore2530-User-Manual-3.jpg

3. 烧录Bootloader

  • 将模块安装到底板上,通过USB线连接电脑,同时连接CC Debugger
  • 打开底板电源,按下CC Debugger上的RESET按键,如果指示灯变为绿色说明通信正常,可以下载。
  • 打开SmartRF Studio7,选择软件右上角Flash Programmer并打开。

Core2530-XCore2530-User-Manual-4.jpg

  • 选择Program CCxxxx Soc or MSP430,Flash image处选择需要下载的烧录文件,这里选择bootloader_wait.hex,单击Perform actions开始下载。

Core2530-XCore2530-User-Manual-5.jpg

  • 如果底部出现信息: program and verify OK,同时底板LED1开始闪烁,说明下载成功。

Core2530-XCore2530-User-Manual-6.jpg

固件下载

这里以两套Core2530 + ZB600为例,分别烧录协调器和路由器固件,完成组网。为方便描述,将这两套系统称为A和B。

  • 将A、B通过USB线接入电脑,上电后分别记录对应的串口号
  • 如果之前已有固件,重新复位A或B后,LED1和LED2会交替闪烁(若使用XCore2530则只是LED1快速闪动),需要按KEY1进入Bootloader模式,进入后LED1闪烁。如果没有固件,上电后LED1闪烁,说明直接进入Bootloader模式,不需要按KEY1。

Core2530-XCore2530-User-Manual-7.jpg

  • Select File选择 Coordinator.bin 固件,Port Setting 选择对应串口,波特率选择115200,点击 Load Image开始下载,等待下载结束。
  • B选择Router.bin固件,下载方式同上。
  • 打开两个串口调试助手,串口号分别对应A和B,波特率38400、数据位8、停止位1。
  • 重新复位A,LED1和LED2交替闪烁,按下摇杆中键,等待串口输出 “Coordinator ok”,LED3点亮,说明网络建立成功。
  • 重新复位B,LED1和LED2交替闪烁,按下摇杆中键,等待串口输出“Router ok”,LED3点亮,说明路由器已经加入网络,组网成功。(如果没有外接天线,建议将B天线接口靠近A天线接口,确保组网时的信号强度)

注:

1. ZB600的摇杆中键对应ZB502的KEY2键

2. Xcore2530内置功率放大器(PA)功能,占用了P1_1和P1_4引脚,所以复位后LED2不闪烁,组网成功后LED3不点亮属于正常情况。

模块组网通信

以下操作均直接使用UART串口发送和接收数据,波特率设置为38400。

广播模式通信

描述:广播方式是由一个设备发送信息至整个Zigbee网络上的所有设备,分别烧录协调器(coordinator)和路由器(router)固件,上电之后,先按一下协调器的KEY2(ZB502)或者摇杆中键(ZB600),再按下路由器的KEY2(ZB502)或者摇杆中键(ZB600),让协调器加入路由器。操作现象如下:

格式:要发送的数据

示例:

如果任意一个模块需要以广播的方式发送信息“Hello Waveshare”,操作现象如下:

字符串输入框输入以下字符,点击发送:

Hello Waveshare

所有路由和协调器的字符串接收框都可以接收以下信息:

Hello Waveshare

点对点通信

描述:实现网络中任意两个节点之间的通信

格式:P2P 目的地址 要发送的数据

说明:点对点传输模式,一次最多允许传输40bytes的数据内容

示例:

如果A模块要向B模块发送数据“Hello World”,操作和现象如下:

通过AT+GETADDR读取A和B模块的短地址

字符串输入框:

AT+GETADDR

便能够读取到A模块和B模块的地址:

Module A ADDR=0x50F5
Module B ADDR=0x3CB8

在A模块使用P2P指令就可以给B模块发送数据了。如下:

P2P 3CB8 Hello World

此时就只有B模块能收到以下数据,其他的节点和路由都无法收到数据。

Hello World
  • 【例子】:

P2P-1.png

P2P-2.png

点对多通信

描述:一个节点向指定的多个节点发送数据

格式:O2M 目的地址个数 目的地址1 目的地址2 … 发送的数据

示例:

如果A模块要向B,C模块发送数据“Hello World”,操作和现象如下:

通过AT+GETADDR读取A,B,C模块的短地址

字符串输入框:

AT+GETADDR

字符串接收框:

Module A ADDR=0x50F5
Module B ADDR=0x3CB8
Module C ADDR=0x143E

在A模块使用O2M指令就可以给B、C模块发送数据了。如下:

O2M 2 0001 143E Hello World

此时就只有B,C模块能收到以下数据,其他的节点和路由都无法收到数据。

Hello World

使用上位机

上位机介绍

ZBSCOMM是微雪电子根据本模块专门开发的一款上位机软件,通过它可以对模块进行设置并且能够读取当前模块的配置信息;如果你不想采用上位机配置模块,同样也可以通过模块内置的AT指令集完成操作。

Core2530-XCore2530-User-Manual-10.jpg

指令详解

表 1: 重启模块

命令 AT+RESTART
输入参数
返回值 RESTART OK
备注 当串口返回 RESTART OK 之后,模块重新启动

表 2: 恢复出厂设置

命令 AT+RESET
返回值 SETUART OK SETCHN OK SETPANID OK
备注 重启模块之后生效

出厂参数:

PANID :0xFFFF(随机分配)

CHANNEL:11/2405MHz

UART选择:0(选择串口0)

波特率:38400

流控制:0(无流控制)

表 3: 串口信息配置

命令 AT+SETUART 串口通道 波特率 流控制(命令参数之间用空格隔开)
功能介绍 设置串口号,波特率,流控制,
输入参数 串口通道:这里必须写0,选择串口0进行配置。

波特率:9600-115200

流控制:这里必须写0,关闭流控制

返回值 成功:SETUART OK

失败:SETUART ERR

备注 出厂参数:UART选择:0(选择串口0)

波特率:38400

流控制:0(无流控制)

示例:

如果需要设置串口的波特率,只需在字符串输入框中输入“AT+SETUART 0 38400 0” 点击发送即可,需重启设备才生效,操作和现象如下:

字符串输入框:

AT+SETUART 0 38400 0

字符串接收框:

SETUART OK

表 4: 信道设置

命令 AT+SETCHN 信道
功能介绍 设置Zigbee的信道。
输入参数 信道: 取值范围 11-26。
返回值 成功返回: SETCHN OK

失败返回: SETCHN ERR

备注 所有的模块必须设置为同一的信道才可以进行组网,默认自动分配。

出厂参数: 11/2405MHz。

表 5: 设置PAN ID

命令 AT+SETPANID 局域网标志符
功能介绍 Zigbee协议使用一个16位的局域网标志符(PANID)来标识一个网络
输入参数 局域网标志符 :0x0000-0x3FFE
返回值 成功返回:SETPANID OK

失败返回:SETPANID ERR

备注 如果PANID=0xFFFF:设备将建立或加入一个“最优”的网络。

如果PANID≠0xFFFF:设备建立或加入指定PANID网络。

PANID的出现一般是伴随在确定信道以后的。

表 6: 读取所有配置信息

命令 AT+GETCFG
功能介绍 读取所有的配置信息
输入参数
返回值 UART:串口的参数(波特率,流控制)。

PANID:局域网标志符

ADDR:自己的短地址

FADDR:父辈的短地址

CHANNEL:模块的通信信道

表 7: 读取串口配置信息

命令 AT+GETUART
功能介绍 读取串口的配置信息
输入参数
返回值 串口编号:0/1(串口0/串口1)

串口波特率:9600-115200

流控制:0/1(没有流控制/有流控制)

表 8: 读取当前通信信道

命令 AT+GETCHN
功能介绍 读取模块的通信信道
输入参数
返回值 返回 CHANNEL的信道值

表 9: 读取自身PAN ID

命令 AT+GETPANID
功能介绍 读取当前网络的标示符
输入参数
返回值 成功将返回:PANID=0xxxx;

不成功返回:PANID=0xFFFE

表 10: 读取自身短地址

命令 AT+GETADDR
功能介绍 读取自身短地址
输入参数
返回值 返回ADDR=0xXXXX;
备注 短地址长度:16位

用于点对点,点对多的数据传输

表 11: 读取父节点短地址

命令 AT+GETFADDR
功能介绍 读取父节点的短地址
输入参数
返回值 FADDR=0xXXXX;
备注 短地址长度:16位

表 12: 读取自身IEEE地址

命令 AT+GETIEEE
功能介绍 读取自身IEEE地址
输入参数
返回值 IEEE=xx xx xx xx xx xx xx xx
备注 设备的IEEE是一个64位的地址

表 13: 读取父节点IEEE地址

命令 AT+GETFIEEE
功能介绍 读取父节点的IEEE地址
输入参数
返回值 MY_FIEEE=xx xx xx xx xx xx xx xx
备注 父设备的IEEE是一个64位的地址

示例程序演示

【注意】

以下程序须配套底板ZB500/ZB600,使用IAR软件,另外还需要用CC Debugger下载程序。

LED_KEY

程序说明

  • 按键触发把相应的按键值发送给UART并打印出来。

实验操作

【步骤】

  1. 接上KEY JMP和UART0的跳线帽
  2. 供电,下载例程

【现象】

  • 分别按板上的按键,串口会打印相应的键值

【照片】
LED KEY-01.jpgLED KEY-2.jpgLED KEY-3.jpgLED KEY-4.jpg

Timer(T1)

程序说明

  • 使用定时器1计时,定时控制LED1亮灭

实验操作

【步骤】

  1. 接上LED1 JMP和UART0的跳线帽
  2. 供电,下载例程

【现象】

  • LED1有规律亮灭

Timer(T3)

程序说明

  • 使用定时器3计时,定时控制LED1亮灭

实验操作

【步骤】

  1. 接上LED1 JMP和UART0的跳线帽
  2. 供电,下载例程

【现象】

  • LED1有规律亮灭

DS18B20

程序说明

  • 通过1-Wire口来检测温度传感DS18B20+上的温度

实验操作

【步骤】

  1. 接上DS18B20+到1-WIRE接口 (注意:DS18B20+接入的方向不能接反,否则易烧坏)
  2. 供电,并下载例程

【现象】

  • 串口显示出DS18B20+上感应到的温度值

【照片】
DS18B20-1.jpgDS18B20-2.jpg

External interrupt

程序说明

  • 通过按键触发外部中断来控制LED1亮灭

实验操作

【步骤】

  1. 接LED1 JMP和KEY1 JMP跳线帽
  2. 供电,并下载例程

【现象】

  • 按键KEY1,LED1会有亮灭变化

UART0

程序说明

  • 使用UART0自发自收数据

实验操作

【步骤】

  1. 接上UART0 JMP跳线帽
  2. 供电,并下载例程

【现象】

  • 串口显示程序自发自收的数据

【照片】
UART0-2.jpg

UART0 -printf

程序说明

  • 使用UART0与外部进行数据通信

实验操作

【步骤】

  1. 接上UART0 JMP跳线帽
  2. 供电,并下载例程

【现象】

  • 通过串口助手发送字符给MCU,MCU收到后打印出来。

【照片】
UART0 -printf-2.jpg

SPI1_AT45DB

程序说明

  • 使用SPI接口对外设AT45DBXX芯片进行数据的先写后读,并把写入和读取的状态通过串口打印出来

实验操作

【步骤】

  1. 接上UART0 JMP跳线帽
  2. 供电,并下载例程

【现象】

  • 通过串口助手打印出对AT45DBXX的操作状态

【照片】
SPI AT45DBXX-1.jpg SPI AT45DBXX-2.jpg

ADC

程序说明

  • 程序持续地对ADC7的模拟值进行检测,并把检测到的值通过UART0打印出来

实验操作

【步骤】

  1. 接上UART0 JMP跳线帽
  2. 供电,并下载例程

【现象】

  • 通过串口助手打印出ADC7端口的模拟量

【照片】
ADC-1.jpg ADC-2.jpg

AD_Thermometer

程序说明

  • 使用片设的温度传感功能检测温度,并把值通过UART0打印出来

实验操作

【步骤】

  1. 接上UART0 JMP跳线帽
  2. 供电,并下载例程

【现象】

  • 通过串口助手打印出温度值

【照片】
AD Thermometer-2.jpg

【以下实验配套ZB600测试】

JOYSTICK

程序说明

  • 通过JOYSTICK按键触发,并把按键值通过UART0打印出来

实验操作

【步骤】

  1. 接上UART0 JMP、KEY JMP跳线帽
  2. 供电,并下载例程

【现象】

  • 拨动JOYSTICK,串口打印相应的键值

【照片】
JOYSTICK-1.jpg JOYSTICK-2.jpg

DHT11

程序说明

  • 通过P0_0引脚作为ADC功能使用,来获取DHT11传感器上传来的温湿度值,并通过UART0打印出来。

实验操作

【步骤】

  1. 接上UART0 JMP跳线帽
  2. 接上DHT11 Temperature-Humidity Sensor
  3. 供电,并下载例程

【现象】

  • 串口打印出获取到的温湿度值

【照片】
DHT11-1.jpg DHT11-2.jpg

LCD_Touchpanel

程序说明

  • 通过IO口来驱动2.2inch LCD,支持显示画面和触摸画图。

实验操作

【步骤】

  1. 接上2.2inch 320x240 Touch LCD (A)
  2. 供电,并下载例程

【现象】

  • 2.2inch LCD显示画面,并可触摸划线

【照片】
LCD Touchpanel-1.jpg