CC2530芯片基础实验

CC2530芯片基础实验

实验目录

    1.跑马灯实验
    2.串口收发数据实验
    3.按键控制实验

===========================================================================================

1.跑马灯实验

1. 实验环境

1 ) 硬件:通用节点或任意传感器节点一个、USB仿真器、USB电缆、PC机
2 ) 软件:IAR Embedded Workbench、串口调试工具

2. 实验内容

1 ) 通过程序控制LED的点亮熄灭,并有一定的样式。

3.软件设计

#include 

#define D_COUNT   50        //通用延时时间计数

/***************************************
延时函数,n为延时周期计数
***************************************/
void Delay(unsigned int n)
{
  unsigned int t,tt;
  for(tt=0;tt0;i--)     //P0依次亮起
    {
      P0 = 0XFF >> i;         
      Delay(D_COUNT);       
    }
    P0 = 0XFF;
    
    for(i=8;i>0;i--) //P1依次亮起
    {
     P1 = 0XFF >> i;       
      Delay(D_COUNT);       
    }
    
    P1= 0xFF;
    
    
      for(i=0;i<8;i++)   //P1依次熄灭
    {
      P1 = 0XFF >>i;      
      Delay(D_COUNT);
    }
    P1 = 0x00;
    
    
    for(i=0;i<8;i++) //P0依次熄灭
    {
      P0 = 0XFF >> i;         
      Delay(D_COUNT);       
    }
    
    
    
    
    for(i=0;i<2;i++) //同时亮灭
    {
      P0 = 0xFF;
      P1 = 0XFF;
      Delay(100);
      P1 = 0X00;
      P0 = 0X00;
      Delay(100);
    }
    
  }
}


4.实验步骤

1) 使用USB 仿真器连接PC 机和一个ZIGBEE通用节点模块,模块电源开关处于“ON”档,使用电池给模块供电(如电池电量低插上USB电缆,可一边充电一边使用)。

 


CC2530芯片基础实验_第1张图片

2) 连接USB电缆时,需要安装相应的USB转串口的驱动程序,重新拔插USB电缆,待驱动自动加载好。Win+R打开运行窗口,输入compmgmt.msc打开计算机管理,选择下拉菜单中的设备管理器,在设备管理器中找到 端口(COM和LPT),记住相应的串口号“USB-SERIAL CH340(COMXX)”

 


CC2530芯片基础实验_第2张图片

3) 启动IAR 开发环境,打开“...\2-串口”目录下的实验工程CC2530_TEST.eww。

 


CC2530芯片基础实验_第3张图片

4) 在IAR 开发环境中编译程序、点击 下载、调试程序。按“F5”使程序运行。

 


CC2530芯片基础实验_第4张图片

5) 在相对应的节点模块上可看到实验效果。

 


CC2530芯片基础实验_第5张图片

 


CC2530芯片基础实验_第6张图片

实验目录

===========================================================================================

2· 串口收发数据实验

1. 实验环境

1 ) 硬件:通用节点或任意传感器节点一个、USB仿真器、USB电缆、PC机
2 ) 软件:IAR Embedded Workbench、串口调试工具

2. 实验内容

1 ) 熟悉Zigbee硬件模块相关接口;
2 ) 使用IAR 开发环境设计程序,利用CC2530 的串口0 进行数据收发通讯

3. 实验原理

1 ) 硬件接口原理:
在CC2530中,我们总共有2个可用的串行接口,这些串行接口可被配置为标准串口或者SPI接口。这个例程中我们只使用USART0,并且工作在UART标准串口模式下。由于每种设置都有2套可用的IO映射,这里根据我们的硬件设置,我们应该使用其默认设置,UART0的TX和RX对应于P0_3和P0_2。

 


CC2530芯片基础实验_第7张图片

部分外设复用IO对应图

首先我们需要了解CC2530 的IO口相关寄存器:

 


P0 寄存器

P0 寄存器

 


P0SEL 寄存器

P0SEL 寄存器

 


P0DIR 寄存器

P0DIR 寄存器

以上图表列出了关于CC2530 处理器的P0 IO口相关的寄存器,其中P0 寄存器为IO数据寄存器,P0SEL为外设功能选择寄存器,P0DIR 为IO 输入输出选择寄存器,例程中我们需要对这3个寄存器进行IO配置相关设置,其他相关寄存器使用默认配置。如想深入了解请自行参考CC2530 的芯片手册。 其次,我们要对芯片的时钟操作有所了解,因为程序的启动部分,需要先对芯片时钟进行配置。

 


CC2530芯片基础实验_第8张图片

CLKCONCMD 寄存器

 


CC2530芯片基础实验_第9张图片

CLKCONSTA 寄存器

 


CC2530芯片基础实验_第10张图片

SLEEP 控制寄存器

本例程中,程序通过配置以上寄存器将系统主时钟设置为片外32M晶振。 然后是串行接口外设相关寄存器,通过设置这些寄存器,我们将串行接口设定为预想的模式

 


CC2530芯片基础实验_第11张图片

PERCFG 寄存器

 


CC2530芯片基础实验_第12张图片

U0CSR 寄存器

 


CC2530芯片基础实验_第13张图片

U0GCR 寄存器

 


U0BUF 寄存器

U0BUF 寄存器]

 


U0BAUD 寄存器

U0BAUD 寄存器

以上图表列举了和CC2530串口操作定相关的寄存器,其中包括CLKCONCMD控制寄存器,用来控制系统时钟源,SLEEP 寄存器用来控制各种时钟源的开关和状态。PERCFG 寄存器为外设功能控制寄存器,用来控制外设功能模式。U0CSR、U0GCR、U0BUF、U0BAUD 等位串口相关寄存器。

 


CC2530芯片基础实验_第14张图片

USB转串口部分原理图

上图是节点的串口相关电路原理图。在这个图中,我们可以看到CH340芯片完成了USB转串口的工作,通过USB电缆连接节点和计算机后,CH340芯片会在计算机中虚拟一个串口,这个串口信号对于图中的CH340_TXD和CH340_RXD,通过J2上的跳线帽与CC2530的P0.2和P0.3引脚相连。 通过之前的IO映射复用图我们可以发现,P0.2和P0.3对应的是USART0在UART模式下的RXT和TXD引脚。
2) 软件设计
#include "ioCC2530.h"
#include "ioCC2530.h"
#include 
#define uint unsigned int
#define uchar unsigned char
//定义控制灯的端口
#define led1 P1_0
#define led2 P1_1
void InitIO(void);                          //IO初始化
void InitUart(void);                        //串口初始化
void SendString(char*string,uint legth);    //发送字符串
uchar temp;               // 存放接受的数据
char wch[] = "Welcome to test this program!\n";
/*****************************************************************************
  功能描述: 延时
  Count:    延时单位数量 
*****************************************************************************/
void DelayXms(unsigned int Count)
{
 unsigned int i;
 unsigned int j;
 for(i = 0; i < Count; i++)
 {
    for( j=10000; j>0; j--);
 }
}
/*****************************************************************************
  功能描述: IO初始化
*****************************************************************************/
void InitIO(void)
{
    SLEEPCMD &= ~0X04;
    CLKCONCMD = 0X10;           //32k和32M时钟使用外部晶体,timer分频8M
    while(CLKCONSTA!=0X10);     //等待时钟切换
    SLEEPCMD = 0X04;	
    
    P2DIR = 0x00;              //高两位零   若设则最高优先USART0
    P1DIR|= 0X03;              //P1.0 P1.1 LEDs 灯端口配置
    P0DIR|= 0X00;              //input
    
    PERCFG = 0x00;              //UART0 默认端口
    P1SEL = 0X00;
    P0SEL = 0X0c;               //P0<3:2>设置成外围应用

}
/*****************************************************************************
  功能描述: 串口初始化
*****************************************************************************/
void InitUart(void)
{
    U0CSR |= 0x80;				//UART方式
    U0GCR = 11;				        //baud_e 波特率设为115200
    U0BAUD |= 216;				//baud_m = BaudRate*2^(28-buad_e)/32M-256
                                                //BaudRate=(256+baud_m)/2^(28-buad_e)x32MHz
    UTX0IF = 1;                                 //接收中断标记
    U0CSR |= 0X40;				//允许接收
    URX0IE = 1;                                 //接收中断使能
    EA =1;                                      //总中断开关打开
}
/*****************************************************************************
  功能描述: 串口发送字符串
  string:   字符串指针
  lenth:   长度
*****************************************************************************/
void SendString(char*string,uint lenth)
{
    uint j;
    for (j=0; j
程序中主要有这几个函数: DelayXms(unsigned int Count):延时函数。 InitIO():完成IO初始化功作。首先将系统切换到32Hz主晶振下工作并配置芯片内部频率,因为串口工作波特率较高,芯片对串口信息的处理要求其工作频率也较高,所以需要在32M频率下工作。然后配置相关IO寄存器,包括2个LED灯的控制IO口为输出模式,2个串口收发信号引脚为特殊功能应用模式。 InitUart():完成串口的初始化工作。其中对串口寄存器进行设置,最重要的是串口的波特率设置。我们找到CC2530用户手册的P160页,其中有对波特率相关计算的详细描述。这里归纳其计算公式为:

 


在这里插入图片描述

其中BAUD_M和BAUD_E为相关寄存器中的设置位。下表归纳了在系统时钟为32MHz频率下的常用波特率对于设置值。

 


CC2530芯片基础实验_第15张图片

系统时钟为32MHz时的常用波特率配置

这里通过配置CC2530 处理器的串口相关控制寄存器来设置串口0 的工作模式为串口模式,波特率为115200,使用中断方式接受串口数据并向串口输出。 SendString(char*string,uint legth):完成从串口发送字符串。其中2个参数分别为发送字符串地址和字符串长度。 main():主函数。完成各种初始化后进入循环等待串口接收中断被触法。 UART0_ISR():串口接收中断函数。将收到的字符从串口发回。同时改变LED灯的状态,指示串口收到数据。 主函数和中断函数的流程图如下:

 


CC2530芯片基础实验_第16张图片

main函数和中断函数程序流程图

4. 实验步骤

1) 使用USB 仿真器连接PC 机和ZIGBEE模块。将系统配套USB线一端连接PC 机,一端连接ZIGBEE模块的MINI-USB接口上。 注意:如果使用通用节点运行本例程,请检查板子上的“TXD”和“RXD”位置跳线帽是否已经插上(右下图圆圈处),下方的电源开关打到“OFF”档,节点使用仿真器连接供电。 如果使用传感器节点运行本例程,请检查板子上的“TXD”和“RXD”位置跳线帽是否已经插上(左下图圆圈处),下方的电源开关打到“OFF”档,节点使用仿真器连接供电。

 


CC2530芯片基础实验_第17张图片

2) 连接USB电缆时Win+R打开运行窗口,输入compmgmt.msc打开计算机管理,选择下拉菜单中的设备管理器,在设备管理器中找到 端口(COM和LPT),记住相应的串口号“USB-SERIAL CH340(COMXX)”

 


CC2530芯片基础实验_第18张图片

3) 启动IAR 开发环境,打开“...\2-串口”目录下的实验工程CC2530_TEST.eww。

 


CC2530芯片基础实验_第19张图片

4) 在IAR 开发环境中编译程序、点击 下载、调试程序。按“F5”使程序运行。

 


CC2530芯片基础实验_第20张图片

5) 打开“...\2-串口”目录下的串口调试程序“串口调试程序(支持中文).EXE”。按照下图设置这几项:串口号选择刚刚在设备管理器中记下的串口号;波特率选择“115200”;数据位8位;停止位1位;校验位none;流控制none等其他均为默认。点击右下角的发送数据按钮,可以看到接受文本框中显示接受到同样的数据。

 


CC2530芯片基础实验_第21张图片

6) 点击仿真器上的RESET按钮,可以看到相应的字符串又被返回到串口测试窗口中。

 


CC2530芯片基础实验_第22张图片

测试结果图

将源程序中的“Welcome to test this program”更改为“Welcome”即可在串口调试程序窗口中看到相对应修改后的结果

实验目录

===========================================================================================

3.按键控制实验

1.实验环境

1) 硬件:传感器节点一个、USB仿真器、PC机
2) 软件:IAR Embedded Workbench

2.实验内容

1) 熟悉Zigbee硬件模块相关接口
2) 使用IAR 开发环境设计程序,利用CC2530 的GPIO读取按键值并相应对进行LED发光二极管的亮灭操作

3.实验原理

1) 硬件接口原理
如图所示,按键部分的电路图比较简单。UserINT信号连接的是芯片的P2.0引脚,在按键没有被按下时(处于断开状态),经过电阻R9的上拉作用,UserINT信号是处于高电平的,而当按键按下时,UserINT信号直接和地相连,这样处于低电平。在芯片内通过检测P2.0口的输出状态就可以知道按键的状态。电容C4在按键松开的时候起到对输出信号的缓冲作用,这样可以过滤掉部分干扰信号,使得输出信号较为平滑

 


CC2530芯片基础实验_第23张图片

按键部分电路原理图

2) 软件设计
#include 
#define D_COUNT   50        //标准延时周期计数
#define KEY_INPUT P2_0      //定义按键引脚
/*****************************************************************************
  功能描述: 延时
  Count:    延时单位数量 
*****************************************************************************/
void Delay(unsigned int n)
{
  unsigned int t,tt;
  for(tt=0;tt
程序通过读取P2.0的信息来获得按键的状态,同时对P1上的2个发光二极管进行操作。程序中的长延时是为了使得一定时间内的按下只被识别为一次按下,短延时是为了滤掉可能的干扰信号。程序的流程图如下。

 


CC2530芯片基础实验_第24张图片

程序流程图

4.实验步骤

1) 使用USB 仿真器连接PC 机和任意一个传感器节点模块,模块电源开关处于“ON”档,使用电池给模块供电(如电池电量低插上USB电缆,可一边充电一边使用)。

 


CC2530芯片基础实验_第25张图片

2) 启动IAR 开发环境,打开“...\3-按键控制”目录下的实验工程。

 


CC2530芯片基础实验_第26张图片

3) 在IAR 开发环境中编译程序、点击 下载、调试程序。按“F5”使程序运行。

 

CC2530芯片基础实验_第27张图片

4) 观察现象,可以看到2个发光二极管都没有亮起;按下模块中间的“KEY”按键,观察2个发光二极管的状态;重复按键操作,尝试长按或短按,观察发光二极管状态。修改程序中的延时数值(下图中红点行)后再重复上面操作,体会不同延时下的效果。

 


CC2530芯片基础实验_第28张图片

 


CC2530芯片基础实验_第29张图片

 

CC2530芯片基础实验_第30张图片

延时语句位置

实验目录

===========================================================================================

你可能感兴趣的:(CC2530芯片基础实验)