【转贴】CC2430单片机原理及应用实验指导书

单片机相关 徐 自远 788℃ 0评论
  • CC2430教学实验装置硬件介绍
  1. CC2430模块介绍

1.1.1 CC2430单片机的主要特点:

CC2430单片机是TI公司(德州仪器)生产的一款专用于IEEE 802.15.4和Zigbee协议通信的片上系统解决方案。其RF内核是基于工业领先的射频通信芯片CC2420。在单个芯片上集成了CPU、存储器、常用片内外设和RF射频单元。它具有1个8 位CPU(8051),主频达32MHZ,具有最大128 KB可编程FLASH和8KB的SRAM,片内外设非常丰富,主要包括1个5通道8位至14位可编程ADC转换器、4个定时器(其中包括一个MAC定时器)、2个USART,1个DMA控制器、1个AES128 协同处理器、1个看门狗定时器、1个内部稳压器、21个可编程I/O 引脚,可配置为通用I/O,也可配置为外设专用引脚。CC2430 芯片采用0.18μm CMOS工艺生产,在接收和发射模式下,电流损耗分别低于27mA和25mA。具有3种休眠模式,从休眠模式转换到正常模式仅需54us,特别适合要求电池长期供电的应用场合。其主要特点如下:

  1. 高性能和低功耗的8051微控制器核。
  2. 集成符合IEEE802.15.4标准的2.4 GHz的RF无线电收发机。
  3. 优良的无线接收灵敏度和强大的抗干扰性。
  4. 32,64,128KB在线系统可编程FLASH。
  5. 多通道DMA控制器。
  6. 非常少的外部组件。
  7. 低电流功耗(运行在32MHZ时,RX:27mA,TX:25mA)。
  8. 在休眠模式时仅0.9 μA 的电流功耗,外部的中断或RTC 能唤醒系统。
  9. 在待机模式时少于0.6μA 的流耗,外部的中断能唤醒系统。 
  10. 从低功耗到正常工作模式需要的时间极少。                         
  11. 硬件支持CSMA/CA 功能。
  12. 较宽的电压范围(2.0~3.6 V)。
  13. 支持数字RSSI/LQI指示。
  14. 具有电池监测和温度传感器。
  15. 8通道8~14 位模数转换的ADC。
  16. 集成 AES 安全协处理器。
  17. 带有 2 个强大的支持多组串行协议的USART
  18. 1个符合IEEE 802.15.4 规范的MAC定时器,1个16 位定时器和2个8 位定时器。
  19. 21个通用I/O引脚,其中有2个具有20mA灌电流和拉电流能力。
  20. 灵活功能强大的的开发环境

 

1.1.2 CC2430 芯片的引脚功能

  CC2430 芯片采用7 mm×7mm QLP封装,共有48个引脚。全部引脚可分为I/O 端口线引脚、电源线引脚和控制线引脚三类。

1)I/O端口线引脚功能

CC2430有21个可编程的I/O口引脚,P0、P1端口是全的8 位的,P2 端口只有5 个引脚。通过软件配置相关SFR特殊功能寄存器,可使引脚作为通用输入输出引脚、片内外设使用引脚或外部中断使用引脚。I/O口关键特性如下:

  • 可设置为通用I/O 口,也可设置为片内外设使用的I/O口。
  • 在输入时,可设置为上拉、下拉或三态状态。
  • 全部21个I/O引脚都具有响应外部的中断能力,中断可以用来唤醒休眠。

1~6 脚(P1_2~P1_7):具有4mA输出驱动能力。

8,9 脚(P1_0,P1_1):具有20mA的驱动能力。

11~18脚(P0_0 ~P0_7):具有4mA输出驱动能力。

43,44,45,46,48 脚(P2_4,P2_3,P2_2,P2_1,P2_0):具有4mA输出驱动能力。

2) 电源线引脚功能

7 脚(DVDD):为 I/O提供2.0~3.6V工作电压。

20 脚(AVDD_SOC):为模拟电路连接2.0~3.6V的电压。

23 脚(AVDD_RREG):为模拟电路连接2.0~3.6V的电压。

24 脚(RREG_OUT):为25,27~31,35~40引脚端口提供1.8V的稳定电压。

25 脚 (AVDD_IF1 ):为接收器波段滤波器、模拟测试模块和VGA 的第一部分电路提供1.8 V电压。

27 脚(AVDD_CHP):为环状滤波器的第一部分电路和充电泵提供1.8V电压。

28 脚(VCO_GUARD):VCO屏蔽电路的报警连接端口。

29 脚(AVDD_VCO):为VCO和PLL环滤波器最后部分电路提供1.8V电压。

30 脚(AVDD_PRE):为预定标器、Div-2 和LO缓冲器提供1.8V的电压。

31 脚(AVDD_RF1):为LNA、前置偏置电路和PA 提供1.8V的电压。

33 脚(TXRX_SWITCH):为PA提供调整电压。

35 脚(AVDD_SW) :为LNA/PA交换电路提供1.8V电压。

36 脚(AVDD_RF2):为接收和发射混频器提供1.8V电压。

37 脚(AVDD_IF2):为低通滤波器和VGA 的最后部分电路提供1.8V电压。

38 脚(AVDD_ADC):为ADC和DAC的模拟电路部分提供1.8V电压。

39 脚(DVDD_ADC):为ADC的数字电路部分提供1.8 V电压。

40 脚(AVDD_DGUARD):为隔离数字噪声电路连接电压。

41 脚(AVDD_DREG):向电压调节器核心提供2.0~3.6V电压。

42 脚(DCOUPL): 提供1.8 V 的去耦电压,此电压不为外电路所使用。

47 脚(DVDD): 为I/O 端口提供2.0~3.6V的电压。

3) 控制线引脚功能

10 脚(RESET_N):复位引脚,低电平有效。

19 脚(XOSC_Q2):32 MHz的晶振引脚2。

21 脚(XOSC_Q1):32 MHz的晶振引脚1,或外部时钟输入引脚。

22 脚(RBIAS1):为参考电流提供精确的偏置电阻。

26 脚(RBIAS2):提供精确电阻,43 kΩ,±1%。

32 脚(RF_P):在RX 期间向LNA 输入正向射频信号,在TX 期间接收来自PA 的输入正向射频信号。

34 脚(RF_N):在RX 期间向LNA 输入负向射频信号;在TX 期间接收来自PA 的输入负向射频信号。

43 脚 (P2_4/XOSC_Q2): 32.768 kHz XOSC的2.3端口。

44 脚 (P2_4/XOSC_Q1): 32.768 kHz XOSC的2.4端口。

1.1.3 CC2430 芯片典型应用电路

CC2430芯片的应用电路,如图1.1所示,图中数字I/O、ADC接口未连接,解耦电容未画出。电路使用一个非平衡天线,连接非平衡变压器可使天线性能更好。电路中的非平衡变压

器由电容C341和电感L341、L321、L331以及一个PCB微波传输线组成,整个结构满足RF输入/输出匹配电阻(50Ω)的要求。内部T/R交换电路完成LNA和PA之间的交换。R221和R261 为偏置电阻,电阻R221主要用来为32 MHz的晶振提供一个合适的工作电流。用1个32 MHz 的石英谐振器(XTAL1)和2个电容(C191 和C211)构成一个32 MHz 的晶振电路。用1个32.768 kHz 的石英谐振器(XTAL2)和2个电容(C441 和C431)构成一个32.768 kHz的晶振电路。电压调节器为所有要求1.8 V 电压的引脚和内部电源供电,C241和C421电容是去耦合电容,用来电源滤波,以提高芯片工作的稳定性。


图1.1 CC2430应用电路

1.1.4 CC2430模块实物图及说明


图1.2 CC2430 模块实物图

外部扩展I/O引脚分为A、B两排,与插座引脚的对应关系如表1.1

I/O引脚

插座引脚编号

I/O引脚

插座引脚编号

 

A1

 

B1

 

A2

 

B2

 

A3

 

B3

 

A4

 

B4

 

A5

 

B5

 

A6

 

B6

 

A7

 

B7

 

A8

 

B8

 

A9

 

B9

 

A10

 

B10

 

A11

 

B11


表1.1 CC2430模块插座引脚与I/O引脚的对应关系

1.1.5 CC2430模块的主要性能

项目

规格

备注

频率范围

2400~2483.5MHz

 

信道数量

16个

每个信道带宽为5MHZ

电流消耗

RX:27mA TX:25mA

主频32MHZ,工作电压3V下

工作电压

2.0-3.6VDC

 

输出功率

< 0dBm

可编程配置

接收灵敏度

-92dBm

 

传输速率

250kbps

包含帧头

通信距离

<70m

空旷下测得

工作温度

-40~85℃

 

                    表1.2 CC2430模块的主要性能参数

 

 

 

  1. CC2430实验板原理图及外围接口

如图1.3所示,为CC2430实验板的实物图,图中标注出了实验板的主要部分,CC2430射频插座主要用来连接CC2430射频模块,连接的方向如图2.1所示。实验板上不带电源稳压器,可以通过电池(2.7~3.6VDC)供电,也可以通过仿真器供电。LCD和按键构成人机交互界面,RS232串口可以直接连接计算机进行通信。发光二极管和电位器在实验中经常用到,主要用来指示和AD采样。1820是单总线温度传感器芯片,在后续实验中用来采集环境温度。 下面分别介绍其电路工作原理。


 


                            


图1.3 实验板实物图

                                                                            

1.2.1仿真器插座和电池插座

实验板通过方针器插座或电池插座给实验板供电,电压范围为2.7~3.6VDC。电源接通后,电源指示灯亮。仿真器的引脚排列如下:

 

 

 

 

 

1.2.2 CC2430射频模块插座

CC2430射频插座用于连接CC2430射频模块和实验板,两者配合通过仿真器完成后续的诸多实验,其引脚和连接关系已在1.1.3节中介绍。插入前务必确定插头与插座一一对应(如图2.1所示)。

  1. RS232插座

如图1.4所示,为异步串行通信TTL电平与RS232电平相互转换的电路,SP3223E为两路电平转换集成芯片,电路中只使用了其中一路,注意其与标准九针串口连接和与CC2430引脚连接关系。

 


图1.4 RS232与TTL电平转换电路

  1. 键盘及LED发光二级管电路

实验板上键盘共6个,如图1.5所示,其中,S1、S2、S3、S4四个按键通过电阻分压取得,程序中通过AD数模转换器采集第6通道(即P0.6引脚)上的模拟电压,根据采集的值范围的不同来确定哪个键按下。S5、S6两个按键可以通过查询P0.4和P0.5引脚的电平高低来判断按键是否按下。 LED为共阳接法,红绿蓝LED分别连接P1.0、P1.1、P1.2引脚,引脚为低电平时,LED亮。


图1.5 键盘电路


图1.6 LED发光二极管电路

  1. LCD液晶显示模块

LCD显示模块与CC2430连接如图1.7所示,LCD采用串行控制,其控制时序、控制字等内容,详见参考文献MzL05-12864 LCD模组编程手册v1.0


图1.7 LCD液晶显示模块电路

 

  1. 电位器

电位器主要给P0.7引脚供模拟电压,测试AD数模转换器。


图1.8 电位器电路

 

  1. 1820温度采集与短路块

1820芯片为1-wire总线温度传感器芯片,可用来采集环境温度,具体控制时序、控制协议,详见参考手册。。。。

短路块的作用是。。。。。。

 

 

 

 

 

 

 

 

 

 

 

第二章 实验设备安装

2.1、开发环境

开发CC2430应用系统一般需要以下设备和软件调试工具:

  1. 通用PC机一台,安装Windows2000或WindowsXP操作系统。
  2. CC2430射频模块、CC2430实验板和SmartRF仿真器一套
  3. TI公司CC2430软件集成开发环境IAR Embedded Workbench.
  4. 仿真器驱动程序
  5. 实验程序及文档

2.2、硬件连接

1、将CC2430射频模块插在实验板上。

2、使用10芯连接线连接实验板和仿真器。

3、使用USB线连接仿真器和PC机

请按照图2.1所示连接,连接后实验板电源指示灯将点亮。注意连接线不要插错,如要使用电池供电应先通过仿真器将程序下载到CC2430芯片中,然后取掉仿真器,通过电池插座接电池,电池电压不应超过3.6VDC。

 


图2.1 硬件连接图

2.3、安装CC2430软件开发环境

1、双击安装盘”开发软件”文件夹下的”EW8051-EV-720H”安装程序,按提示安装。

2、当需要Licence number注册时,弹出如图2.2所示窗口,需要注册号。运行安装盘”注册机”下的keygen.exe注册机程序,将弹出如图2.3所示窗口,将Hardware ID中的字母全部改成大写,点击Generate命令按钮,将产生的Licence号复制到图2.2第3栏,点击Next命令按钮,将弹出图2.4,同样将Licence Key号复制到图2.4第2栏,按提示安装(建议用户按默认安装路径安装)。

3、安装完成后,可以运行”开始”菜单-〉”程序”-〉IAR System-〉IAR Embedded Workbench for MCS-51 Evaluation->IAR Embedded Wordbench ,将打开图2.5所示窗口,开发环境的界面,后续的所有实验调试都在该软件集成开发环境上调试。

4、安装仿真器驱动程序,打开安装盘上”2430驱动”文件夹,双击”Packet_Sniffer_2_2_0_0″,按默认提示安装;双击”Setup_SmartRF_Studio_6_5_1″ ,按默认提示安装。按图2.1连接射频模块、实验板和仿真器,将USB线插入PC机,将弹出找到新硬件向导窗口如图2.6所示,选择”是,仅这一次(Y)”选项,点击”下一步”命令按钮,将自动完成硬件安装。这样开发环境就安装好了。

            

                         图2.2 IAR License 注册

 


                            图2.3 注册机界面

 


                        图2.4 注册License Key

 


                     图2.5 软件调试开发环境界面

 

 


                        图2.6 新硬件安装向导

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

第三章 处理器基础实验部分

3.1、CC2430软件集成开发环境IAR入门

  • 实验目的

1、了解IAR软件的操作环境和基本功能。

2、了解”工程选项”的设置方法。

3、掌握创建工程和管理工程的方法。

4、了解基本的编译和调试功能

5、学习使用观察窗口

 

  • 实验设备

1、通用PC机一台,安装Windows2000或WindowsXP操作系统。

2、CC2430射频模块、CC2430实验板和SmartRF仿真器一套

3、USB连接电缆一条

 

  • 实验原理

开发CC2430应用系统一般需要以下几个调试工具来完成:

-软件集成开发环境(IAR Embedded Wordbench):完成系统的软件开发,进行软件和硬件仿真调试,它也是硬件调试的辅助手段。

-仿真器(SmartRF):实现硬件仿真调试时与硬件系统的通信,控制和读取硬件系统的状态和数据。

-CC2430射频模块和实验板:提供软件运行和调试的平台和用户系统开发的参照。

IAR Embedded Wordbench主要完成系统的软件开发和调试。它提供了一整套的程序编制、维护、编译、调试环境,能将汇编语言和C语言程序编译成HEX可执行输出文件,并能将程序下载到目标CC2430上运行调试。

用户系统的软件部分可以由IAR建立的工程文件管理,工程文件一般包含以下几种文件:

-源程序文件:C语言或汇编语言文(*.C或*.ASM)

-头文件(*.H)

-库文件(*.LIB,*OBJ)

  • 实验步骤

 1、实验准备

根据图2.1连接实验备,将USB电缆线插到PC机的USB端口上,实验板电源指示灯亮。

2、启动IAR开发环境,打开开始”菜单-〉”程序”-〉IAR System-〉IAR Embedded Workbench for MCS-51 Evaluation->IAR Embedded Wordbench,成功启动IAR后会出现如图2.5所示窗口。下面通过一个简单的LED闪灯程序介绍IAR操作环境。

3、创建工程

(1)创建一个工作区

使用 IAR 开发环境首先应建立一个新的工作区。在一个工作区中可创建一个或多个工程。用户打开 IAR Embedded Workbench 时,已经建好了一个工作区,一般会显示如图3.1所示窗口,可选择打开最近使用的工作区或向当前工作区添加新的工程。 点击”取消”按钮,选择File菜单->New->Wordspace,创建一个新工作区。在创建的新工作区中创建工程。

            

                        图3.1 打开一个工作区

    (2)新建一个工程

点击 Project 菜单,选择 Greate New Project … ,弹出如图3.2对话框,在Tool chain下拉栏中选择8051,Project templates栏中选择”Empty project”,点击”OK”按钮,弹出如图3.3的对话框,在”文件名”文本框中输入文件名,如”ledpro”,点击保存,选择工程保存的位置,如C:\CC2430LAB\301ledpro\,一个空工程就建好了


                        图3.2 创建一个新工程

系统产生两个创建配置:调试和发布。这里使用 Debug,项目名称后的星号指示修改还没有保存。选择菜单 File\Save\Workspace ,给工作区命名如”APP0″,并指明存放路径,这里把它放到新建的工程目录C:\CC2430LAB下。


                         图3.3 保存工程

 


                         图3.3 保存工作区

(3) 添加文件或新建程序文件

选择菜单 Project\Add File,或者在工作区窗口中工程名上点击右键,在弹出的快捷菜单中选择Add File,弹出”Add Files 对话框,选择需要的文件,点击”打开”命令按钮。

如没有建好的程序文件也可点击工具栏上的”new document”或选择菜单File-〉New-〉File新建一个空文本,向文件里添加如下代码:

#include “ioCC2430.h”

 

void Delay(unsigned char n)

{

unsigned char i;

unsigned int j;

for(i = 0; i < n; i++)

for(j = 1; j; j++)

;

}

 

void main(void)

{

//CC2430中,I/O口作通用I/O使用时和每个I/O端口相关的寄存器有3个分别是 PxSEL

//功能选择寄存器,PxDIR方向寄存器,PxINP 输入模式寄存器,其中x为 0,1,2 。

//这里选择P1.0上红色 LED作为 I/O测试。

    SLEEP &= ~0x04;

    while(!(SLEEP & 0x40));        //晶体振荡器开启且稳定

    CLKCON &= ~0x47;        //选择1-32MHz 晶体振荡器

    SLEEP |= 0x04;.

P1SEL = 0x00;            //P1.0为普通I/O口

    P1DIR = 0x01;            //P1.0输出

while(1)

{

        P1_0 = 1;

        Delay(10);

        P1_0 = 0;

        Delay(10);

}

}

选择菜单File->Save弹出保存对话框,文件名取”testpro.c”保存到新建的工程目录C:\CC2430LAB\3011ledpro中。在工作区中右键点击工程名,在弹出的快捷菜单中点击”Add File”将新建的”testpro.c”添加到工程中。这样一个新工程就创建好。

4、设置工程选项

选择 Project 菜单下的 Options… 配置与 CC2430 相关的选项。

(1)General Options

Target标签:

按下图3.4配置Target,选择Code model 和 Data model,以及其它参数。点击 Derivative information栏右边的按钮,选择程序安装位置,IAR Systems\ Embedded Workbench 4.05 Evaluation version\8051\config\derivatives\chipcon下的文件CC2430.i51。

 

 

 

 


                         图3.4配置Target

Data Pointer标签:选择数据指针数1个,16 位。

     Stack/Heap 标签:改变XDATA栈大小到0x1FF。


                     图3.5配置Stack/Heap

(2)Linker 连接器

Output 标签:选中Override default可以在下面的文本框中更改输出文件名。如果要用 C-SPY进行调试,选中format下面的Debug information for C-SPY


图3.5配置Output

Config 标签:

点击Linker command file 栏文本框右边的按钮,选择正确的连接命令文件

Code Model

File

Banked

lnk51ew_cc2430b.xcl

Near

lnk51ew_cc2430.xcl

                    表3.1 连接器命令文件选择


                                图3.6配置连接器命令文件

(3)Debugger 调试器

Setup 标签: 在Device Description file选择CC2430.ddf文件,其位置在程序安装文件夹下,如 C:\Program Files\IAR Systems\Embedded Workbench 4.05 Evaluation version\8051\config\derivatives\chipcon 。


                            图3.6配置调试器

设置完毕后点击”OK”命令按钮,这样工程选项的设置就完成了,这里只是简单设置,关于其复杂设置和详细说明请参考:IAR开发环境中的Help菜单->IAR Embedded Workbench User Guide。

5、编译和调试

选择菜单 Project\Rebuild All对工程进行编译,选择菜单 Project\Debug 或按快捷键 CTRL+D 进入调试状态,也可按工具栏上的调试按钮进入调试,如图3.7所示。

(1)窗口管理:

在 IAR Embedded Workbench 中用户可以在特定的位置停靠窗口,并利用标签组来管理它们。也可以使某个窗口处于悬浮状态,即让它始终停靠在窗口的上层。状态栏位于主窗口底部,包含了如何管理窗口的帮助信息。更详细信息请参考:IAR开发环境中的Help菜单->IAR Embedded Workbench User Guide。

(2)单步调试:

Step Into 执行内部函数或子进程的调用

Step Over 每步执行一个函数调用

Step Out 跳出内部函数或子程序的调用

Next statement 每次执行一个语句

这些命令在常用工具栏上都有对应的快捷按钮。

(3)通过观察窗口观察变量:

选择View菜单->Watch,弹出图3.8所示”观察窗口”,可以在Expression栏下面添加要观察的变量、寄存器名,在Value栏将显示当前的值,若为变量且当前并未为赋值,将显示”无效”,Location栏显示当前变量或寄存器的地址,Type栏显示数据类型。如果要在Watch 窗口中去掉一个变量,先选中,再点右键”remove”。

 

 

 

 


 


                        图3.7 调试环境


                            图3.8 观察窗口

    (4)断点调试

在工程调试中最常使用的方法就是断点调试,方法是:将插入点的位置指向一个语句或靠近一个语句,右键快捷菜单中选择Toggle Breakpoint命令。 设置好的断点,用高亮表示并且在左边标注一个红色的X显示有一个断点存在,如图3.9所示。 可以结合观察窗口观察变量或寄存器的变化。 如要取消断点,在原来断点的设置处再执行一次Toggle Breakpoint命令即可。


                     图3.9断点调试

(5)反汇编调试

在反汇编模式,每一步都对应一条汇编指令,用户可对底层进行完全控制。选择菜单 View\Disassembly,打开反汇编调试窗口如图3.10,用户可看到当前 C 语言语句对应的汇编语言指令。


                                图3.10反汇编调试

(6)监控寄存器

寄存器窗口允许用户监控并修改寄存器的内容。选择菜单 View\Regisster ,打开寄存器窗,如图3.11所示。选择窗口上部的下拉列表,选择不同的寄存器分组,单步调试、断点调试,观察寄存器值的变化情况。

 

 


                     图3.11 观察寄存器的值

(7)监控存储器

存储器窗口允许用户监控寄存器的指定区域,经常被用来检查数组、变量等值。选择菜单 View\Memory,打开存储器窗口。在调试状态下选择j,将它从源代码窗口拖到存储器窗口中。此时存储器窗口中对应的值也被选中, 如图3.12所示。用户可以在存储器窗口中对数据进行编辑,修改,在想进行编辑的存储器数值处放置插入点,键入期望值即可。


                    图3.12 观察存储器的值

(8)退出调试

选择菜单Debug\Stop Debugging或点击调试工具栏上的按钮退出调试模式。

  • 实验结果 选择菜单 Debug\Go ,或点击调试工具栏上 按钮,如果没有断点,程序将一直运行下去,可以看到红色 LED 间隙点亮。
  • 问题与思考

请参考IAR开发环境中的Help菜单->IAR Embedded Workbench User Guide。学习各项设置的含义。

3.2、编写一个以C语言为基础的程序

  1. 实验目的
    1. 学习用标准C编制程序,了解常用的C语言程序设计的方法和组成部分。
    2. 掌握C语言常用数据类型定义和使用。
    3. 掌握常用有符号数、无符号数的算术逻辑运算及位操作运算。
    4. 掌握工程创建的方法和常用调试方法。
  2. 实验设备

1、通用PC机一台,安装Windows2000或WindowsXP操作系统。

2、CC2430射频模块、CC2430实验板和SmartRF仿真器一套

3、USB连接电缆一条

 

  1. 实验原理

1、C语言中的数据类型    

C语言中, 每个变量在使用之前必须定义其数据类型。标准C有以下几种类型: 整型(int)、浮点型(float)、字符型(char)、指针型(*)、无值型(void)以及结构(struct)和联合(union)。这里简要说明前5种。后2种请读者自行查阅相关书籍。正确理解数据类型的定义和使用,对于程序设计者是必须的。

(a)、整型

整型数类型: 可分为如下几种类型,

signed short int  有符号短整型数说明。简写为short或int, 字长为2 字节共16位二进制数, 数的范围是-32768~32767。

 signed long int  有符号长整型数说明。简写为long, 字长为4字节共32位二进制数, 数的范围是-2147483648~2147483647。

 unsigned short int  无符号短整型数说明。简写为unsigned int,  字长为2字节共16位二进制数, 数的范围是0~65535。

unsigned long int  无符号长整型数说明。简写为unsigned long, 字长为4字节共32位二进制数, 数的范围是0~4294967295。

整型变量定义:可以用下列语句定义整型变量:

int a, b;            /*a、b被定义为有符号短整型变量*/

    unsigned long c;     /*c被定义为无符号长整型变量*/

整型常数表示:按不同的进制区分, 整型常数有三种表示方法,

    十进制数:  以非0开始的数

               如:220, -560, 45900

八进制数:  以0开始的数,如:06,0106, 05788

十六进制数:以0X或0x开始的数,如:0X0D, 0XFF, 0x4e

 

(b)、浮点型(float)

浮点数类型:有以下两种类型:

float 单浮点数,字长为4个字节共32 位二进制数,数的范围是 3.4×10-38E~3.4×10+38E。

double 双浮点数,字长为 8个字节共 64 位二进制数, 数的范围是1.7×10-308E~1.7×10+308E。

说明: 浮点数均为有符号浮点数, 没有无符号浮点数。

浮点型变量定义    可以用下列语句定义浮点型变量:

float a, f;     /*a, f被定义为单浮点型变量*/

double b;       /*b被定义为双浮点型变量*/

浮点常数表示 : 例如: +29.56, -56.33, -6.8e-18, 6.365,注意如下说明:

  • 浮点常数只有一种进制(十进制)。
  • 所有浮点常数都被默认为double。
  • 绝对值小于1的浮点数, 其小数点前面的零可以省略。如:0.22可写为.22,
    -0.0015E-3可写为-.0015E-3。
  • C默认格式输出浮点数时, 最多只保留小数点后六位。

 

(c)、字符型(char)

加上不同的修饰符, 可以定义有符号和无符号两种类型的字符型变量, 例如:

char a ;             /*a被定义为有符号字符变量*/

    unsigned char l;     /*l被定义为无符号字符变量*/

字符在计算机中以其ASCII码方式表示, 其长度为1个字节, 有符号字符型数取值范围为-128~127, 无符号字符型数到值范围是0~255。

(d)、指针型(*)

    指针是一种特殊的数据类型, 在其它语言中一般没有。指针是指向变量的地址, 实质上指针就是存贮单元的地址。 根据所指的变量类型不同, 可以是整型指针(int *)、浮点型指针(float *)、字符型指针(char *)、结构指针(struct *)和联合指针(union *)

(e)、无值型(void)
    无值型字节长度为0, 主要有两个用途:  一是明确地表示一个函数不返回任何值; 一是产生一个同一类型指针(可根据需要动态分配给其内存)。

 

2、C语言中的运算符,主要分为如下几类,具体请参照相关参考书。 

(1)算术运算符:

        +、-、*、/、%、++、--

(2)关系运算符:    >、<、= =、>=、<=、!=

(3)逻辑运算符:    !、&&、||

(4)赋值运算符:    =、复合的赋值运算符

(5)逗号运算符:,

(6)位运算符:<<、>>、~、|、^、&

(7)条件运算符:?:

(8)指针运算符:*、&

(9)强制类型转换运算符:(类型)

(10)下标运算符:[ ]

(11)求字节数运算符:sizeof

(12)分量运算符:= 、->

(13)其他运算符:如函数调用运算符( )

  1. 实验步骤
  1. 实验准备:连接实验设备,用扁平电缆连接仿真器和开发板,确认连接可靠后用USB数据线连接仿真器到PC机。察看仿真器上电源指示灯和开发板上电源指示灯,若全部点亮证明连接完好,可以开始实验。
  2. 启动IAR Embedded Wordbench开发环境
  3. 打开工程文件

    -工程目录: C:\CC2430LAB\3021ctest\ctest.ewp

    -在workspace工作空间中,双击ctest.c,打开ctest.c,浏览该文件的内容,理解各语句的作用。

    4、按本书3.1节第四部分中的第4项”设置工程选项“设置在硬件仿真(Emulator)方式下调试运行。

5、选择菜单Project->Rebuild All,进行编译。

6、选择菜单Project-> Debug或工具栏上”Debug”命令按钮,下载调试。

7、在main()函数中arithmeticTest();语句处,点击右键,选择Toggle Breakpoint,添加一个断点。按F5快捷键或选择DebugàGo命令,程序将运行到断点处。

8、选择菜单View->Watch打开Watch窗口,将变量x,y,z,a,b,c,m分别添加到watch 窗口中,选择在Debug菜单中或工具栏中的Step into命令进入arithmeticTest()函数体中,执行Step into命令或Next Statement命令,观察watch窗口中变量的变化及变量的地址。深刻理解有符号数和无符号数算数运算特点。

9、按第7步方法在main()函数中的logicaTest()语句处添加断点,按第8步观察变量的变化,体会逻辑运算的特点。

10、按第7步方法在main()函数中的booleanTest ()语句处添加断点,按第8步观察变量的变化,并选择菜单View->Disassembly打开反汇编窗口,找到booleanTest()的汇编语言,如图3.2所示,阅读并理解汇编语言的实现过程,体会位运算的特点。

11、退出开发环境,选择菜单File->Close Workspace即可。


                     图3.2 反汇编窗口

  1. 实验结果

在调试状态下,不加任何断点运行程序,选择Debug->break命令,执行的结果如图3.3所示。


                     图3.3 观察窗口变量的值

  1. 问题与思考
  1. 有符号数、无符号数、浮点数的表示方法。
  2. 二进制补码、原码、反码的运算特点。
  3. 请添加一个子程序完成3.3*254/8129的求值。

 

实验3.6:定时器实验

一、实验目的

  1. 通过实验熟悉CC2430的定时器。
  2. 掌握CC2430定时器的配置和控制方法。
  3. 了解MAC Timer(Timer2)的特性和控制方法。
  4. 掌握并能熟练使用Timer1、Timer3、Timer4。
  5. 熟悉定时器的中断产生方式,并能使用查询和中断两种方式编程。

二、实验设备

  1. PC兼容机一台,操作系统为Windows XP(或Windows 2000)。
  2. CC2430实验板一套,SmartRF04EB仿真器,十针扁平电缆一条(用于连接仿真器与CC2430实验板)。
  3. USB连接电缆一条(用于连接PC机与SmartRF04EB仿真器)。

三、实验原理

1、 CC2430定时器的介绍


CC2430包括四个定时器,分别是:16位Timer1、MAC定时器(Timer2),8位Timer3和Timer4。其中,16MAC定时器,用以为IEEE802.15.4CSMA-CA算法提供定时以及为IEEE802.15.4MAC层提供定时。另外三个普通定时器,支持典型的定时/计数功能,例如,输入捕捉、比较输出和PWM功能。

1.116-bit Timer1

支持输入捕获、比较输出和PWM功能。具有三个独立的通道,并且每个通道都对应一个输入/输出引脚。适合应用在控制和测量中,其中,三通道的PWM输出设计非常适合电机的控制应用。

1)、定时器1具有的特性有:

  • 三个独立的输入捕获/比较输出通道。
  • 具有上升沿下降沿边沿三种输入捕获模式。
  • 具有置位、清零、翻转三种比较输出模式
  • 具有自由运行、模运行和up/down三种计数操作模式。
  • 具有1,8,32,1284种分频模式可供选择。
  • 输入捕获、比较输出和计数溢出都能够触发中断。
  • Radio也能够触发输入捕获。
  • 具有DMA触发功能。

2)、Timer1相关寄存器:

 

  • T1CNTH
    Timer1的计数高位。
  • T1CNTL
    Timer1的计数低位。
  • T1CTL
    Timer 1的控制和状态寄存器。
  • T1CCTLx
    Timer 1 Channel x输入捕获/比较输出控制寄存器。
  • T1CCxH
    Timer 1 Channel x输入捕获/比较输出控制寄存器。
  • T1CCxL
    Timer 1 Channel x输入捕获/比较输出控制寄存器。

1.28-bit Timer3Timer4

同样支持输入捕获、比较输出和PWM功能。每个定时器都分别具有两个个独立的通道,并且每个通道都对应一个输入/输出引脚。Timer3/4都可以用作普通定时计数器也可以用于波形产生。

1)、定时器3/4具有的特性有:

  • 拥有双通道操作功能。
  • 具有上升沿、下降沿和边沿三种输入捕获模式。
  • 具有置位、清零、翻转三种比较输出模式。
  • 具有1,2,4,8,16,32,64,1288种分频模式可供选择。
  • 输入捕获、比较输出和计数溢出都能够触发中断。
  • 具有DMA触发功能。

2)、Timer3/4相关寄存器:

2、定时器中断:

  • T3CNT : Timer3的计数寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

CNT[7:0]

  • T3CTL : Timer 3的控制和状态寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DIV[2:0]

START

OVFIM

CLR

MODE[1:0]

  •  
  • T3CCTLx: Timer 3 Channel x输入捕获/比较输出控制寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

IM

CMP[7:0]

MODE

CAP[1:0]

  • T3CCx : Timer 3 Channel x输入捕获/比较输出控制寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

VAL[7:0]

  • T4CNT : Timer4的计数寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

CNT[7:0]

  • T4CTL : Timer 4的控制和状态寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DIV[2:0]

START

OVFIM

CLR

MODE[1:0]

  • T4CCTLx: Timer 4 Channel x输入捕获/比较输出控制寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

IM

CMP[2:0]

MODE

CAP[1:0]

  • T4CCx : Timer 4 Channel x输入捕获/比较输出控制寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

VAL[7:0]

2、定时器中断:

2.1、相关寄存器:

  • TIMIF: Timer1/3/4 中断屏蔽和标志寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

OVFIM

T4CH1IF

T4CH0IF

T4OVFIF

T3CH1IF

T3CH0IF

T3OVFIF

  • IEN1: 中断使能寄存器1。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

P0IE

T4IE

T3IE

T2IE

T1IE

DMAIE

  • IEN0: 中断使能寄存器0。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

EAL

STIE

ENCIE

URX1IE

URX0IE

ADCIE

RFERRIE

2.2、定时器中断响应过程:

当计数器溢出、捕获事件或比较输出事件发生都会触发定时器中断,外部事件要引起CPU中断必须满足以下条件:全局中断使能,相应定时器中断使能。当满足这些条件以后,只要相应的中断标志位被置位就会引起CPU产生中断。

3、实验程序流程图:


4、实验程序分析:

本次实验是编写一个使用定时器实现LED循环点亮的程序。要求使用定时器产生1S定时,当定时时间完成时改变一次LED灯的状态。深入了解CPU处理定时器产生中断的原理,并能熟练掌握中断服务程序的编写。

实现LED灯的循环点亮有多种方法,比如移位方式,置位方式,循环送值等方法。此次实验中只有两个LED灯,实现循环点亮相当容易。可以在初始状态让一个灯点亮一个灯熄灭,然后每1S定时到就翻转一次输出,这样就能实现两个LED灯的循环点亮。

在处理1S定时的问题时,由于定时时间比较长,不可能使用一次溢出实现,也有中断和查询两种方式可以选择。例如:在查询方式中采用没50ms产生一次中断,CPU一直查询中断标志位是否被置位,如果产生了20次中断就证明1S延时完成。中断方式与查询方式的不同之处在于,中断方式将处理20次中断产生的程序移到了中断服务程序中,而非在主程序中实现而已。实验例程中采用的是中断方式,这种方式比较节约CPU资源。

 

四、实验步骤

1、实验准备:连接实验设备:用扁平电缆连接仿真器和开发板,确认连接可靠以后用USB数据线连接仿真器到PC机。察看仿真器上电源指示灯和开发板上电源指示灯,若全部点亮证明连接完好,可以开始实验。

2、启动IAR Embedded Wordbench开发环境

3、打开工程文件

-工程目录: C:\CC2430LAB\3021timer\timer.ewp

-在workspace工作空间中,双击timer.c,打开timer.c,浏览该文件的内容,理解各语句的作用。

4、编译、下载程序。

5、点击Debug按钮,按F5运行程序,观察并记录结果。

6、停止运行程序。点击Debug按钮,打开Disassembly窗口,按F11单步执行程序。观察程序运行情况和LED的状态,并记录结果。

7、保存工程,退出IAR集成开发环境。

五、实验结果

通过实验可以发现,两个LED被循环点亮,时间间隔是1秒。当使用单步执行的时候执行到while循环语句的时候,再单步执行已经失去了作用,这是点击step out按钮恢复正常。请思考出现这种情况的原因。

六、问题与思考

首先,思考并回答实验结果中出现的问题。其次,实验中只使用了中断方式实现LED循环点亮,请完成实验原理中提出的其他几种方法。

 

 

 

 

 

 

 

 

 

 

 

 

3.7、编写A/D转换实验程序

一、实验目的

  1. 了解CC2430的ADC特点和功能。
  2. 了解ADC相关寄存器的配置。
  3. 掌握ADC的初始化配置和使用。

二、实验设备

1、通用PC机一台,安装Windows2000或WindowsXP操作系统。

2、CC2430射频模块、CC2430实验板和SmartRF仿真器一套

3、USB连接电缆一条

4、通用万用表一个。

三、实验原理

  • ADC的概念和原理介绍:


模数转换器(
ADC),是能够将一个模拟电压输入信号转换为一个数字信号输出的的器件。由于数字信号本身不具有实际意义,仅仅表示一个相对大小。故任何一个模数转换器都需要一个参考模拟量作为转换的标准,比较常见的参考标准为最大的可转换信号大小。而输出的数字量则表示输入信号相对于参考信号的大小。衡量一个模数转换器的主要参数有:(1)精度,是转换的精度,通常用输出的数字信号的位数的多少表示。转换器能够准确输出的数字信号的位数越多,表示转换器能够分辨输入信号的能力越强,转换器的性能也就越好。(2)转换速率,一般表示为每秒转换完成的次数。(3) 输入信号的范围,能采集的输入信号的范围,有单极性和双极性之分。另外,其它参数主要有采集通道数、接口方式(串行和并行)等。

  • CC2430的ADC介绍和特征:

CC2430中的ADC支持最大14位模数转换,有八个输入通道可供选择,支持单端输入和差分输入。可以选择序列转换模式和额外单次转换模式,转换完成可以触发中断或DMA,所以转换结果的读取方式灵活。图7.1是ADC的结构图。


                                7.1 ADC结构框图

CC2430的ADC主要有以下特征:

  1. ADC的分辨率可以选择,最大支持14位的A/D转换。
  2. 可以配置8个输入通道,允许单端输入和差分输入。
  3. 参考电压可以有多种选择(内部1.25V,外部参考电压等)。
  4. 转化完成可以触发中断或DMA。
  5. 温度传感器输入。
  6. 检测电池电压的能力。
  • ADC相关寄存器:

P0INP                     P0输入引脚配置寄存器

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

MDP0_7

MDP0_6

MDP0_5

MDP0_4

MDP0_3

MDP0_2

MDP0_1

MDP0_1

ADC输入引脚应该置1,配置成三态。

ADCCFG ADC通道选择寄存器

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

               

ADCCFG[7:0]:某位置1则选择该通道为ADC输入。

ADCL ADC数据寄存器低8位

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

ADC5

ADC4

ADC3

ADC2

ADC1

ADC0

ADC[5:0]:ADC转换数据的低5位

ADCH ADC数据寄存器高8位

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

ADC13

ADC12

ADC11

ADC10

ADC9

ADC8

ADC7

ADC6

ADC[13:6]:ADC转换数据的高8位

ADCCON1                  ADC控制寄存器1

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

EOC

ST

STSEL1

STSEL0

RCTRL1

RCTRL0

EOC:转换结束标志位

ST: 转换启动位

STSEL[1:0]:选择触发转换的事件

ADCCON2             ADC控制寄存器2

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

SREF1

SREF0

SDIV1

SDIV0

SCH3

SCH2

SCH1

SCH0

SREF[1:0]:选择序列采集的参考电压

SDIV[1:0]:选择序列采集的分辨率

SCH [3:0]:选择序列采集的结束通道

ADCCON3             ADC控制寄存器3。

BIT7

BIT6

BIT5

BIT4

BIT3

BIT2

BIT1

BIT0

SREF1

SREF0

SDIV1

SDIV0

SCH3

SCH2

SCH1

SCH0

SREF[1:0]:选择额外单次采集的参考电压

SDIV[1:0]:选择额外单次采集的分辨率

SCH[3:0]: 选择额外单次采集的通道

4、ADC控制方法:

使用CC2430片内外设ADC主要分为如下几步:

(1)、初始化P0INP寄存器,选择输入引脚为三态状态

(2)、配置ADCCFG寄存器选择要采集的通道,置1表使能,清0表禁止。

(3)、读ADCH:ADCL寄存器,清零EOC。

(4)、初始化ADCON2序列采集模式寄存器,选择采样精度、参考电压及序列采集的结束通道号(注意,一个序列采集可以包括多个通道,根据ADCCFG寄存器使能的通道号和ADCON2序列采集的结束通道号决定,如ADCCFG寄存器使能了1通道、3通道和4通道 ,而结束通道号为4,则采集序列为1、3、4。)

(5)、初始化ADCON3额外单次采集的控制寄存器,选择额外采集的通道号(也可以禁止额外单次采集)、采样精度、参考电压。

(6)、初始化ADCON1 寄存器,清转换完成标志位EOC,设定ADC启动触发方式,启动ADC。

(7)、可以通过中断和查询方式监控或查询一次ADC转换完成,从ADCH:ADCL寄存器中读取转换的值。

5、ADC程序流程图:

图7.3 ADC程序流程图

 

  1. 实验步骤

1、实验准备:连接实验设备,用扁平电缆连接仿真器和开发板,确认连接可靠后用USB数据线连接仿真器到PC机。察看仿真器上电源指示灯和开发板上电源指示灯,若全部点亮证明连接完好,可以开始实验。

2.实验中是用P0.7引脚采样的,需要使用短路片短路实验板上面两个插针(要有照片),通过调节电位器给ADC不同的输入电压,电位器的电路图如图7.2所示。


图7.2 电位器电路

3、启动IAR Embedded Wordbench开发环境

4、打开工程文件

-工程目录:C:\CC2430LAB\7011adc\
adctest.ewp

-在workspace工作空间中,双击adctest.c,打开adctest.c,浏览该文件的内容,理解各语句的作用。

5、按本书3.1节第四部分中的第4项”设置工程选项”设置在硬件仿真(Emulator)方式下调试运行。

6、选择菜单Project->Rebuild All,进行编译。

7、选择菜单Project-> Debug或工具栏上”Debug”命令按钮,下载调试。

8、将鼠标指向main()函数中的P0INP |= 0xc0;和asm(“nop”);处各添加一个断点 ,执行Go命令,程序运行到P0INP |= 0xc0语句,选择菜单View->Register,打开寄存器观察窗口,在Register观察窗口下拉选项中选择”ADC”。

9、打开watch观察窗口,将变量value和dc_value添加到watch窗口中。执行Next Statement,观察ADC外设寄存器的值和变量value和dc_value的值。dc_value的值就是ADC采样的值。

10、调节电位器,并用万用表测量采样端口的电压,把测量的结果记录在下表中。执行程序,记录dc_value的值到表中,分析测量产生的误差。

11、退出开发环境,选择菜单File->Close Workspace即可。

实验结果

根据实验步骤第10步,填写下表

测量次数

1

2

3

4

dc_value

       

万用表测量值

       

 

  1. 问题与思考

(1) 如何通过序列采集模式采集多个通道?

(2) 如何通过中断方式实现ADC采样?

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实验3.11 LCD显示实验

一、实验目的

  1. 了解MZL05模块的基本原理和功能。
  2. 熟练掌握CC2430引脚的配置和控制方法。
  3. 掌握MZL05模块和CC2430的硬件接口和软件设计方法。

二、实验设备

  1. PC兼容机一台,操作系统为Windows XP(或Windows 2000)。
  2. CC2430实验板一套,SmartRF04EB仿真器,十针扁平电缆一条(用于连接仿真器与CC2430实验板)。
  3. USB连接电缆一条(用于连接PC机与SmartRF04EB仿真器)。

三、实验原理

1、 MZL05液晶模块的介绍

MzL05-12864模组是一个小型的LCD显示器模组,显示细腻,带白色背光;MzL05-12864 模块的MCU接口为串行SPI接口,非常合适应用于小型仪器、手持设备之中。

1.1、基本的性能参数如下:

  • 显示模式: FSTN液晶 白底黑点
  • 显示格式: 128X64点阵图形液晶显示
  • 输入数据: 仅限写入的串行SPI接口
  • 模块尺寸: 40.6(长)×25.1(宽)
  • 视屏尺寸: 29(长)×13.5(宽)mm
  • 背光: 白色LED

1.2、模块接口引脚说明:

  • /CS1: 片选(低电平有效)
  • /RES: 复位脚(低电平复位)
  • A0: 数据命令选择脚
  • SCK: 串行时钟输入引脚
  • SDI: 串行数据输入引脚
  • VDD: 模组供电(推荐3.0V)
  • VSS: 地

2、MZL05显示控制方法

MzL05-12864 液晶显示模组的显示器上的显示点与驱动控制芯片中的显示缓存 RAM是一一对应的;显示器的显示点阵大小为 64X128 点,显示 RAM 区为 64 X 128 个位;按 byte 为单位划分,共分为 8 个 Page,每个Page 为8 行,而每一行为 128 个位(即 128 列)。如要点亮 LCD屏上的某一个点时,实际上就是对该点所对应的显示 RAM 区中的某一个位进行置 1 操作;所以就要确定该点所处的行地址、列地址。

3、液晶显示器与CC2430的连接:

 


 

 

 

 

 

 

 

 

 

                                

 

4、实验程序流程图:

 


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

5、实验程序分析:

一般来说,LCD 模块的控制都是通过 MCU 对 LCD 模块的内部寄存器、显存进行操作来最终完成的;在此我们要设计两个基本的时序控制程序,分别是:写寄存器函数(LCD_RegWrite) 数据写函数(LCD_DataWrite)这三个函数需要严格的按照LCD所要求的时序来编写, 下面可以看看MzL05模块的时序图:


 

写寄存器函数(LCD_RegWrite):首先,片选选通(/CS=0)、控制命令输出选通(A0=0)。其次,将数据放到数据线上(SI/SDI),在时钟(SCL/SCK)的上升沿发送数据线上的数据。

数据写函数(LCD_DataWrite):首先,片选选通(/CS=0)、数据命令输出选通(A0=1)。其次,将数据放到数据线上(SI/SDI),在时钟(SCL/SCK)的上升沿发送数据线上的数据。完成这两个基本函数之后,再根据MZL05数据手册编写其他的控制和显示程序,但要严格按照手册的时序和要求编写。

四、实验步骤

1、实验准备:连接实验设备:用扁平电缆连接仿真器和开发板,确认连接可靠以后用USB数据线连接仿真器到PC机。察看仿真器上电源指示灯和开发板上电源指示灯,若全部点亮证明连接完好,可以开始实验。

2、打开工程文件

-工程目录:C:\CC2430LAB\3111lcd\lcd.ewp

-在workspace工作空间中,双击lcd.c和lcd.h,打开lcd.c和lcd.h,浏览该文件的内容,理解各语句的作用。lcd.h文件在其中放置字库和lcd.c所用到的定义和预处理信息。

可以使用给出的字模提取程序提取想要的汉字,倒向逆序取字(点阵四角按左上角→右上角→左下角→右下角取字)。按照实验实例中给出的添加字库的注释添加新生成的汉字到字库中,并能在主程序中调用显示字库中的汉字。在LCD的操作中要十分注意时序的操作,一定要根据手册给出的时序图按步骤完成

3、按本书3.1节第四部分中的第4项”设置工程选项”设置在硬件仿真(Emulator)方式下调试运行。

4、选择菜单Project->Rebuild All,进行编译。

5、选择菜单Project-> Debug或工具栏上”Debug”命令按钮,下载调试。

6、点击Debug按钮,按F5运行程序,观察并记录结果。

7、停止运行程序。点击Debug按钮,打开Disassembly窗口,按F11单步执行程序。观察

程序运行情况和LCD的状态,并记录结果。

8、保存工程,退出IAR集成开发环境。

五、实验结果

编辑完成程序,添加自己想要的字符到字库中,并在主程序中调用显示程序。编译、下载程序到CC2430中,并运行程序。在LCD液晶显示器上会看到在自己指定的坐标按照指定的方式显示你所想要显示的字符。当使用单步调试时,观察LCD的显示状态,如果出现问题,请分析在单步调试的过程中出现显示不正常的现象的原因。

六、问题与思考

在实验程序中时序观念很重要。一般的LCD由于显示速度比较慢,常常需要加入延时程序,但是你会发现在MZL05的手册中未给出严格的时序图,经过测试也发现在实验程序中不加入延时,LCD的速率也可以和CC2430匹配,同样可以正常显示。这样就为CPU送显节约了宝贵的时间,请读者自己设计控制显示器亮度、休眠模式、电量设置等高级控制程序,有兴趣的还可以尝试编写MenuGUI程序。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

实验3.13 DMA数据存取实验

一、实验目的

  1. 了解DMA的概念、原理和使用方法。
  2. 掌握CC2430中DMA的配置和控制方法。
  3. 能熟练使用外部中断配合LCD完成DMA数据存取实验。

二、实验设备

1、PC兼容机一台,操作系统为Windows XP(或Windows 2000)。

2、CC2430实验板一套,SmartRF04EB仿真器,十针扁平电缆一条(用于连接仿真器与CC2430实验板)。

3、USB连接电缆一条(用于连接PC机与SmartRF04EB仿真器)。

三、实验原理

1、DMA的概念和原理介绍

DMA即直接数据存取技术,是指数据在内存与IO设备间传送一个数据块的过程中,不需要CPU的任何中间干涉,只需要CPU在过程开始时向设备发出”传送块数据”的命令,或者通过外部触发源的触发,就可以开始DMA传输。然后可以通过中断来得知过程是否结束和下次操作是否准备就绪。

2、CC2430的DMA介绍和特征

CC2430专门在内存和外设之间开辟了一条数据专用通道,这条数据通道在DMA控制器硬件的控制下直接进行数据交换而不通过CPU的干预。DMA控制器可以把外设(如ADC、Radio)的数据转移到内存中,这样大大的提高了CPU的效率。

CC2430的DMA主要有以下特征:

  • 5个独立的DMA通道。
  • 3个可配置的DMA通道优先级。
  • 31个可配置的触发事件。
  • 源地址和目的地址能独立配置。
  • 3种传输模式:单次传输模式、数据块传输模式和重复传输模式。
  • 支持数据传输可变数据长度。
  • 可工作在字节模式或字模式。

 

3、DMA控制相关寄存器

  • DMAARM: DMA通道控制寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

ABORT

DMAARM4

DMAARM3

DMAARM2

DMAARM1

DMAARM0

  • DMAREQ: DMA通道初始请求以及状态寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DMAREQ4

DMAREQ3

DMAREQ2

DMAREQ1

DMAREQ0

  • DMAIRQ: DMA中断标志寄存器。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DMAIF4

DMAIF3

DMAIF2

DMAIF1

DMAIF0

  • DMA0CFGH: DMA通道0配置地址高位。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DMA0CFG[15:8]

  • DMA0CFGL: DMA通道0配置地址低位。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DMA0CFG[7:0]

  • DMA1CFGH: DMA通道1~4配置地址高位。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DMA1CFG[15:8]

  • DMA1CFGL: DMA通道1~4配置地址低位。

Bit7

Bit6

Bit5

Bit4

Bit3

Bit2

Bit1

Bit0

DMA1CFG[7:0]

4、DMA控制方法

每个DMA通道都有以下特性:源地址、目的地址、传送长度、VLEN设置、优先级、触发事件、源地址增量、目的地址增量、DMA传送模式、字节或字传送、中断屏蔽、和M8模式选择。DMA通道的设置是放在一张配置列表中的,这张配置表包含了上面提到的全部信息,共有八个连续的字节组成,当配置完成这张列表之后将其首地址放到DMA0CFGH、DMA0CFGL或者DMA1CFGH、DMACFGL中。然后在DMAARM中使能相应通道,这样DMA就进入了等待传输状态,一但触发事件一发生就开启一次DMA传输。

5、DMA工作流程图:


 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

下面是DMA配置列表的示例:DMAConfig为一张配置列表,功能是配置通道0,在DMA触发事件发生时将SRC处的14个字节传送到DES处。详细信息见注释。

typedef struct

{

unsigned char srcH; //源地址高位

unsigned char srcL; //源地址低位

unsigned char desH; //目的址高位

unsigned char desL; //目的址低位

unsigned char vlen; //VLEN和len的高位

unsigned char lenL; //len的低位

unsigned char ctrl1; //字节/字传输选择;DMA传输模式;触发源选择

unsigned char ctrl2; //源地址增量;目的地址增量;中断屏蔽;M8模式;优先级

}DMASettings;

DMASettings DMAConfig; //建立一张DMA配置表

 

//配置DMA,建立一张DMA配置表。

DMAConfig.srcH=(unsigned char)((unsigned short)SRC>>8); //源地址SRC

DMAConfig.srcL=(unsigned char)SRC;

DMAConfig.desH=(unsigned char)((unsigned short)DES>>8); //目的地址DES

DMAConfig.desL=(unsigned char)DES;

DMAConfig.vlen=0x00; //采用LEN长度

DMAConfig.lenL=0x0E; //长度14字节

DMAConfig.ctrl1=0x20; //字节传送,无触发源,块传输模式

DMAConfig.ctrl2=0x52; //每次传输完成源/目的地址均加1,中断屏蔽,M8模式,优先级高。

DMA0CFGH=(unsigned char)((unsigned short)(&DMAConfig)>>8); //配置表的地址高位

DMA0CFGL=(unsigned char)(&DMAConfig); //配置表的地址低位

DMAARM |= 0x01; //DMA通道0使能

四、实验步骤

1、实验准备:连接实验设备:用扁平电缆连接仿真器和开发板,确认连接可靠以后用USB数据线连接仿真器到PC机。察看仿真器上电源指示灯和开发板上电源指示灯,若全部点亮证明连接完好,可以开始实验。

2、打开工程文件

-工程目录:C:\CC2430LAB\3113dma\dma.ewp

-在workspace工作空间中,双击dma.c (lcd.c,lcd.h,font.c,font.h是与LCD相关的文件)。浏览dma.c的内容,理解各语句的作用。结合实验原理理解DMA的相关寄存器和功能配置列表的各个参数。

3、按本书3.1节第四部分中的第4项”设置工程选项”设置在硬件仿真(Emulator)方式下调试运行。

4、选择菜单Project->Rebuild All,进行编译。

5、选择菜单Project-> Debug或工具栏上”Debug”命令按钮,下载调试。

6、点击Debug按钮,按F5运行程序,观察并记录结果。

7、停止运行程序。点击Debug按钮,打开Disassembly窗口,按F11单步执行程序。观察

程序运行情况和LCD的状态,分析DMA的配置和操作过程,并记录结果。

8、保存工程,退出IAR集成开发环境。

五、实验结果

运行实验程序,LCD显示SRC和DES中的内容。初始状态为SRC中存”HELLO CC2430!”,DES中为”NO DATA!”。按下确认键启动一次DMA传输,经观察会发现DES中显示”HELLO CC2430!”说明数据从SRC中传到了DES中,一次DMA传输完成。按下清除键清空DES中内容,并在STATE栏中显示操作的状态。

六、问题与思考

实验中位采用触发事件触发DMA传输,而是有CPU发送指令启动一次DMA传输,请读者改进程序使用触发事件触发DMA传输。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 


 

转载请注明:徐自远的乱七八糟小站 » 【转贴】CC2430单片机原理及应用实验指导书

喜欢 (0)

您必须 登录 才能发表评论!

苏ICP备18041234号-1 bei_an 苏公网安备 32021402001397号