Introduction

简介

STK504 是 Atmel 公司生产的 STK500 开发板的扩展模块，它新增加了对 100-引脚的 AVR 单片机的支持功能。

STK504 上的一些连接接口和硬件设备可以充分发挥上述器件的新特性，比如 Zero Insertion Force (ZIF) 插座，利用它您在STK503上可以很方便的使用 TQFP 封装的器件。

这个用户说明是个总体的说明，并且对于高级用户来说也是一份完整的技术参考。

在这个套件中有一块已经编程好的ATmega3290，把它安装到 ZIF 插座中，示例程序就会立刻运行。

图 1-1: STK504 开发板

特性：

  • 支持集成LCD驱动模块的 ATmega3290 和 ATmega6490；
  • 支持 ATmega3250 和 ATmega6450；
  • 用来演示 LCD 驱动器的 LCD；
  • 使用外部 LCD 显示的连接器；
  • 由 AVR Studio 4 支持；
  • 适用于100-引脚的 TQFP 封装的，Zero Insertion Force (ZIF) 插座；
  • 支持STK500的高电压并行编程功能；
  • 支持STK500的串行编程功能；
  • 端口连接： 端口 E, F G, H 和 J；
  • LCD 和其它外围设备都可以和器件断开；
  • 支持使用 JTAGICE mkII 进行在线调试的 JTAG 接口；
  • 板上 32 kHz 晶振可以实现简易实时时钟；
  • 带有范例的预编程的 ATmega3290 ；


疑难解答

2005年1月:无疑难解答。


入门指导

这部分将说明如何把 STK504 连接到 STK500 上，和如何把 AVR 器件安装到 ZIF 插座中，以及如何使用电缆连接不同的外围设备。

硬件综述

STK504 提供了一个灵活的平台来调试100-引脚的 LCD AVR 器件，开发板上提供了很多连接接口，所以您也可以把它连接到您自己的硬件上，或者只是使用 STK504 。

图 3-1: STK504

ZIF 插座:
这里可以安装 AVR 器件，更多细节请看 把AVR安装在ZIF插座上 章节。
LCD PINS:
这个接口的引脚和板上的 LCD是相连的，通常如果您要使用板载的LCD，您只需要将它与AVR SEGMENT PINS接口相连。更多信息请参考 LCD部分 。
AVR SEGMENT PINS:
这个接口的引脚和板上的 AVR 器件的 LCD 引脚是相连的，通常如果您要使用板载的LCD，您只需要将它与LCD PINS接口相连。如果您想连接您自己的 LCD，也可以使用此连接接口。更多信息请参考 LCD部分 。
Port 连接接口:
AVR 的 PORTE, PORTF, PORTG, PORTH 和 PORTJ 引脚连接到了五个连接接口，每个连接接口上都标记了引脚的名称。并且每个连接口都包括引脚信号，目标电压和地信号。详细说明请看 附录A 。
时钟开关:
这个开关选择连接到 AVR XTAL/TOSC引脚上的时钟源，它有三个状态: X = STK500 板上的时钟源, LF = STK504板上 32kHz 晶振和 HF = 板上晶振插座，更多信息请看 时钟源 。
晶振插座:
在这个插座中您可以安装自己需要的晶振，这时要把时钟开关拨到 HF， 更多信息请看 时钟源 。
32kHz 晶振:
这个 32kHz 晶振可以通过时钟开关连接到 AVR 上，这时要把时钟开关拨到 LF， 更多信息请看 时钟源 。
JTAG:
这里您可以连接 JTAGICE mkII 或其它 JTAG 调试设备， 更多信息请看 JTAG 连接 。
SPROG:
在ISP编程模式下， AVR 器件可以通过这个连接口编程， 更多信息请看 在线编程 。

安装 STK504

你首先要做的是把 STK504 安装到 STK500上。

  1. 关闭 STK500 的电源；
  2. 取下 STK500 上的其它扩展模块；
  3. 取下 STK500 上插座中的 AVR 器件；
  4. 把 STK504 放到 STK500的顶部，确保两块板上的 EXPAND0 和 EXPAND1连接接口已经对齐(请看 图 3-2)；

图 3-2: 安装 STK504

安装 AVR 器件到 ZIF 插座

STK504 上的 ZIF 插座可以安装100-引脚的TQFP封装形式的内建有LCD控制模块的 AVR 器件。

  1. 确保 STK500 电源关闭；
  2. 把你的 AVR 器件放到插座中，如 图 3-3所示；

图 3-3: AVR 器件安装到 ZIF 插座上

注意芯片和插座上的引脚 1要对应，ZIF 插座上的引脚1是有削边定义的，在STK504上是用白线定义。

运行测试板

AVR 器件中提供了已写好的 LCD应用程序，具体测试步骤如下：

  1. 把 STK504 安装到 STK500上；
  2. 把已编程的 AVR 器件放到 ZIF 插座中；
  3. 连接 LCD 接线；
  4. 确保已安装STK500上的 VTARGET 短路片；
  5. 把 STK504 上的时钟开关拨到 LF 位置；
  6. 打开 STK500 上的电源；

测试程序现在就应该开始运行了，它会刷新 LCD 的某些部分并显示一些文字。

源代码和十六进制文件可以从 Atmel公司网站 下载。


Programming the AVR

对AVR进行编程

有四种方式可以对 STK504上的 AVR 器件编程：

  1. 在系统编程；
  2. 高电压并行编程；
  3. JTAG 编程；
  4. 自编程；
这里并不说明自编程，有关信息请参考 AVR 的器件手册。

下面的部分将说明如何连接接线。有关如何使用 AVR Studio 的 编程对话框 请看 STK500 的用户向导。

在系统编程

如果对 STK504 上的器件进行在系统编程(ISP)模式 ，你必须用6-线连接线连接 STK500 上的 ISP6PIN 连接接口和 STK504 上的 SPROG 连接接口，如 Figure 4-1所示，当然还要把PORTG 上连接接口的引脚6和8用短路片短接，然后按照 AVR Studio 中的工具菜单("Tools/Program AVR/ Connect...") 开始编程。

图 4-1: 在系统编程

为了能够对 AVR 进行在系统编程，首先必须使能 AVR 的“在系统编程”，(必须设置 ISP programming enable 的熔丝位)。可以通过 高电压编程 或 JTAG 编程 设置在系统编程有效。

请参考 STK500 说明中的熔丝位部分。

高电压编程

高电压编程要求目标电压达到5V 。如果连接到 STK504/STK500 的外部硬件不能工作在5V，请在高压编程前断开这些硬件。

对 STK504 上的 AVR 器件高电压编程时应按如下步骤进行：

  1. 关掉 STK500 电源开关；
  2. 断开 STK500 和 STK504 上不能 5V 电压下正常工作的硬件设备；
  3. 将STK500 上的 PROGCTRL 接口与 PORTD 接口连接， PROGDATA 接口与 PORTB 接口连接，如图 4-2 所示；
  4. 根据表 4-1，设置短路片和开关；
  5. 打开 STK500 电源开关；
  6. 按照 AVR Studio 中的工具菜单 ("Tools/Program AVR/ Connect...") 开始编程；

图 4-2: 高电压编程设置

表 4-1: 高电压编程短路片设置

STK500
VTARGET | 安装
AREF | 可任选
RESET | 安装
XTAL1 | 安装
OSCSEL | 安装, 引脚1和2
BSEL2 | 安装
PJUMP | 断开
STK504
XTAL 开关 | EXT 位置
PORTG | 短路引脚6和8

编程完成后，确保您已经断开 PROGCTRL与PORTD, PROGDATA与PORTB 之间的连线，还要取下 BSEL2 短路片。

JTAG 编程

您也可以使用 JTAGICE mkII 对 STK504 上的 AVR 进行编程。首先必须设置 AVR 的 OCD使能 熔丝位，您可以通过 在系统编程 或 H高电压编程 设置其有效。

JTAG 编程请按如下步骤进行：

  1. 关掉 STK500 电源开关；
  2. 取下 STK500 上的 RESET 短路片；
  3. 在 STK504 上的 PORTG 连接接口上的引脚 6 和 8 安装短路片；
  4. 连接 JTAGICE 探针到 STK504 的 JTAG 接口，如图 4-3 所示；
  5. 打开 STK500 和 JTAGICE 的电源开关；
  6. 按照 AVR Studio 中的工具菜单 ("Tools/Program AVR/ Connect...") 开始编程；

图 4-3: JTAG 编程


Clock Sources

STK504的时钟源

STK504 可以向 ZIF 插座中的AVR提供三种外部时钟源：板上自带的32kHz 晶振，板上插座中的高频率晶振和 STK500 提供的时钟源。

时钟开关

如图 5-1中显示的，时钟开关有三个可选位置：EXT，LF 和 HF。具体功能请看表 5-1。.

表 5-1：时钟开关位置

位置 | 功能
EXT | STK500上的时钟源(更多信息请看有关 STK500 的说明)
LF | 板上 32kHz 晶振
HF | STK504 上标有 HF 的插座上的晶振

图 5-1：时钟开关

EXT–使用STK500上的时钟源

如果您把开关拨到 EXT 位置，您将为 AVR 的 XTAL/TOSC 引脚提供外部时钟源(STK500上的时钟源) 。有关 STK500 上不同时钟的设置，请查阅 STK500 的帮助文件。

LF–低频32kHz晶振

STK504 有一个32kHz (32,768Hz) 的晶振，当开关拨到 LF位置时，这个晶振可以连接到 XTAL/TOSC 引脚。

HF–高频晶振

在STK504上有一个插座，您可以放置合适的晶振，这可以用来产生高频 (>8MHz) 。由于 STK500 上的时钟网络有较长的线和大电容，所以您必须把 HF 晶振放到 STK504 上，而不能放在 STK500 的插座中。

熔丝位设置

使用不同的时钟时，必须要正确设置 AVR 的熔丝位。请参考AVR 数据手册和 STK500 的编程部分来正确设置熔丝位。


Using the LCD

使用 LCD

STK504 开发板上自带了一个 LCD 显示器，AVR系列中 100-引脚 的 内建有LCD 驱动模块的芯片可以直接驱动该 LCD 显示器四个底板上的160个段。LCD的160个段如下所示：

图 6-1：LCD

连接板上的 LCD

为了使用板上的 LCD，您必须要用配套的44-线扁平电缆将 LCD PINS 接口和 AVR SEGMENT PINS 接口连接，如下图所示，这样就可以保证 LCD 能正常显示 了， LCD 段码的映射关系请看 附录 B。

图 6-2：LCD 电缆连接

连接其它显示器

如果您想在 STK504 上使用自己的 LCD ，您也可以把LCD连接到 AVR SEGMENT PINS 接口上，但要注意引脚 1 的位置，有关该接口的引脚接线说明请看 附录B 。


Debugging with JTAGICE mkII

使用 JTAGICE mkII 调试

ATMEL 公司生产的 JTAGICE mkII 能够对任何带有 JTAG 或 debugWire 调试接口的 AVR 器件进行调试。

连接 JTAGICE

图 7-1：连接 JTAGICE 到 STK504

连接 JTAGICE 和 AVR 器件的 JTAG 接口，如上图所示。

在调试前，您还必须把 STK500 上的 RESET 短路片取下。


Troubleshooting Guide

解决问题向导

这个部分描述了一些有共性的问题及其解决方法。

LCD 的问题

问题 | 原因 | 解决办法
LCD上无任何显示。 | LCD 没有连接到 AVR 器件上。 | 用扁平电缆将 AVR SEGMENT PINS 接口 和 LCD PINS接口连接起来，详见 使用LCD。
LCD上无任何显示。 | LCD 初始化错误。 | 检查您代码中的LCD驱动模块的初始化部分。 应用笔记 “AVR065 LCD driver for the STK502 LCD” 中说明了如何控制 LCD-显示。
LCD上无任何显示。 | 更新频率不正确。 | 检查初始化中的时钟预分频部分。 检查STK504 的时钟源选择是否正确。更多信息请看 STK504时钟源 。
LCD 的某些段码不能正常显示 | 某些用来驱动 LCD 的引脚又连接了其它的硬件。 | 检查 STK500 和 STK504 上连接到LCD 驱动的引脚是否连接了其它任何硬件。

编程问题

问题 | 原因 | 解决办法
ISP 编程不能正常工作。 | ISP 接线没有连接。 | 用一根6-芯电缆连接 STK500 上的 ISP6PIN 接口和STK504 上的 ISP 接口，详见 对AVR编程。
ISP 编程不能正常工作。 | STK504 上的 AVR 器件没连接复位信号。 | 在 PORTG 的引脚6和8安装短路片。
ISP 编程不能正常工作。 | AVR 工作时钟频率太低。 | 确保 STK500 上的时钟开关设置到正确位置，选择 AVR Studio 编程对话框中的 Board 页面,尝试减少时钟频率来降低 AVR 的运行速度。
高电压编程不能正常工作。 | 10-芯电缆没有正确连接。 | 更多信息请看 对AVR编程 章节中的设置部分。
高电压编程不能正常工作。 | STK500 上的 BSEL2, OSCSEL, RESET 和 VTARGET 短路片没有正确设置， PORTG上的引脚6和8没有用短路片连接。 | 更多信息请看 对AVR编程 章节中的设置部分。
高电压编程不能正常工作。 | STK504 上时钟开关没有正确设置。 | 把时钟开关设置到 EXT 位置，详见 对AVR编程

常见问题

问题 | 原因 | 解决办法
某些端口不工作。 | AVR 器件没有正确地按放在 ZIF 插座上。 | 确保芯片已经正确按放在插座上。弹性活栓放开后， 芯片应该恰好对应插座底部。
代码不能运行。 | AVR 器件没有连接到时钟源或者时钟源设置错误。 | 通过对时钟熔丝位的设置，为 STK500 和 STK504 选择合适的时钟源。检查STK500 上的OSCSEL 短路片和 STK504 上的时钟开关设置是否正确。如果您在使用插座中的晶振，检查它是否安装牢固。
AVR 器件不能运行在 x MHz, 但可以工作在低于x MHz的频率。 | 时钟频率超过 AVR 的时钟速度。（在一定的工作电压下）。 | 检查您是否按照说明正确运行 AVR 芯片，检查 AVR 的运行速度并参考数据手册得到正常工作频率和电压。
AVR 在 x MHz 时不工作，但可以工作在低于 x MHz的频率。 在STK500上有一个 x MHz 的晶振。 | 应该把晶振按装到 STK504 的插座中。 | 把晶振放到STK504 的插座中，把时钟开关设置到 HF 位置。


Port Connectors

附录 A — 端口连接接口

STK504开发板比 STK500多五个端口连接接口，分别是PORTE, PORTF, PORTG, PORTH 和 PORTJ。每个连接接口的输出引脚如下所述：

图 A-1：STK504 端口连接接口

Table A-2 ：STK504 端口连接器的引脚接线

 | PORTE |  |
PE0 | 1 | 2 | PE1
PE2 | 3 | 4 | PE3
PE4 | 5 | 6 | PE5
PE6 | 7 | 8 | PE7
GND | 9 | 10 | VTG

 | PORTF |  |
PF0 | 1 | 2 | PF1
PF2 | 3 | 4 | PF3
PF4 | 5 | 6 | PF5
PF6 | 7 | 8 | PF7
GND | 9 | 10 | VTG

 | PORTG |  |
PG0 | 1 | 2 | PG1
PG2 | 3 | 4 | PG3
PG4 | 5 | 6 | PG5
– | 7 | 8 | RST
GND | 9 | 10 | VTG
 | PORTH |  |
PH0 | 1 | 2 | PH1
PH2 | 3 | 4 | PH3
PH4 | 5 | 6 | PH5
PH6 | 7 | 8 | PH7
GND | 9 | 10 | VTG

 | PORTJ |  |
PJ0 | 1 | 2 | PJ1
PJ2 | 3 | 4 | PJ3
PJ4 | 5 | 6 | PJ5
PJ6 | 7 | 8 | –
GND | 9 | 10 | VTG


LCD Pinout and Segment Mapping

附录 B — LCD 的引脚接线和各部分映射关系

这个附录说明了 LCD 的输出引脚和 LCD 的各部分的映射关系。

表 B-1：AVR SEGMENT 引脚

段码 | 端口 | 连接引脚 |  | 端口 | 段码
COM0 | PA0 | 1 | 2 | PA1 | COM1
COM2 | PA2 | 3 | 4 | PA3 | COM3
SEG0 | PA4 | 5 | 6 | PA5 | SEG1
SEG2 | PA6 | 7 | 8 | PA7 | SEG3
SEG4 | PG2 | 9 | 10 | PC7 | SEG5
SEG7 | PC6 | 11 | 12 | PH3 | SEG7
SEG8 | PH2 | 13 | 14 | PH1 | SEG9
SEG10 | PH0 | 15 | 16 | PC5 | SEG11
SEG12 | PC4 | 17 | 18 | PC3 | SEG13
SEG14 | PC2 | 19 | 20 | PC1 | SEG15
SEG16 | PC0 | 21 | 22 | PG1 | SEG17
SEG18 | PG0 | 23 | 24 | PD7 | SEG19
SEG20 | PD6 | 25 | 26 | PD5 | SEG21
SEG22 | PD4 | 27 | 28 | PD3 | SEG23
SEG24 | PD2 | 29 | 30 | PD1 | SEG25
SEG26 | PD0 | 31 | 32 | PJ6 | SEG27
SEG28 | PJ5 | 33 | 34 | PJ4 | SEG29
SEG30 | PPJ3 | 35 | 36 | PJ2 | SEG31
SEG32 | PG4 | 37 | 38 | PG3 | SEG33
SEG34 | PJ1 | 39 | 40 | PJ0 | SEG35
SEG36 | PH7 | 41 | 42 | PH6 | SEG37
SEG38 | PH5 | 43 | 44 | PH4 | SEG39

表 B-2: LCD 引脚

LCD 引脚 | 连接引脚 |  | LCD 引脚
21 | 1 | 2 | 22
23 | 3 | 4 | 24
37 | 5 | 6 | 38
39 | 7 | 8 | 40
41 | 9 | 10 | 42
43 | 11 | 12 | 44
1 | 13 | 14 | 2
3 | 15 | 16 | 4
5 | 17 | 18 | 6
7 | 19 | 20 | 8
9 | 21 | 22 | 10
11 | 23 | 24 | 12
13 | 25 | 26 | 14
15 | 27 | 28 | 16
17 | 29 | 30 | 18
19 | 31 | 32 | 20
21 | 33 | 34 | 22
23 | 35 | 36 | 24
25 | 37 | 38 | 26
27 | 39 | 40 | 28
29 | 41 | 42 | 30
31 | 43 | 44 | 32

STK504 上的 LCD 显示模块是和 AVR 器件上的 LCD 数据寄存器相映射的，如下所示：

图 B-1: LCD 段码

表 B-3: LCD 段码映射关系：

命令行 | 数据位 |  |  |  |  |  |  |  | 寄存器
 | 7 | 6 | 5 | 4 | 3 | 2 | 1 | 0
COM3 | 9A | 9B | 10A | 10B | 11A | 11B | 12A | 12B | LCDDR19
COM3 | AVR | S7 | S8 | S9 | 7C | KEY | 7M | 7D | LCDDR18
COM3 | 6C | WRM | 6M | 6D | 5C | 8BC | 5M | 5D | LCDDR17
COM3 | 4C | 8G | 4M | 4D | 3C | IN | 3M | 3D | LCDDR16
COM3 | 2C | NB | 2M | 2D | 1C | BEL | 1M | 1D | LCDDR15
COM2 | 9F | 9G | 10F | 10G | 11F | 11G | 12F | 12G | LCDDR14
COM2 | SG2 | S5 | S6 | S10 | 7H | 7N | 7L | 7E | LCDDR13
COM2 | 6H | 6N | 6L | 6E | 5H | 5N | 5L | 5E | LCDDR12
COM2 | 4H | 4N | 4L | 4E | 3H | 3N | 3L | 3E | LCDDR11
COM2 | 2H | 2N | 2L | 2E | 1H | 1N | 1L | 1E | LCDDR10
COM1 | 9E | 9C | 10E | 10C | 11E | 11C | 12E | 12C | LCDDR9
COM1 | SG1 | S3 | S4 | S11 | 7B | 7K | 7J | 7G | LCDDR8
COM1 | 6B | 6K | 6J | 6G | 5B | 5K | 5J | 5G | LCDDR7
COM1 | 4B | 4K | 4J | 4G | 3B | 3K | 3J | 3G | LCDDR6
COM1 | 2B | 2K | 2J | 2G | 1B | 1K | 1J | 1G | LCDDR5
COM0 | 9D | OUT | 10D | P | 11D | COL | 12D | ICE | LCDDR4
COM0 | SG0 | S1 | S2 | S0 | SU | 7A | 7I | 7F | LCDDR3
COM0 | SA | 6A | 6I | 6F | FR | 5A | 5I | 5F | LCDDR2
COM0 | TH | 4A | 4I | 4F | WE | 3A | 3I | 3F | LCDDR1
COM0 | TU | 2A | 2I | 2F | MO | 1A | 1I | 1F | LCDDR0