Core2530-XCore2530 用户手册
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,选择安装路径
- 点击 Install,等待安装完成
- 安装结束后,连接CC Debugger到电脑,打开windows 设备管理器,如有下图显示的硬件,说明驱动安装成功。
3. 烧录Bootloader
- 将模块安装到底板上,通过USB线连接电脑,同时连接CC Debugger
- 打开底板电源,按下CC Debugger上的RESET按键,如果指示灯变为绿色说明通信正常,可以下载。
- 打开SmartRF Studio7,选择软件右上角Flash Programmer并打开。
- 选择Program CCxxxx Soc or MSP430,Flash image处选择需要下载的烧录文件,这里选择bootloader_wait.hex,单击Perform actions开始下载。
- 如果底部出现信息: program and verify OK,同时底板LED1开始闪烁,说明下载成功。
固件下载
这里以两套Core2530 + ZB600为例,分别烧录协调器和路由器固件,完成组网。为方便描述,将这两套系统称为A和B。
- 将A、B通过USB线接入电脑,上电后分别记录对应的串口号
- 如果之前已有固件,重新复位A或B后,LED1和LED2会交替闪烁(若使用XCore2530则只是LED1快速闪动),需要按KEY1进入Bootloader模式,进入后LED1闪烁。如果没有固件,上电后LED1闪烁,说明直接进入Bootloader模式,不需要按KEY1。
- 打开串口烧录软件 Serial Boot Tool
- 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”,操作现象如下: 字符串输入框输入以下字符,点击发送:
所有路由和协调器的字符串接收框都可以接收以下信息:
|
点对点通信
描述:实现网络中任意两个节点之间的通信
格式:P2P 目的地址 要发送的数据
说明:点对点传输模式,一次最多允许传输40bytes的数据内容
示例:
如果A模块要向B模块发送数据“Hello World”,操作和现象如下: 通过AT+GETADDR读取A和B模块的短地址 字符串输入框:
便能够读取到A模块和B模块的地址:
在A模块使用P2P指令就可以给B模块发送数据了。如下:
此时就只有B模块能收到以下数据,其他的节点和路由都无法收到数据。
|
- 【例子】:
点对多通信
描述:一个节点向指定的多个节点发送数据
格式:O2M 目的地址个数 目的地址1 目的地址2 … 发送的数据
示例:
如果A模块要向B,C模块发送数据“Hello World”,操作和现象如下: 通过AT+GETADDR读取A,B,C模块的短地址 字符串输入框:
字符串接收框:
在A模块使用O2M指令就可以给B、C模块发送数据了。如下:
此时就只有B,C模块能收到以下数据,其他的节点和路由都无法收到数据。
|
使用上位机
上位机介绍
ZBSCOMM是微雪电子根据本模块专门开发的一款上位机软件,通过它可以对模块进行设置并且能够读取当前模块的配置信息;如果你不想采用上位机配置模块,同样也可以通过模块内置的AT指令集完成操作。
指令详解
表 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” 点击发送即可,需重启设备才生效,操作和现象如下: 字符串输入框:
字符串接收框:
|
表 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并打印出来。
实验操作
【步骤】
- 接上KEY JMP和UART0的跳线帽
- 供电,下载例程
【现象】
- 分别按板上的按键,串口会打印相应的键值
Timer(T1)
程序说明
- 使用定时器1计时,定时控制LED1亮灭
实验操作
【步骤】
- 接上LED1 JMP和UART0的跳线帽
- 供电,下载例程
【现象】
- LED1有规律亮灭
Timer(T3)
程序说明
- 使用定时器3计时,定时控制LED1亮灭
实验操作
【步骤】
- 接上LED1 JMP和UART0的跳线帽
- 供电,下载例程
【现象】
- LED1有规律亮灭
DS18B20
程序说明
- 通过1-Wire口来检测温度传感DS18B20+上的温度
实验操作
【步骤】
- 接上DS18B20+到1-WIRE接口 (注意:DS18B20+接入的方向不能接反,否则易烧坏)
- 供电,并下载例程
【现象】
- 串口显示出DS18B20+上感应到的温度值
External interrupt
程序说明
- 通过按键触发外部中断来控制LED1亮灭
实验操作
【步骤】
- 接LED1 JMP和KEY1 JMP跳线帽
- 供电,并下载例程
【现象】
- 按键KEY1,LED1会有亮灭变化
UART0
程序说明
- 使用UART0自发自收数据
实验操作
【步骤】
- 接上UART0 JMP跳线帽
- 供电,并下载例程
【现象】
- 串口显示程序自发自收的数据
UART0 -printf
程序说明
- 使用UART0与外部进行数据通信
实验操作
【步骤】
- 接上UART0 JMP跳线帽
- 供电,并下载例程
【现象】
- 通过串口助手发送字符给MCU,MCU收到后打印出来。
SPI1_AT45DB
程序说明
- 使用SPI接口对外设AT45DBXX芯片进行数据的先写后读,并把写入和读取的状态通过串口打印出来
实验操作
【步骤】
- 接上UART0 JMP跳线帽
- 供电,并下载例程
【现象】
- 通过串口助手打印出对AT45DBXX的操作状态
ADC
程序说明
- 程序持续地对ADC7的模拟值进行检测,并把检测到的值通过UART0打印出来
实验操作
【步骤】
- 接上UART0 JMP跳线帽
- 供电,并下载例程
【现象】
- 通过串口助手打印出ADC7端口的模拟量
AD_Thermometer
程序说明
- 使用片设的温度传感功能检测温度,并把值通过UART0打印出来
实验操作
【步骤】
- 接上UART0 JMP跳线帽
- 供电,并下载例程
【现象】
- 通过串口助手打印出温度值
【以下实验配套ZB600测试】
JOYSTICK
程序说明
- 通过JOYSTICK按键触发,并把按键值通过UART0打印出来
实验操作
【步骤】
- 接上UART0 JMP、KEY JMP跳线帽
- 供电,并下载例程
【现象】
- 拨动JOYSTICK,串口打印相应的键值
DHT11
程序说明
- 通过P0_0引脚作为ADC功能使用,来获取DHT11传感器上传来的温湿度值,并通过UART0打印出来。
实验操作
【步骤】
- 接上UART0 JMP跳线帽
- 接上DHT11 Temperature-Humidity Sensor
- 供电,并下载例程
【现象】
- 串口打印出获取到的温湿度值
LCD_Touchpanel
程序说明
- 通过IO口来驱动2.2inch LCD,支持显示画面和触摸画图。
实验操作
【步骤】
- 接上2.2inch 320x240 Touch LCD (A)
- 供电,并下载例程
【现象】
- 2.2inch LCD显示画面,并可触摸划线