打印本文 打印本文  关闭窗口 关闭窗口  
从应用实例理解MAXQ2000评估扳使用来源于瑞达科技网
作者:佚名  文章来源:网络  点击数  更新时间:2011/1/25   文章录入:瑞达  责任编辑:瑞达科技

摘要:本文通过讨热敏电阻数据采集应用程序实例来说明MAXQ2000评估板的使用,并介绍相关的MAXQ2000评估板基本装置和 MAXQ2000微控制器的LCD控制器及外设特性。

    关键词:开发环境;C编译器;LCD控制器;SPI通信;中断源

    1、前言

    为MAXQ产品线处理器提供的工具包括IAR的ANSI(美国国家标准系员会)C编译器以及IAR 的Embedded Workbench(嵌入式工作台)集成开发环境。

    IAR Embedded Workbench开发环境为MAXQ2000提供了基于C语言或基于汇编语言的应用程序开发手段。使用MAXQ2000评估板与串口—JTAG适配器模块的硬件配置,IAR 的Embedded Workbench可以完全访问MAXQ2000的基于JTAG的自举装载过程以及在线调试特性。这对新的或刚熟悉MAXQ2000微控制器来说,可大大简化了应用程序开发。

    因此只要具备这些工具并具有MAXQ特殊用途寄存器的基础知识,开发者可以快速简单地开始为MAXQ架构编写应用程序。为了说明与理解MAXQ架构的开发过程的简单化,最有效的办法就是举一个对温度采样应用程序实例。这里既然提到的应用程序使用了MAXQ2000处理器以及MAXQ2000评估板,因此有必要首先对MAXQ2000评估板基本特点与MAXQ2000有关 LCD控制器性能及其外设作简述。

    2、关于MAXQ2000Q的 LCD控制器性能及其外设。

    MAXQ2000是MAXQ系列众多产品中的第一个.典型的MAXQ器件具有16位数据、代码与寄存器。该微控制器集成了一个16位CPU、64kB闪存、2kB SRAM,以及4 ×36字段LCD控制器。板上LCD控制器根据显示存储器中的内容为LCD产生信号。应用程序代码确立了用户配置的选项,并对显示存储器进行写操作。然后,LCD控制器以选定的显示刷新频率产生必需的字段与公共端信号,于是微控制器就不必经常地进行显示管理并直接驱动LCD。另外,该控制器支持四种显示模式。

    *静态

    *1/2占空比多路复用,1/2偏压

    *1/3占空比多路复用,1/3偏压

    *1/4占空比多路复用,1/4偏压

    

    显示存储器的17个字节可以用于LCD控制器,或通用应用存储。  另一个增强的LCD特性是集成的分压电阻。这些电阻省去了外部元件,可以用来调节对比度。图1所示为用于静态显示的LCD驱动电压配置.不连接LCD时,36字段的每个引脚都可以配置为通用I/0。

    特别指出是MAXQ2000具有广泛的集成外设,包括:

   *132字段的LCD控制器

   *集成SPI端口,具备主机与从机模式

   *1-Wire总线主机

   *两个串行UART(通用异步接收/传送器)

   *硬件乘法器

   *三个16位定时器/计数器

   *看门狗定时器

   *32位实时时钟,具有亚秒与日历闹钟

   *支持在线调试的JTAG接口

    3、MAXQ2000评估板的装置与连接

    3.1 MAXQ2000评估板为MAXQ2000微控制器提供了完整的硬件开发环境,包括如下特性:

    为MAXQ2000内核与VDDIO提供板上电源;可调的电源电压(1.8V至3.6V),可以用于VDDIO或VLCD电源;为所有MAXQ2000信号与电源电压提供引出脚;独立的LCD子板连接器;带3V,3.5位静态LCD显示器的LCD子板;为串口0 UART提供包含流控信号线的全RS-232电平驱动器;外部中断与微控制器系统复位按钮;MAXl407多用途ADC/DAC IC;与MAXQ2000 SPI总线接口相连;1-Wire接口,包括出iButton接线柱与1—Wire EEPROM IC;为端口引脚P0.7至P0.0的电平提供柱状图LED显示;为应用程序的装入与在系统调试提供JTAG接口。

    3.2 MAXQ2000评估板的连接

    而为应用程序开发设置MAXQ2000评估板与串口-JTAG接口模块也很简单,可按照以下步骤简单地连接电路板。

   * 将5VDC稳压电源(中间接线柱为正,±5%)插人串口-JTAG电路板的电源插孔J2。

   * 将5V至9VDC电源插人MAXQ2000评估板的电源插孔J1。

   * 用一条直通式DB9串行电缆连接串口-JTAG电路板的J1连接器与PC上的一个COM端口。

   * 用JTAG适配器电缆连接串口-JTAG电路板上的1×9连接器P2与MAXQ2000评估板上的2×6连接器J4。

   * 打开上述两个DC电源。

   *在标准操作中,MAXQ2000评估板上的所有DIP开关都应处于OFF的位置。

    根据以上二个技术前提介绍,就可以用IAR Embedded Workbench(嵌入式工作台)开发环境使用MAXQ2000评估板了。

    4、从应用程序实例理解MAXQ2000评估扳使用

    通过举一个应用程序实例,说明MAXQ2000评估扳使用,即MAXQ架构的开发过程的简单化. 这里提到的应用程序使用了MAXQ2000处理器以及MAXQ2000评估板。

    4.1 温度采样应用程序实例设计思路

    该实例展示了LCD控制器、SPI(串行外设接口)端口的主机模式、UART(通用异步接收/传送器)之一、硬件乘法器,以及定时器之一的使用。其定时器用来产生周期性的中断。当出现中断时MAXQ2000处理器读取热敏电阻的一个温度读数并用LCD与其中一个串口输出其结果。其SPI端口与MAXl407(16位、低功耗含有ADC)数据采集系统接口,将热敏电阻与ADC相连,然后通过采样获得温度读数。根据该设计思路,值此应先叙述LCD控制器程序。

    4.2 LCD控制器的使用

    为了使用LCD显示器,必须配置两个控制寄存器。一旦这些寄存器设置完毕,将LCD数据寄存器之一中的位置位,就可以点亮LCD上的字段。下列代码说明了在该应用实例中如何配置LCD控制器。

    void initLCD( )

   {  

      LCRA_bit.FRM=7;    //Set Up frame frequency.

      LCRA_bit.LCCS=1   // Set  clock  source  to  HFClk  /  128.

      LCRA_bit.DUTY=0;// Set  up  static  duty  cycle.

      LCRA_bit.LRA=0;  //  Set R-adj to 0.

      LCRA _bit  LRIGC=1  //  Select  external  LCD  drive  power.

    LCFG_bit.PCF= 0×0F//  Set  up  all  segments  as  outputs.

      LCFG_bit.OPM= l;  //  Set  to  normal  operation  mode.

      LCFG_bit.DPE=1;  //   Enable display.

    4.3 通过SPI通信

    三个寄存器用来控制MAXQ2000支持的不同SPI模式。为了与MAXl407通信,用以下代码初始化SPI部分,并将其置为正确的模式。

   PD5  |=  0×070;      //    Set  cs,  SCLK,  and  DOUT  pins  aS  output.

   PD5  &=  ~0×080;   //    Set  DIN  pin  as  input.

   SPICK = 0×10;       //   Configure  SPI  for  rising  edge,  sample  input

   SPICF =0×00;        //    on  inactive  edge,  8  bit,  divide  by  16.

   SPICN-bit.MSTM=1;   //    Set  Q2000  as  the  master.

   SPICN-bit.SPIEN =1 ;//    Enable  SPI.

    只要设置了SPI配置寄存器,就可以用SPI B寄存器发送与接收数据。对该寄存器进行写操作,将启动SPI主机与从机之间的双向通信。传输完成后,SPI CN寄存器中的STBY位被置位。以下给出了SPI发送与接收的代码。

  unsigned int sendSPI(unsigned int spib)

  {

    SPIB = spib;         //    Load  the  data  to  send

    while(SPICN-bit.STBY) //    Loop until the data has been sent.

    SPICN_bit.SPIC =0; //    Clear  the  SPI  transfer  complete  flag.

return  SPIB;

    4.4 写串行端口

    在该应用实例中,用MAXQ2000的一个串口输出当前的温度读数。数据写到端口之前,应用程序必须先设置波特率与串口模式。此外,需要初始化几个寄存器来开放串口通信。

    Void  initserial( )

    {

      SCON0_bit.SMl =1;  //  set  to Mode  1.

      SCON0_bit REN =l;  //  Enable  receives.

      SMD0_bit.SMOD=1;//  set  baud  rate  to  16  times  the  baud  clock.

      PRO = 0×3AFB;    //  Set  phase  for  115200  with  a  16MHz  Crystal.

      SCON0_bit  TI=0;  //  clear the transmit flag.

      SBUF0 = 0×0D;    //  Send  carriage  return  to  start  communication.

    正如SPI通信子程序,一个寄存器用来发送并接收串行数据。对SBUF0寄存器的写操作将启动一次传输。当数据在串口上有效时,读取SBUF0寄存器将取回输人数据。该实例程序中使用了以下函数向串口输出数据。

   int putchar(int Ch)

  {

    while(SCON0_bit.TI  = 0);// wait  until  we  can  send.

    SCON0  bit.TI =  0;  // clear  the  sent  flag.

    SBUF0 =Ch;           //send  the  char.

    return Ch;

    4.5 使用定时器产生周期性中断

    该应用实例中用到的最后一部分是16位定时器之一。该定时器用来产生中断,触发每秒二次的温度读数。在该实例中配置计数器时,编程者必须设定重装值,指定时钟信号源,并启动定时器。以下代码给出了初始化定时器0所需的步骤。

T2V0=0×00000;    //  Set current timer Value.

T2R0=0×00BDC;   //  Set reload value.

T2CFG0_bit.T2DIV= 7;//  Set  div  土28  mode.

T2CNA0_bit.TR2=1; //  start the timer.

    在该实例中将该定时器用作中断源,还需要一些更多的步骤。对于MAXQ架构,中断必须分三级开放:全局、每个模块内部、局部。使用IAR的编译器,通过调用_enable_interrupt( )函数开放全局中断。这就有效地将中断与控制(1C)寄存器中的中断全局使能(1GE)位置位。由于定时器0位于模块3中,将中断屏蔽寄存器(1MR)中的位3置位,开放该模块的中断。将定时器/计数器2控制寄存器A(T2CNA)中的定时器中断使能(ET2)位置位,开放局部中断。以下给出了该应用实例中执行的这些步骤。

    _enable_interrupt ( )

    T2CNA0_bit.ET2= 1; //  Enable interrupts.

    IMR |=0×08;      //  Enable the interrupts for module 3.

    最后,使用中断还需要初始化中断向量。IAR的编译器允许每个模块使用不同的中断处理函数。为特定模块设置中断处理程序,需要使用#pragma向量指示器。中断处理函数还应当首先通过-interrupt关键字声明。该应用实例以如下方式为模块3声明中断处理程序。

    #pragma vector=3

    _interrupt void timerInterrupt( )

  {

    //Add interrupt handler here.

    5、结论

    上面是用ANSI兼容的C语言编写代码的实例,从中可以看出设计者在了解了一些外设寄存器的详细内容后,应用IAR的Embedded Workbench集成开发环境使用MAXQ2000评估扳,可以很容易地为MAXQ2000处理器及MAXQ产品线中的其它处理器开发应用程序,其特点是简单速度快.。

    参考文献:

1、美Qong Li著<<嵌入式糸统的实时概念>>  北京航空航天大学出版社2004年6月1日出版.

2、赖麟文 编著<<8051诧单片机C语言软件设计的艺术>>科学出版社2002年6月出版.

3、<> DALLS SEMICONDUCTOR.CORP.2004年.

打印本文 打印本文  关闭窗口 关闭窗口