ATMEL AT89S4D12-12RI

AT89S4D12
Features
• Compatible with MCS-51™ Products
• 128K Bytes of In-System Reprogrammable Flash data memory and 4K Bytes of
•
•
•
•
•
•
•
•
•
Downloadable Flash Program Memory
– Endurance: 1,000 Write/Erase Cycles per Sector
– Data Retention: 10 Years
Sector Programming: 128 Bytes/Sector
Single 3.3V ± 10% Supply
On-Chip 12 MHz oscillator
Two-Level Program Memory Lock
256-Bytes Internal RAM
5 Programmable I/O Lines
Serial Peripheral Interface (SPI) Channel
Serial Program Downloading
Dual Data Pointer Registers
Description
The AT89S4D12 is a low-voltage, highly integrated CMOS 8-bit microcomputer with
4K bytes of downloadable Flash program memory and 128K bytes of in-system reprogrammable Flash data memory. The device is manufactured using Atmel’s high density Flash memory technology and is compatible with the industry-standard MCS-51™
instruction set.
The 128K bytes of on-chip Flash data memory are accessed as two 64K byte blocks.
Bit 0 at SFR location 96H is used to select the active block. The MOVX instruction is
used to read and write the data memory. Both the program and data memory arrays
can be programmed by an external programmer.
The downloadable Flash can be changed one page (128 bytes) at a time and is
accessible through the SPI serial peripheral interface port. Holding RESET active
forces the SPI bus into a slave input mode and allows the program memory to be written-from or read-to unless Lock Bit 2 has been activated.
The functional operations of the 128K bytes Flash data memory are equivalent to
those on the AT29LV010A 1M Bit Flash memory device.
8-Bit
Microcontroller
with
132K Bytes
Flash Data
Memory
AT89S4D12
Pin Configurations
VCC
P1.2/DTR
P1.3/SCK
P1.4/DSR
NC
NC
NC
NC
NC
NC
NC
NC
NC
NC
P1.0/SDO
TEST2
NC
NC
NC
NC
NC
NC
NC
4
3
2
1
32
31
30
28
27
26
25
24
23
22
21
20
19
18
17
16
15
5
6
7
8
9
10
11
12
13
29
28
27
26
25
24
23
22
21
14
15
16
17
18
19
20
1
2
3
4
5
6
7
8
9
10
11
12
13
14
NC
NC
NC
NC
NC
NC
NC
GND
TEST1
RESET
SDI/P1.1
SDO/P1.0
TEST2
NC
NC
NC
NC
NC
NC
NC
NC
PLCC Top View
P1.1/SDI
RESET
TEST1
GND
VCC
P1.2/DTR
P1.3/SCK
SOIC Top View
P1.4/DSR
NC
NC
NC
NC
NC
NC
NC
NC
0921A-A–12/97
4-281
Block Diagram
VCC
GND
RAM ADDR.
REGISTER
128K
Flash
B
REGISTER
4K
FLASH
RAM
PROGRAM
ADDRESS
REGISTER
STACK
POINTER
ACC
BUFFER
TMP2
TMP1
PC
INCREMENTER
ALU
PROGRAM
COUNTER
PSW
TIMING
AND
CONTROL
INSTRUCTION
REGISTER
DPTR
RST
PORT 1
LATCH
12MHz
OSC
SPI
PORT
PORT 1 DRIVERS
P1.0 - P1.4
4-282
AT89S4D12
PROGRAM
LOGIC
AT89S4D12
Pin Description
Special Function Registers
VCC
Supply voltage.
A map of the on-chip memory area called the Special Function Register (SFR) space is shown in Table 1.
Note that not all of the addresses are occupied, and unoccupied addresses may not be implemented on the chip.
Read accesses to these addresses will in general return
random data, and write accesses will have an indeterminate effect.
User software should not write 1s to these unlisted locations, since they may be used in future products to invoke
new features. In that case, the reset or inactive values of
the new bits will always be 0.
Memory Control Register The MCON register contains
the RDY/BSY flag and the most significant Flash address
bit A16, for the 128K bytes of on-chip Flash data memory.
SPI Registers Control and status bits for the Serial Peripheral Interface are contained in registers SPCR (shown in
Table 3) and SPSR (shown in Table 4). The SPI data bits
are contained in the SPDR register. Writing the SPI data
register during serial data transfer sets the Write Collision
bit, WCOL, in the SPSR register. The SPDR is double buffered for writing and the values in SPDR are not changed by
Reset.
Dual Data Pointer Registers To facilitate data transfer,
two banks of 16-bit Data Pointer Registers are provided:
DP0 at SFR address locations 82H - 83H and DP1 at 84H 85H. Bit DPS = 0 in SFR MCON selects DP0 and DPS = 1
selects DP1. The user should always initialize the DPS bit
to the appropriate value before accessing the respective
Data Pointer register.
GND
Ground.
Port 1
Port 1 is a 5-bit bidirectional I/O port with internal pullups.
The Port 1 output buffers can sink/source four TTL inputs.
When 1s are written to Port 1 pins, they are pulled high by
the internal pullups and can be used as inputs. As inputs,
Port 1 pins that are externally being pulled low will source
current (IIL) because of the internal pullups.
In addition, P1.0, P1.1, and P1.3 can be configured as the
SPI data output, data input and shift clock input pins, as
shown in the following table.
Port Pin
P1.0
P1.1
P1.3
Alternate Functions
SDO (data output pin for SPI channel)
SDI (data input pin for SPI channel)
SCK (clock input pin for SPI channel)
RST
Reset input. A high on this pin for two machine cycles while
the oscillator is running resets the device.
TEST1
TEST1 is set to VCC during downloading of the Flash program or data memory. This pin can be left unconnected or
tied to ground during normal operation.
TEST2
Test input. This pin has no user available function and can
be left unconnected or tied to ground.
4-283
Table 1. AT89S4D12 SFR Map and Reset Values
0F8H
0F0H
0FFH
B
00000000
0F7H
0E8H
0E0H
0EFH
ACC
00000000
0E7H
0D8H
0D0H
0DFH
PSW
00000000
SPCR
000X01XX
0D7H
0C8H
0CFH
0C0H
0C7H
0B8H
0BFH
0B0H
0B7H
SPSR
00000000
0A8H
0AFH
0A0H
0A7H
98H
90H
9FH
P1
XXX11111
MCON
XXXXX010
97H
88H
80H
4-284
8FH
DP0L
00000000
AT89S4D12
DP0H
00000000
DP1L
00000000
DP1H
0000000
SPDR
XXXXXXXX
PCON
0XXX0000
87H
AT89S4D12
Table 2. MCON—Memory Control Register
MCON Address = 96H
Bit
Reset Value = XXXX X010B
-
-
-
-
-
DPS
RDY/BSY
A16
7
6
5
4
3
2
1
0
Symbol
Function
DPS
Data Pointer Register Select. DPS = 0 selects the first bank of Data Pointer Register,
DP0, and DPS = 1 selects the second bank, DP1.
RDY/BSY
DataFlash Ready/Busy Flag. This bit serves as the RDY/BSY flag in a Read-Only mode
during DataFlash write. RDY/BSY = 1 means that the DataFlash is ready to be
programmed. While programming operations are being executed, the RDY/BSY bit
equals `0' and is automatically reset to `1' when programming is completed.
A16
Memory Block Select. A16 = 0 selects the lower 64K bytes DataFlash memory block.
A16 = 1 selects the upper 64K bytes DataFlash block.
Table 3. SPCR—SPI Control Register
SPCR Address = D5H
Bit
Reset Value = 000X 01XXB
SPIE
SPE
DORD
-
CPOL
CPHA
SPR1
SPR0
7
6
5
4
3
2
1
0
Symbol
Function
SPIE
SPI Interrupt Enable. This bit, enables SPI interrupts: SPIE = 1 enable SPI interrupts. SPIE = 0 disables
SPI interrupts.
SPE
SPI Enable. SPI = 1 enables the SPI channel and connects SDO, SDI and SCK to pins P1.0, P1.1, and
P1.3. SPI = 0 disables the SPI channel.
DORD
Data Order. DORD = 1 selects LSB first data transmission. DORD = 0 selects MSB first data
transmission.
CPOL
Clock Polarity. When CPOL = 1, SCK is high when idle. When CPOL = 0, SCK of the master device is
low when not transmitting. Please refer to figure on SPI Clock Phase and Polarity Control.
CPHA
Clock Phase. The CPHA bit together with the CPOL bit controls the clock and data relationship between
master and slave. Please refer to figure on SPI Clock Phase and Polarity Control.
SPR0
SPR1
SPI Clock Rate Select. These two bits control the SCK rate of the device configured as master. SPR1
and SPR0 have no effect on the slave. The relationship between SCK and the oscillator frequency,
FOSC., is as follows:
SPR1
0
0
1
1
SPR0
0
1
0
1
SCK = FOSC. divided by
4
16
64
128
4-285
Table 4. SPSR—SPI Status Register
SPCR Address = AAH
Bit
Reset Value = 000X 0000B
SPIF
WCOL
—
—
—
—
—
—
7
6
5
4
3
2
1
0
Symbol
Function
SPIF
SPI Interrupt Flag. When a serial transfer is complete, the SPIF bit is set and an
interrupt is generated if SPIE = 1. The SPIF bit is cleared by reading the SPI status
register with SPIF and WCOL bits set, and then accessing the SPI data register.
Write Collision Flag. The WCOL bit is set if the SPI data register is written during a data
transfer. During data transfer, the result of reading the SPDR register may be incorrect,
and writing to it has no effect. The WCOL bit (and the SPIF bit) are cleared by reading
the SPI status register with SPIF and WCOL set, and then accessing the SPI data
register.
WCOL
Table 5. SPDR—SPI Data Register
SPDR Address = 86H
Bit
Reset Value = unchanged
SPD7
SPD6
SPD5
SPD4
SPD3
SPD2
SPD1
SPD0
7
6
5
4
3
2
1
0
Data Memory—Flash and RAM
The AT89S4D12 implements 128K bytes of on-chip Flash
for data storage and 256 bytes of RAM. The upper 128
bytes of RAM occupy a parallel space to the Special Function Registers. That means the upper 128 bytes have the
same addresses as the SFR space but are physically separate from SFR space.
When an instruction accesses an internal location above
address 7FH, the address mode used in the instruction
specifies whether the CPU accesses the upper 128-bytes
of RAM or the SFR space. Instructions that use direct
addressing access SFR space.
For example, the following direct addressing instruction
accesses the SFR at location 086H (which is SPDR).
MOV 086H, #data
Instructions that use indirect addressing access the upper
128 bytes of RAM. For example, the following indirect
addressing instruction, where R0 contains 086H, accesses
the data byte at address 086H, rather than SPDR (whose
address is 086H).
MOV @R0, #data
Note that stack operations are examples of indirect
addressing, so the upper 128 bytes of data RAM are available as stack space.
4-286
AT89S4D12
The MOVX instructions are used to access the Flash data
memory.
Flash write cycles are self-timed and typically take 5 ms per
128-byte page. The progress of Flash write can be monitored by reading the RDY/BSY bit (read-only) in SFR
MCON. RDY/BSY = 0 means programming is still in
progress and RDY/BSY = 1 means Flash write cycle is
completed and another write cycle can be initiated.
AT89S4D12
Serial Peripheral Interface
The interconnection between master and slave CPU with
SPI is shown in the following figure. The SCK pin is the
clock input. Writing to the SPI data register of the master
CPU starts the SPI clock generator, and the data written
shifts out of the MOSI pin and into the SDI pin of the slave
CPU. After shifting one byte, the SPI clock generator stops,
setting the end of transmission flag (SPIF). If the SPI interrupt enable bit (SPIE) is set, an interrupt is requested.
There are four combinations of SCK phase and polarity
with respect to serial data, which are determined by control
bits CPHA and CPOL. The SPI data transfer formats are
shown in Figure 3 and Figure 4.
The serial peripheral interface (SPI) allows high-speed synchronous data transfer between the AT89S4D12 and an
SPI master. The AT89S4D12 SPI features include the following:
• Full-Duplex, 3-Wire Synchronous Data Transfer
• 2 MHz Bit Frequency (max.)
• LSB First or MSB First Data Transfer
• Four Programmable Bit Rates
• End of Transmission Interrupt Flag
• Write Collision Flag Protection
Figure 1. SPI Block Diagram
SDO
P1.0
PIN CONTROL LOGIC
OSCILLATOR
LSB
MSB
8/16-BIT SHIFT REGISTER
READ DATA BUFFER
DIVIDER
÷4÷16÷64÷128
CLOCK
SPI CLOCK (MASTER)
CLOCK
LOGIC
DORD
SPE
SPI STATUS REGISTER
SPR0
SPR1
CPHA
CPOL
SPE
DORD
8
SPIE
SPE
WCOL
SPI CONTROL
SPIF
SCK
P1.3
SPR0
SPR1
SELECT
SDI
P1.1
SPI CONTROL REGISTER
8
8
SPI INTERRUPT INTERNAL
REQUEST
DATA BUS
4-287
Figure 2. SPI Master - Slave Interconnection
MSB
MASTER
LSB
MISO SDO
8-BIT SHIFT REGISTER
SCK
SS
VCC
Figure 3. SPI Transfer Format with CPHA = 0
* Not defined but normally MSB of character just received.
Figure 4. SPI Transfer Format with CPHA = 1
* Not defined but normally LSB of previously transmitted character.
4-288
AT89S4D12
SLAVE
LSB
8-BIT SHIFT REGISTER
MOSI SDI
SPI
CLOCK GENERATOR
MSB
SCK
AT89S4D12
Oscillator Characteristics
Program Memory Lock Bits
An on-chip oscillator is provided with a minimum frequency
of 12 MHz and maximum frequency of 15 MHz over the
recommended operating conditions.
Each CPU instruction cycle takes 12 oscillator cycles.
The AT89S4D12 has two lock bits that can be left unprogrammed (U) or can be programmed (P) to obtain the additional features listed in the following table. The self-timed
lock bit programming operation typically takes 40 ms.
Once programmed, the lock bits can only be unprogrammed with the Chip Erase operation.
Lock Bit Protection Modes(1)(2)
Program Lock Bits
LB1
LB2
1
U
U
No internal memory lock feature.
2
P
U
Programming of the Flash memory is disabled.
3
P
P
Same as mode 2, but verify is also disabled.
Notes:
Protection Type
1. U = Unprogrammed
2. P = Programmed
Flash Programming Specification
Both the 128K bytes Data and 4K bytes Code flash memory arrays can be programmed using the serial SPI bus
while the RESET and TEST1 pins are pulled to VCC = 3.3V
(±10%). Both memory arrays are organized in 128-byte
sectors for programming and are written sector-by-sector,
similar to the Atmel AT29LV010A.
The serial interface consists of pins SCK (serial shift clock),
SDI (serial input) and SDO (serial output). After RESET
and TEST1 are set high, the Programming Enable instruction needs to be executed once before programming operations can occur. During device programming, pin TEST2
should be connected to Ground.
An auto-erase cycle is built into the self-timed Page Write
operation and there is no need to first execute the Chip
Erase instruction. The Chip Erase operation is self-timed
and typically takes 5 ms. Chip Erase turns the content of
every flash memory location in both the Code and Data
arrays into FFH.
The Code and Data memory arrays have separate address
spaces: 0000H to 0FFFH for Code memory and 00000H to
2FFFFH for Data memory.
The maximum serial clock (SCK) frequency used during
flash programming should be less than 500 KHz. The High
time of SCK should be 1.5 µs minimum and Low time
should be 0.5 µs minimum.
DATA Polling
The AT89S4D12 features DATA Polling to indicate the end
of a page write cycle. During a write cycle, an attempted
serial read of the last byte written will result in the complement of the written datum at bit D7. Once the write cycle
has been completed, true data are valid on all output data
bits, and the next write cycle may begin. DATA Polling may
begin any time after a write instruction has been executed.
Toggle Bit
The Toggle Bit provides another method to detect completion of a programming cycle. During a page write or chip
erase operation, successive attempts to read data from the
memory will result in output bit D6 toggling between ‘1’ and
‘0’. Once the program cycle has completed, output data bit
D6 will stop toggling and valid data will be presented.
Examining the toggle bit may begin any time during a program cycle.
Ready/Busy
A third method to monitor the progress of programming is
provided by the RDY/BSY output signal. Pin P1.4/DSR is
pulled Low during programming to indicate BUSY and is
pulled High again when programming is done to indicate
READY.
Page Write
The Code and Data memory arrays are programmed on a
sector basis. If a byte of data is to be changed, data for the
entire 128-byte sector must be serially loaded into the
device using the appropriate serial interface instruction.
The data in any byte that is not loaded during the programming of its sector will be indeterminate. The AT89S4D12
automatically does a sector erase to turn the whole sector
into FFH prior to loading the data into the sector. An erase
command is not required. The self-timed Page Write cycle
typically takes 5 ms (tWC).
(continued)
4-289
Once the bytes of a sector are loaded into the device, they
are simultaneously programmed during the self-timed programming cycle (tWC). After the first data byte has been
loaded into the device, successive bytes need to be
entered within 300-µs time intervals. If a Page Write
instruction is not detected in 300-µs after the last write
instruction, the load period will end and the internal programming cycle will start.
Address bits A7 - A11 and A7 - A16 specify the sector
address of the Code and Data memory arrays, respectively. The valid sector address must be entered during
each write instruction. Address bits A0 - A6 specify the byte
address within the sector. The bytes may be loaded in any
order, sequential loading is not required. Once a programming operation has been initiated, and for a duration of typically 5 ms, a read operation will effectively be a polling
operation.
Program Verify
If lock bits LB1 and LB2 have not been programmed, the
programmed Code and Data byte can be read back via
serial output pin SDO. The state of the lock bits can only be
verified indirectly by observing that the lock bit features are
enabled.
Serial Programming Instruction Set
Format
Instruction
Byte 1
Byte 2
Byte 3
Byte 4
Operation
11111111
11111111
Enable Serial
Programming
after RST goes high.
Chip Erase
10101100
10000000
xxxxxxxx
xxxxxxxx
Chip erase both 128K &
4K
memory arrays.
Read Code
Memory
0010000x
xxxx
DDDDDDDD
Read data at pin SDO for
Code memory at
address
A11:A0.
Page Write Code
Memory
0100000x
xxxx
DDDDDDDD
Write data at pin SDI for
Code
memory at address
A11:A0.
Read Data
Memory
1010000
DDDDDDDD
Read data at pin SDO for
Data memory at address
A16:A0.
DDDDDDDD
Write data at pin SDI for
Data
memory at address
A16:A0.
xxxxxxxx
Set LB1, LB2 = ‘0’ to
program
lock bits.
DDDDDDDD
Read device I.D. at
address
A6:A0.
111000
Read Signature
0011000x
xxxxxxxx
Notes:
LB2
LB1
1. A16:A0 = Memory byte address
2. ‘DDDDDDDD’ = Data input at pin SDI or data output
at pin SDO.
3. ‘x’ = Don’t care.
4-290
AT89S4D12
A7
A6
A5
A4
A3
A2
A1
A0
A7
A6
A5
A4
A3
A2
A1
A0
xxxxxxxx
x
A6
A5
A4
A3
A2
A1
A0
10101100
A7
A6
A5
A4
A3
A2
A1
A0
A11
A10
A9
A8
A15
A14
A13
A12
A11
A10
A9
A8
Program Lock Bits
A15
A14
A13
A12
A11
A10
A9
A8
1100000
A16
Page Write Data
Memory
A7
A6
A5
A4
A3
A2
A1
A0
01010011
A11
A10
A9
A8
10101100
A16
Programming
Enable
AT89S4D12
Flash Memory Serial Programming Circuit
3.3V
INSTRUCTION
INPUT
SDI/P1.1
DATA OUTPUT
SDO/P1.0
CLOCK IN
SCK/P1.3
RDY/BUSY
DSR/P1.4
VCC
RESET
TEST1
TEST2
GND
Reading the Signature Bytes
The signature bytes are read by executing the Read Signature command at locations 30H and 31H. The values
returned are as follows:
(30H) = 1EH indicates manufactured by Atmel
(31H) = 84H indicates AT89S4D12
Serial Downloading Waveforms
SERIAL CLOCK INPUT
SCK/P1.3
7
SERIAL DATA INPUT
SDI/P1.1
MSB
LSB
SERIAL DATA OUTPUT
SDO/P1.0
MSB
LSB
6
5
4
3
2
1
0
1ST INSTRUCTION
2ND INSTRUCTION
BYTE 1 BYTE 2 BYTE 3 BYTE 4
BYTE 1 BYTE 2 BYTE 3 BYTE 4
tBLC = 300 µS MAX.
4-291
Absolute Maximum Ratings*
Operating Temperature .................................. -55°C to +125°C
*NOTICE:
Storage Temperature ..................................... -65°C to +150°C
Voltage on Any Pin
with Respect to Ground .....................................-1.0V to +7.0V
Maximum Operating Voltage............................................. 6.0V
Stresses beyond those listed under “Absolute
Maximum Ratings” may cause permanent damage to the device. This is a stress rating only and
functional operation of the device at these or any
other conditions beyond those indicated in the
operational sections of this specification is not
implied. Exposure to absolute maximum rating
conditions for extended periods may affect device
reliability.
DC Output Current...................................................... 15.0 mA
DC Characteristics
The values shown in this table are valid for TA = -40°C to 85°C and VCC = 3.0V to 3.6V, unless otherwise noted.
Symbol
Parameter
VIL
Input Low Voltage
VIH
Input High Voltage
(Except RST)
VIH1
Input High Voltage
(RST)
VOL
VOH
IIL
Output Low
Condition
Voltage(1)
Output High Voltage
Logical 0 Input Current
Min
Max
Units
-0.5
0.2 VCC - 0.1
V
0.2 VCC + 0.9
VCC + 0.5
V
0.7 VCC
VCC + 0.5
V
0.5
V
IOL = 1.6 mA
IOH = -60 µA
2.4
V
IOH = -25 µA
0.75 VCC
V
IOH = -10 µA
0.9 VCC
V
VIN = 0.45V
-50
µA
VIN = 2V
-650
µA
300
KΩ
ITL
Logical 1 to 0 Transition Current
RRST
Reset Pulldown Resistor
CIO
Pin Capacitance
Test Freq. = 1 MHz, TA = 25°C
10
pF
ICC
Power Supply Current
Active Mode
20
mA
Notes:
50
1. Under steady state (non-transient) conditions, IOL must be externally limited as follows:
Maximum IOL per port pin: 10 mA
Maximum IOL per 5 bit port: 15 mA
If IOL exceeds the test condition, VOL may exceeed the related specification. Pins are not guaranteed to sink current greater
than the listed test conditions.
2. Minimum VCC for Power Down is 2V.
4-292
AT89S4D12
AT89S4D12
Ordering Information
Speed
(MHz)
Power
Supply
12
3.3V ± 10%
Ordering Code
Package
Operation Range
AT89S4D12-12JC
AT89S4D12-12RC
32J
28R
Commercial
(0°C to 70°C)
AT89S4D12-12JI
AT89S4D12-12RI
32J
28R
Industrial
(-40°C to 85°C)
Package Type
32J
32-Lead, Plastic J-Leaded Chip Carrier (PLCC)
28R
28-Lead, Plastic Gull Wing Small Outline (SOIC)
4-293