Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:
AVR / datasheets / atmega_128.pdf
Скачиваний:
49
Добавлен:
20.03.2015
Размер:
3.56 Mб
Скачать

Serial Downloading

Table 127.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Parallel Programming Characteristics, VCC = 5 V ± 10% (Continued)

 

Symbol

 

Parameter

Min

Typ

Max

 

Units

 

 

 

 

 

 

 

 

tBVDV

 

BS1 Valid to DATA valid

0

 

250

 

ns

tOLDV

 

 

Low to DATA Valid

 

 

250

 

ns

 

OE

 

tOHDZ

 

 

High to DATA Tri-stated

 

 

250

 

ns

 

OE

 

Notes: 1. tWLRH is valid for the Write Flash, Write EEPROM, Write Fuse bits and Write Lock bits commands.

2.tWLRH_CE is valid for the Chip Erase command.

Both the Flash and EEPROM memory arrays can be programmed using the serial SPI bus while RESET is pulled to GND. The serial interface consists of pins SCK, MOSI (input) and MISO (output). After RESET is set low, the Programming Enable instruction needs to be executed first before program/erase operations can be executed. NOTE, in Table 128 on page 304, the pin mapping for SPI programming is listed. Not all parts use the SPI pins dedicated for the internal SPI interface. Note that throughout the description about Serial downloading, MOSI and MISO are used to describe the serial data in and serial data out respectively. For ATmega128 these pins are mapped to PDI and PDO.

SPI Serial Programming

Pin Mapping

Even though the SPI Programming interface re-uses the SPI I/O module, there is one important difference: The MOSI/MISO pins that are mapped to PB2 and PB3 in the SPI I/O module are not used in the Programming interface. Instead, PE0 and PE1 are used for data in SPI Programming mode as shown in Table 128.

Table 128. Pin Mapping SPI Serial Programming

Symbol

Pins

I/O

Description

 

 

 

 

MOSI (PDI)

PE0

I

Serial data in

 

 

 

 

MISO (PDO)

PE1

O

Serial data out

 

 

 

 

SCK

PB1

I

Serial clock

 

 

 

 

304 ATmega128

2467K–AVR–04/04

SPI Serial Programming

Algorithm

2467K–AVR–04/04

ATmega128

Figure 144. SPI Serial Programming and Verify(1)

+2.7 - 5.5V

VCC

+2.7 - 5.5V(2)

PDI PE0

AVCC

PDO PE1

SCK PB1

XTAL1

RESET

GND

Notes: 1. If the device is clocked by the Internal Oscillator, it is no need to connect a clock source to the XTAL1 pin.

2. VCC - 0.3V < AVCC < VCC + 0.3V, however, AVCC should always be within 2.7 - 5.5V.

When programming the EEPROM, an auto-erase cycle is built into the self-timed programming operation (in the serial mode ONLY) and there is no need to first execute the Chip Erase instruction. The Chip Erase operation turns the content of every memory location in both the Program and EEPROM arrays into $FF.

Depending on CKSEL Fuses, a valid clock must be present. The minimum low and high periods for the serial clock (SCK) input are defined as follows:

Low:> 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck ≥ 12 MHz High:> 2 CPU clock cycles for fck < 12 MHz, 3 CPU clock cycles for fck ≥ 12 MHz

When writing serial data to the ATmega128, data is clocked on the rising edge of SCK.

When reading data from the ATmega128, data is clocked on the falling edge of SCK. See Figure 145 for timing details.

To program and verify the ATmega128 in the SPI Serial Programming mode, the following sequence is recommended (See four byte instruction formats in Table 145):

1.Power-up sequence:

Apply power between VCC and GND while RESET and SCK are set to “0”. In some systems, the programmer can not guarantee that SCK is held low during power-up. In this case, RESET must be given a positive pulse of at least two CPU clock cycles duration after SCK has been set to “0”.

As an alternative to using the RESET signal, PEN can be held low during Poweron Reset while SCK is set to “0”. In this case, only the PEN value at Power-on Reset is important. If the programmer cannot guarantee that SCK is held low during power-up, the PEN method cannot be used. The device must be powered down in order to commence normal operation when using this method.

2.Wait for at least 20 ms and enable SPI Serial Programming by sending the Programming Enable serial instruction to pin MOSI.

305

3. The SPI Serial Programming instructions will not work if the communication is out of synchronization. When in sync. the second byte ($53), will echo back when issuing the third byte of the Programming Enable instruction. Whether the echo is correct or not, all FOUR bytes of the instruction must be transmitted. If the $53 did not echo back, give RESET a positive pulse and issue a new Programming Enable command.

4. The Flash is programmed one page at a time. The page size is found in Table 125 on page 294. The memory page is loaded one byte at a time by supplying the 7 LSB of the address and data together with the Load Program Memory Page instruction. To ensure correct loading of the page, the data low byte must be loaded before data high byte is applied for given address. The Program Memory Page is stored by loading the Write Program Memory Page instruction with the 9 MSB of the address. If polling is not used, the user must wait at least tWD_FLASH before issuing the next page. (See Table 129).

Note: If other commands than polling (read) are applied before any write operation (Flash, EEPROM, Lock bits, Fuses) is completed, may result in incorrect programming.

5. The EEPROM array is programmed one byte at a time by supplying the address and data together with the appropriate Write instruction. An EEPROM memory location is first automatically erased before new data is written. If polling is not

used, the user must wait at least tWD_EEPROM before issuing the next byte. (See Table 129). In a chip erased device, no $FFs in the data file(s) need to be

programmed.

6. Any memory location can be verified by using the Read instruction which returns the content at the selected address at serial output MISO.

 

7. At the end of the programming session, RESET can be set high to commence

 

normal operation.

 

8. Power-off sequence (if needed):

 

Set

RESET

to “1”.

 

Turn VCC power off.

Data Polling Flash

When a page is being programmed into the Flash, reading an address location within

 

the page being programmed will give the value $FF. At the time the device is ready for a

 

new page, the programmed value will read correctly. This is used to determine when the

 

next page can be written. Note that the entire page is written simultaneously and any

 

address within the page can be used for polling. Data polling of the Flash will not work

 

for the value $FF, so when programming this value, the user will have to wait for at least

 

tWD_FLASH before programming the next page. As a chip-erased device contains $FF in

 

all locations, programming of addresses that are meant to contain $FF, can be skipped.

 

See Table 129 for tWD_FLASH value

Data Polling EEPROM

When a new byte has been written and is being programmed into EEPROM, reading the

 

address location being programmed will give the value $FF. At the time the device is

 

ready for a new byte, the programmed value will read correctly. This is used to deter-

 

mine when the next byte can be written. This will not work for the value $FF, but the user

 

should have the following in mind: As a chip-erased device contains $FF in all locations,

 

programming of addresses that are meant to contain $FF, can be skipped. This does

 

not apply if the EEPROM is re-programmed without chip-erasing the device. In this

 

case, data polling cannot be used for the value $FF, and the user will have to wait at

 

least tWD_EEPROM before programming the next byte. See Table 129 for tWD_EEPROM

 

value.

306 ATmega128

2467K–AVR–04/04

ATmega128

Table 129. Minimum Wait Delay before Writing the Next Flash or EEPROM Location

Symbol

Minimum Wait Delay

 

 

tWD_FLASH

4.5 ms

tWD_EEPROM

9.0 ms

tWD_ERASE

9.0 ms

Figure 145. .SPI Serial Programming Waveforms

SERIAL DATA INPUT

MSB

LSB

(MOSI)

 

 

SERIAL DATA OUTPUT

MSB

LSB

(MISO)

 

 

SERIAL CLOCK INPUT

 

 

(SCK)

 

 

SAMPLE

 

 

307

2467K–AVR–04/04

Table 130. SPI Serial Programming Instruction Set

 

 

Instruction Format

 

 

 

 

 

 

 

 

 

 

Instruction

Byte 1

Byte 2

Byte 3

Byte4

Operation

 

 

 

 

 

 

 

 

Programming Enable

1010 1100

0101 0011

xxxx xxxx

xxxx xxxx

Enable SPI Serial Programming after

 

 

RESET

 

 

 

 

 

goes low.

 

 

 

 

 

 

Chip Erase

1010 1100

100x xxxx

xxxx xxxx

xxxx xxxx

Chip Erase EEPROM and Flash.

 

 

 

 

 

 

Read Program

0010 H000

aaaa aaaa

bbbb bbbb

oooo oooo

Read H (high or low) data o from Program

Memory

 

 

 

 

memory at word address a:b.

 

 

 

 

 

 

Load Program

0100 H000

xxxx xxxx

xbbb bbbb

iiii iiii

Write H (high or low) data i to Program

Memory Page

 

 

 

 

Memory page at word address b. Data low

 

 

 

 

 

byte must be loaded before data high byte is

 

 

 

 

 

applied within the same address.

 

 

 

 

 

 

 

 

Write Program

0100 1100

aaaa aaaa

bxxx xxxx

xxxx xxxx

 

 

 

Memory Page

 

 

 

 

Write Program Memory Page at address a:b.

 

 

 

 

 

 

Read EEPROM

1010 0000

xxxx aaaa

bbbb bbbb

oooo oooo

Read data o from EEPROM memory at

Memory

 

 

 

 

address a:b.

 

 

 

 

 

 

Write EEPROM

1100 0000

xxxx aaaa

bbbb bbbb

iiii iiii

Write data i to EEPROM memory at address

Memory

 

 

 

 

a:b.

 

 

 

 

 

 

Read Lock bits

0101 1000

0000 0000

xxxx xxxx

xxoo oooo

Read Lock bits. “0” = programmed, “1” =

 

 

 

 

 

unprogrammed. See Table 116 on page

 

 

 

 

 

289 for details.

 

 

 

 

 

 

Write Lock bits

1010 1100

111x xxxx

xxxx xxxx

11ii iiii

Write Lock bits. Set bits = “0” to program Lock

 

 

 

 

 

bits. See Table 116 on page 289 for details.

 

 

 

 

 

 

Read Signature Byte

0011 0000

xxxx xxxx

xxxx xxbb

oooo oooo

Read Signature Byte o at address b.

 

 

 

 

 

 

Write Fuse bits

1010 1100

1010 0000

xxxx xxxx

iiii iiii

Set bits = “0” to program, “1” to unprogram.

 

 

 

 

 

See Table 120 on page 291 for details.

 

 

 

 

 

 

Write Fuse High Bits

1010 1100

1010 1000

xxxx xxxx

iiii iiii

Set bits = “0” to program, “1” to unprogram.

 

 

 

 

 

See Table 119 on page 291 for details.

 

 

 

 

 

 

Write Extended Fuse

1010 1100

1010 0100

xxxx xxxx

xxxx xxii

Set bits = “0” to program, “1” to unprogram.

bits

 

 

 

 

See Table 120 on page 291 for details.

 

 

 

 

 

 

Read Fuse bits

0101 0000

0000 0000

xxxx xxxx

oooo oooo

Read Fuse bits. “0” = programmed, “1” =

 

 

 

 

 

unprogrammed. See Table 120 on page

 

 

 

 

 

291 for details.

 

 

 

 

 

 

Read Extendend

0101 0000

0000 1000

xxxx xxxx

oooo oooo

Read Extended Fuse bits. “0” = pro-grammed,

Fuse bits

 

 

 

 

“1” = unprogrammed. See Table 120 on

 

 

 

 

 

page 291 for details.

 

 

 

 

 

 

Read Fuse High Bits

0101 1000

0000 1000

xxxx xxxx

oooo oooo

Read Fuse high bits. “0” = pro-grammed, “1” =

 

 

 

 

 

unprogrammed. See Table 119 on page

 

 

 

 

 

291 for details.

 

 

 

 

 

 

Read Calibration Byte

0011 1000

xxxx xxxx

0000 00bb

oooo oooo

Read Calibration Byte o at address b.

 

 

 

 

 

 

 

 

Note: a = address high bits b = address low bits

H = 0 - Low byte, 1 - High Byte o = data out

i = data in

x = don’t care

308 ATmega128

2467K–AVR–04/04

 

 

 

ATmega128

 

 

 

 

SPI Serial Programming

 

 

For characteristics of the SPI module, see “SPI Timing Characteristics” on page 326.

 

 

Characteristics

 

 

 

Programming Via the

Programming through the JTAG interface requires control of the four JTAG specific

 

JTAG Interface

pins: TCK, TMS, TDI, and TDO. Control of the Reset and clock pins is not required.

 

 

To be able to use the JTAG interface, the JTAGEN fuse must be programmed. The

 

 

device is default shipped with the Fuse programmed. In addition, the JTD bit in

 

 

MCUCSR must be cleared. Alternatively, if the JTD bit is set, the external reset can be

 

 

forced low. Then, the JTD bit will be cleared after two chip clocks, and the JTAG pins

 

 

are available for programming. This provides a means of using the JTAG pins as normal

 

 

port pins in running mode while still allowing In-System Programming via the JTAG

 

 

interface. Note that this technique can not be used when using the JTAG pins for

 

 

Boundary-scan or On-chip Debug. In these cases the JTAG pins must be dedicated for

 

 

this purpose.

 

 

As a definition in this data sheet, the LSB is shifted in and out first of all Shift Registers.

 

Programming Specific JTAG

The instruction register is 4-bit wide, supporting up to 16 instructions. The JTAG instruc-

 

Instructions

tions useful for Programming are listed below.

 

 

The OPCODE for each instruction is shown behind the instruction name in hex format.

 

 

The text describes which data register is selected as path between TDI and TDO for

 

 

each instruction.

 

 

The Run-Test/Idle state of the TAP controller is used to generate internal clocks. It can

 

 

also be used as an idle state between JTAG sequences. The state machine sequence

 

 

for changing the instruction word is shown in Figure 146.

309

2467K–AVR–04/04

Соседние файлы в папке datasheets